0

我有一个安装了 Jboss5.0.1GA 服务器的云实例。服务器实例包含一个公共 IP 和一个自然 IP 地址。我已经使用带有 ip(natted) 地址的 -b 运行 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:连接拒绝主机:”。任何人都可以帮助我。

`这是我的连接器文件(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

`

4

2 回答 2

1

从远程服务器实例远程登录到您尝试在 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。

于 2013-03-17T16:49:27.200 回答
0

就我而言,以下两件事对我有用。 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. 希望它对其他人也有帮助。

于 2013-03-20T08:18:19.757 回答