2014-10-21 7 views
0

GF 2.1.1 (Java 6)에서 JBoss EAP 6.3.0 (Java 7)으로 웹 애플리케이션을 마이그레이션하고 GF에서 하나의 EJB를 사용하여 JBoss로 마이그레이션 할 때까지 얼마 동안 사용해야합니다. -JBoss EAP 6에 배포 된 웹 응용 프로그램에서 GlassFish 2 서버에 배포 된 EJB에 액세스하는 방법은 무엇입니까?

일 이전에 우리가 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에 이와 유사한 아무것도 찾을 수 없습니다. JB는 던지기 시작하는 것이 내가 GF의 libs와 (추가하려고 할 때,

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의 구현을 사용하여 코드를 통해이 EJB에 도달하기 위해 노력 appserv-rt.jar ...)이이 접근법을 사용해야했습니다.

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"); 

오초 후에 시간 초과 결과 : -

3은 또한 JB의 구현을 사용하여 코드를 통해이 EJB에 도달하기 위해 노력했다.

JBoss에서 (1)과 같은 작업을 수행 할 수 있습니까? 그것은 최선의 선택이 될 것입니다.

JBoss에서 GF 접근 (2)이 가능합니까?

JB 접근 방식 (3)을 사용해야하는 경우 무엇이 잘못 되었습니까?

답변

0

글래스 피시에 의존하기 때문에 첫 번째 2 가지 접근법이 잘못되어 JBoss 에서 글래스 피시로 연결하려고합니다.

마지막 방법은 내가 먼저 호스트/포트에 액세스 할 수 있는지 확인하고 또한 무슨 일이 일어나고 있는지보기 위해 가능한 모든 로깅을 설정 할 the documentation.

에 따라 다소 올바른 것 같다.

+0

호스트/포트에 액세스 할 수 있으므로 동일한 컴퓨터의 GF 서버에서이 EJB에 액세스 할 수 있습니다. 나는 또한 [이 접근법] (https://docs.jboss.org/author/display/AS72/EJB+invocations+from+a+remote+client+using+JNDI)을 시도했지만 JBoss는 그렇지 않습니다. 내가 제공 한 jboss-ejb-client.properties를 읽고 싶다. 이 Exception에서 java.lang.IllegalStateException : EJBCLIENT000025 : 호출 문맥에 대한 [appName : NameOfEJB, moduleName : NameOfEJB, distinctName :] 조합의 처리를 위해 EJB 수신기를 사용할 수 없음 org.jboss.ejb.client.EJBClientInvocationContext @ 1061db9' 나는 로컬 EJB 만 검사했습니다 – RunninglVlan

+0

디버깅을 조금했는데 jboss-client가 JBoss의 다른 (로컬) 배포 된 응용 프로그램에만 조회 이름을 비교한다는 것을 알았습니다. 그것은 심지어 원격 서버에 연결하려고 시도하지 않는 것 같습니다. 그래서 jboss-ejb-client.properties를 읽지 않았거나 적어도 그 속성을 사용하지 않았다고 생각합니다. jboss-ejb-client.properties를 사용하여 접근법을 올바르게 사용하는 방법을 말하는 사람이 있다면 도움이 될 것입니다. – RunninglVlan