我有一个云实例,我安装了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
`
答案 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
。
希望它也会对其他人有所帮助。