Jboss5.01GA RMI EJB3.0

时间:2013-03-17 16:43:04

标签: jboss rmi remoting

我有一个云实例,我安装了Jboss5.0.1GA服务器。服务器实例包含Public ip和natted Ip Address。我使用-b和ip(natted)地址运行Jboss服务器,web url工作正常。现在我正在创建Java外部客户端来访问部署在Jboss服务器中的EJB3 bean,我正在获取异常并尝试使用google的解决方案,这对我的情况没有帮助。找到下面的代码,告诉我在外部客户端使用什么来访问EJB3。

                            properties = new Properties();
            properties.load(stream);
            // Set the context
            Hashtable ht = new Hashtable();
            ht.put(Context.INITIAL_CONTEXT_FACTORY,
                    "org.jnp.interfaces.NamingContextFactory");
            ht.put(Context.PROVIDER_URL,"public ip address");
            ht.put(Context.URL_PKG_PREFIXES,
                    "org.jboss.naming:org.jnp.interfaces");
            // Find and create a reference to the bean using JNDI
            context = new InitialContext(ht);

执行localhost时工作正常。同时连接远程投掷以下异常。 “javax.naming.CommunicationException [根异常是java.rmi.ConnectException:Connection拒绝主机:”。任何人都可以帮助我。

`这是我的连接器文件(ejb3-connectors-jboss-beans.xml)。

EJB3连接器

- >

JBoss Remoting Connector  

Note: Bean Name "org.jboss.ejb3.RemotingConnector" is used
as a lookup value; alter only after checking java references
to this key.

- >   

<property name="invokerLocator">

  <value-factory bean="ServiceBindingManager"
    method="getStringBinding">
    <parameter>
      jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3
    </parameter>
    <parameter>
      <null />
    </parameter>
    <parameter>socket://${jboss.bind.address}:${port}</parameter>
    <parameter>
      <null />
    </parameter>
    <parameter>3873</parameter>
  </value-factory>

</property>
<property name="serverConfiguration">
  <inject bean="ServerConfiguration" />
</property>

                                  AOP                        org.jboss.aspects.remoting.AOPRemotingInvocationHandler                                   

`

2 个答案:

答案 0 :(得分:1)

telnet到您尝试从远程服务器实例连接jboss的ip和端口。如果那不起作用,那么你必须首先解决网络问题。 (让我知道,所以我可以指导你如何做到这一点)

同时检查EJB3绑定设置并检查网络。开箱即用的配置看起来很像..

   <mbean code="org.jboss.remoting.transport.Connector"
          xmbean-dd="org/jboss/remoting/transport/Connector.xml"
          name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
      <depends>jboss.aop:service=AspectDeployer</depends>
      <attribute name="InvokerLocator">socket://0.0.0.0:3873</attribute>
      <attribute name="Configuration">
         <handlers>
            <handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
         </handlers>
      </attribute>
   </mbean>

谢谢!

@leo。

答案 1 :(得分:0)

对于我的情况,下面2件事对我有用。 1. Running Jboss server using run.bat -b **public ip(not nat ip)** -Djboss.bind.address=0.0.0.0 2. Enabling my **local** machine hosts file to point remote ip to hostname ie remoteip remotehostname。 希望它也会对其他人有所帮助。