Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1081419
  • 博文数量: 282
  • 博客积分: 10865
  • 博客等级: 上将
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-12 12:35
文章存档

2017年(1)

2016年(3)

2015年(10)

2014年(12)

2013年(5)

2012年(10)

2011年(29)

2010年(3)

2008年(13)

2007年(92)

2006年(104)

我的朋友

分类: 其他平台

2015-02-17 14:01:35

在实际的J2EE应用部署时也许会碰到穿越防火墙的情况。如果,客户不同意为我们打开需要的端口而只为我们留了HTTP端口,那么我们也并非走投无路了,我们可以使用rmi-http的解决这个问题,但也许我们要牺牲一些效率,至于牺牲多少,笔者也没有做过详细的测试。下面是笔者使用JBOSS rmi-http的一点经验总结:

在JBOSS中通过rmi/http方式访问jndi以及ejb,无须更改。访问JNDI只需设置如下两个环境变量为:

java.naming.factory.initial = org.jboss.naming.HttpNamingContextFactory

java.naming.provider.url = (注:斜体的hostip指具体的jboss服务器的ip地址)

通过RMI/HTTP方式访问EJB只要将下文中的红字部分添加到相应EJBjboss.xml中就可以了。

 
   nobody
  
    
     
         Hello
         Hello
         HelloLocal
         
           
               
                    stateless-http-invoker
               
           
        
     
  
  
   
   
   
        stateless-http-invoker
        jboss:service=invoker,type=http
       org.jboss.proxy.ejb.ProxyFactory
       
           
               
                    org.jboss.proxy.ejb.HomeInterceptor
org.jboss.proxy.SecurityInterceptor
                 org.jboss.proxy.TransactionInterceptor
                    org.jboss.invocation.InvokerInterceptor
               
               
                   
                        org.jboss.proxy.ejb.StatelessSessionInterceptor
                   
                    org.jboss.proxy.SecurityInterceptor
                    org.jboss.proxy.TransactionInterceptor
                    org.jboss.invocation.InvokerInterceptor
               
           
       
   
  
  
  
  
 
改动完以上部分,理论上就可以通过RMI/HTTP方式进行调用了。但实际测试中发现,如果按jboss的默认配置安装,可以正常访问JNDI但无法正常访问EJB,。在调用InitialContext的lookup时,总会抛出UnknownHostException。这个问题不知道是怎样导致的,但可以通过修改jboss的http-invoker.sar的默认配置来解决它。打开jboss/ server/default/deploy/http-invoker.sar/META-INF目录下的jboss-service.xml文件。将文件中所有的UseHostName属性的值都改为false。该属性的意思是,用主机名来构成URL串,默认是打开。但在打开放式下,无法通过测试,所以将该项关闭。
(注:在实际测试时,本人只将服务“jboss:service=invoker,type=http”和“jboss:service=invoker,type=http,target=Naming”,既第一个和第三个服务,的属性改掉,即通过了测试。)



自己备份,以后使用


阅读(1146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~