Мы переносим наше веб-приложение с GF 2.1.1 (Java 6) на JBoss EAP 6.3.0 (Java 7), и нам нужно какое-то время использовать один EJB из GF, пока он также не будет перенесен на JBoss.
1 — Раньше мы просто использовали внешний JNDI-ресурс GF для подключения к этому 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 - я пытался добраться до этого EJB через код, используя реализацию GF:
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");
Но я не мог избавиться от всех исключений, которые JB начал выдавать, когда я пытался добавить библиотеки GF (appserv-rt.jar...), необходимые для использования этого подхода.
3 - я также пытался добраться до этого EJB через код, используя реализацию JB:
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), то что я делаю неправильно?