1. WAS 버전 : WebSphere ND v6.1.0.23
2. OS : Windows XP
3. Error 발생 시점 : SUN jvm 을 사용하는 EJB Client 에서 IBM WebSphere Server 에 등록되어 있는 EJB session bean 을
lookup 할려고 시도하는 경우
4. Error message :
javax.naming.NamingException: Failed to initialize the ORB [Root
exception is java.lang.ClassCastException:
com.sun.corba.se.impl.orb.ORBImpl]
at com.ibm.ws.naming.util.Helpers.getOrb(Helpers.java:318)
at com.ibm.ws.naming.util.WsnInitCtxFactory.getInitialContextInternal(WsnInitCtxFactory.java:402)
at com.ibm.ws.naming.util.WsnInitCtx.getContext(WsnInitCtx.java:117)
at com.ibm.ws.naming.util.WsnInitCtx.getContextIfNull(WsnInitCtx.java:712)
at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:171)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.ibm.juwlee.java.CallEJBClientOnSun.go(CallEJBClientOnSun.java:43)
at com.ibm.juwlee.java.CallEJBClientOnSun.main(CallEJBClientOnSun.java:22)obj : null
Caused by: java.lang.ClassCastException: com.sun.corba.se.impl.orb.ORBImpl
at com.ibm.ws.orb.GlobalORBFactory.init(GlobalORBFactory.java:86)
at com.ibm.ejs.oa.EJSORBImpl.initializeORB(EJSORBImpl.java:179)
at com.ibm.ejs.oa.EJSClientORBImpl.<init>(EJSClientORBImpl.java:83)
at com.ibm.ejs.oa.EJSClientORBImpl.<init>(EJSClientORBImpl.java:59)
at com.ibm.ejs.oa.EJSORB.init(EJSORB.java:102)
at com.ibm.ws.naming.util.Helpers.getOrb(Helpers.java:309)
... 7 more
Exception in thread "main" java.lang.NullPointerException
at com.ibm.juwlee.java.CallEJBClientOnSun.go(CallEJBClientOnSun.java:60)
at com.ibm.juwlee.java.CallEJBClientOnSun.main(CallEJBClientOnSun.java:22)
5. 예상 이유 : Sun jvm 의 경우에는 기본적으로 ORB 객체를 가지고 올때 com.sun.corba.se.impl.orb.ORBImpl 으로 변환하는데
IBM WebSphere Server 의 EJB 는 lookup 을 할 경우 com.ibm.CORBA.iiop.ORB 객체로 리턴해주기 때문에
ClassCastException 이 발생함
6. 조치 방안 : Sun jvm 에서 EJB Client 를 돌릴 경우에는 하단과 같이 initialContext 를 lookup 하기 전에
사전에 반환할 객체를 지정해 주어야 함 - props.put("org.omg.CORBA.ORBClass", "com.ibm.CORBA.iiop.ORB");
또는, initialContext 를 가져올때 아예 sun 의 ContextFactory를 이용해서 만들면 됨
props.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
IBM - old/WAS 문제&해결
댓글