웹 서비스 응용 프로그램과 독립 실행 형, 명령 줄 응용 프로그램이 포함 된 레거시 WebLogic 응용 프로그램을 사용하고 있습니다. 둘 다 공통 데이터베이스에 대한 액세스가 필요하며 명령 줄 응용 프로그램이 웹 서버의 JDBC 연결에 풀링 된 연결을 사용하도록하려고합니다. 내가 JDBC 드라이버에 JNDI 룩업을 사용하려고했습니다풀링 된 JDBC 연결을 사용하는 응용 프로그램
(. 독립 실행 형 응용 프로그램이 서버 만이 활성화되고 모두가 동일한 물리적 시스템에서 실행 될 때 실행할 수 있습니다) 다음과 같이
try {
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
ctx = new InitialContext(ht);
DataSource ds = (DataSource) ctx.lookup ("dbOracle");
Connection conn = null;
conn = ds.getConnection(); // <-- Exception raised here
// conn = ds.getConnection(username, password); // (Also fails)
// ...
} catch (Exception e) {
// Handle exception...
}
JNDI 이름이 올바른지 확인했습니다. 다른 웹 응용 프로그램과 함께 데이터베이스에 연결할 수 있지만 독립 실행 형 응용 프로그램에는 계속 어려움이 있습니다. - WebLogic app note에서 아이디어를 얻었습니다.
내가 간과 한 것에 대한 아이디어가 있습니까?
EDIT 1.1 : "java.lang.ClassCastException : java.lang.Object"예외가 표시됩니다.
편집 2 : 나는 다음과 같은 수행 할 때 : 독립형 응용 프로그램에서
Object dsObj = ctx.lookup("dbOracle");
System.out.println("Obj was: " + dsObj.getClass().getName());
, 그것을보고 : 나는 동일한 코드 덩어리를 테스트하기 위해 시도
"Obj was: weblogic.jdbc.common.internal._RemoteDataSource_Stub"
(설명 원래 질문)을 웹 응용 프로그램에 저장하고 데이터 소스에 연결할 수있었습니다 (즉, "작동"하는 것처럼 보입니다). 이 작업 테스트 보고서 :
"Obj was: weblogic.jdbc.common.internal.RmiDataSource"
는 또한, 여기에 실패 때의 스택 트레이스의 :
같은 제한된 정보로 무슨 일이 일어나고 있는지 말해####<Apr 22, 2009 10:38:21 AM EDT> <Warning> <RMI> <mlbdev16> <cgServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1240411101452> <BEA-080003> <RuntimeException thrown by rmi server: weblogic.jdbc.common.internal.RmiDataSource.getConnection()
java.lang.ClassCastException: java.lang.Object.
java.lang.ClassCastException: java.lang.Object
at weblogic.iiop.IIOPOutputStream.writeAny(IIOPOutputStream.java:1584)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2222)
at weblogic.utils.io.ObjectStreamClass.writeFields(ObjectStreamClass.java:413)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:235)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:225)
at weblogic.corba.utils.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:182)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1957)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1992)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2253)
at weblogic.jdbc.common.internal.RmiDataSource_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:224)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:479)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:475)
at weblogic.rmi.internal.BasicServerRef.access$300(BasicServerRef.java:59)
at weblogic.rmi.internal.BasicServerRef$BasicExecuteRequest.run(BasicServerRef.java:1016)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)
예외가 무엇인지 알려 주시면 도움이됩니다. –
java.lang.Object도 예외는 아닙니다. – jsight
아마도 시도하십시오 : 개체 dsObj = ctx.lookup ("dbOracle"); System.out.println ("Obj :"+ dsObj.getClass(). getName()); 당신이 정말로 당신이 생각하는 것을 얻고 있는지보기 위해서? – jsight