2013-02-01 8 views
0

JNDI (구성된 SIB)에서 websphere 7 큐를 검색해야합니다. 먼저 원격 웹 스피어 서버에 액세스하는 클라이언트 프로그램을 작성했습니다. com.ibm.ws.admin.client, com.ibm.ws.runtime, com.ibm.ws.sib.client.thin.jms 및 com.ibm.ws.webservices.thinclient jar 파일을 추가했습니다.JNDI에서 웹 스피어 큐 검색하기

코드는 다음과 같습니다.

Hashtable<String, Object> env = new Hashtable<String, Object>(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.ibm.websphere.naming.WsnInitialContextFactory"); 
env.put(Context.PROVIDER_URL, "iiop://localhost:2809"); 

내가 원격 클라이언트로 접근하고 같이이 잘 작동하지 않습니다. 그러므로 나는 이것을 더했다.

env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null)); 

이것은 지금은 잘 작동한다. 그런 다음 위의 행을 제거하고 대상 JDK를 IBM JDK로 이동합니다. 이 경우 아무 문제없이 작동합니다.

서버 프로그램에서 위의 큐에 액세스해야하는 경우 실제 문제가 발생합니다. 이것은 별도의 JVM에서 실행됩니다. 원격 JNDI 큐에 액세스하려고하면 클래스 캐스트 예외가 발생합니다. IBM이 아닌 기본 태양 ORB 구현을로드하기 때문에 그걸 믿습니다. com.ibm.ws.orb jar도 추가했습니다. Sun ORB를로드합니다. 따라서 클래스 캐스트 예외를 제공합니다.

위와 같이 org.omg.CORBA.ORB를로드 할 수있는 기능이 없습니다. 이걸 실행할 수있는 방법이 있습니까? 내가 놓친 게 있니? Websphere 8.5의 모든 의견도 환영합니다.

참고 : 이것은 Websphere MQ가 아닙니다. 나는 Websphere 애플리케이션 서버 큐를 언급하고있다.

답변

0

음 ... 까다 롭습니다. 이전에 EAR 파일로 작업 한 클라이언트 jar 파일을 패키징하고 클래스 로더 정책을 PARENT_LAST로 변경할 수있었습니다.

+0

분명히 내가 올바르게 수행했는지 알아야합니다. 나는 이것을 달성 할 다른 방법이 있어야한다고 생각합니다. – Dilshan