如何从部署到JBoss EAP 6的Web应用程序访问部署到GlassFish 2服务器的EJB?

时间:2014-10-21 12:57:53

标签: java jboss ejb jboss-eap-6 glassfish-2.x

我们正在将我们的Web应用程序从GF 2.1.1(Java 6)迁移到JBoss EAP 6.3.0(Java 7),并且需要使用GF中的一个EJB一段时间,直到它也将迁移到JBoss。

1 - 之前我们只使用GF的外部JNDI资源连接到这个EJB:

<external-jndi-resource enabled="true"
    factory-class="com.sun.enterprise.naming.SerialInitContextFactory"
    jndi-lookup-name="ejb/NameOfEJB" jndi-name="ejb/NameOfEJB"
    object-type="user" res-type="name.of.ejb.interfaces.NameOfEJB">
  <property name="org.omg.CORBA.ORBInitialPort" value="3700"/>
  <property name="org.omg.CORBA.ORBInitialHost" value="hostname.of.ejb"/>
</external-jndi-resource>

我还没有在JB上找到类似的东西。

2 - 我试图通过使用GF实现的代码来访问这个EJB:

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", zoneHost);
props.setProperty("org.omg.CORBA.ORBInitialPort", zonePort);
InitialContext ic = new InitialContext(props);
Object obj = ic.lookup("ejb/NameOfEJB");

但我无法摆脱所有的异常,当我尝试添加使用这种方法所需的GF的libs(appserv-rt.jar ...)时,JB开始抛出。

3 - 我还试图通过使用JB实现的代码来访问这个EJB:

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jboss.naming.remote.client.InitialContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.ejb.client.naming");
props.put("jboss.naming.client.ejb.context", true);
props.setProperty(Context.PROVIDER_URL, "remote://" + zoneHost+ ":" + zonePort);
// also tried to add Context.SECURITY_PRINCIPAL and CREDENTIALS properties, but they didn't change anything
InitialContext ic = new InitialContext(props);
Object obj = ic.lookup("ejb/NameOfEJB");

这导致5秒后超时。

像(1)这样的东西可以在JBoss中完成吗?那将是最好的选择。

GF方法(2)甚至可以从JBoss获得吗?

如果我需要使用JB方法(3),那么我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的前两种方法是错误的,因为它们依赖于Glassfish,你希望从JBoss 连接到 Glassfish。

根据the documentation.

,最后一种方法似乎有些正确

我首先检查主机/端口是否可访问,并打开所有可能的日志记录以查看正在发生的情况。