我有一个安装了 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
`