데이터 소스를 JNDI에서 조회하는 Websphere 6.1 서버에서 실행되는 webapp가 있습니다. 이 웹 애플리케이션은 잘 실행, WebSphere 서버는 Websphere 6.1, Datasource, 두 개의 앱
이제 우리는 내가 액세스하려고 할 때 나는ClassCastException
을받을 동일한 구성하지만 와이 데이터 소스를 사용한다 두 번째 웹 애플리케이션을 추가 ...은 web.xml 등의 데이터 소스 심판을 인식 데이터 소스.
그래서
[5/10/10 9:45:13:531 CEST] 00000176 SystemErr R [email protected]
[5/10/10 9:45:13:532 CEST] 00000176 SystemErr R class com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource
[5/10/10 9:45:13:539 CEST] 00000176 SystemErr R java.lang.ClassCastException
at java.lang.Throwable.<init>(Throwable.java:181)
at java.lang.Exception.<init>(Exception.java:29)
at java.lang.RuntimeException.<init>(RuntimeException.java:32)
at java.lang.ClassCastException.<init>(ClassCastException.java:29)
at de.ac.action.MAction.execute(MAction.java:77)
at de.ac.web.GetTheView.doService(GetTheView.java:88)
at de.ac.web.GetTheView.doGet(GetTheView.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1096)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:570)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:556)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:583)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:979)
at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1064)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1462)
[5/10/10 9:45:13:539 CEST] 00000176 SystemErr R null
인쇄 나는이 로그 오류에 내 코드
try{
InitialContext ctx = new InitialContext();
Object obj = ctx.lookup(N2WebConstants.datasourceJNDI);
System.err.println(obj.toString());
System.err.println(obj.getClass());
con = ((DataSource) obj).getConnection();
}catch (Exception e){
System.err.println(e);
System.err.println(e.getCause());
}
이 점을 넣어 한 문제를 찾으려면, 내가 클래스 com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource
의 객체 만 DataSource
원인을 주조를 얻을 수 ClassCastException
?
다른 애플 리케이션에서이 애플 리케이션을 시험해 보았는데, WAS 6.1을 새로 설치하면 작동한다. 그것은 또한 바람둥이 환경에서 작동합니다.
한 가지 더 중요한 것은 : 그것은 jt400.jar
를 사용하는 DB2 데이터 소스입니다 - 거기 오라클 JDBC 드라이버 일부를 닮아 문제가 있으며
6. 아마 당신의 일이 몇 가지 제안을 가지고 있었나요?
스택 추적을 포함시켜야하거나 사람들이 추측 할 수 있습니다. –
bkail이 언급 한 것 외에도 토폴로지를 제공해야합니다. 이 두 웹 응용 프로그램이 동일한 서버에서 실행되고 있습니까? 이것은 단일 서버 또는 ND 설정입니까? 제공된 스택은 응용 프로그램의 정보 (예 : )를 java.lang.ClassCastException에 표시합니다. (ServiceAction.java : 65) 클래스 캐스트가 DataSource에 있는지 또는 다른 구성 요소/클래스에 있는지 알아야합니다. 이 스택은 사람들에게 도움이되는 그러한 정보를 제공하지 않습니다. – Manglu
실례지만 : 확실하게 DataSource가 있어야합니다. 그렇지 않으면 제 질문이 의미가 없습니다. 하나의 서버가 정의되어 있으며이 서버에는 두 개의 앱이 실행되고이 하나의 데이터 소스를 공유해야합니다. 내 질문에 언급 한 바와 같이 : 응용 프로그램 하나는 데이터 소스를 성공적으로 조회하고 응용 프로그램 2는이 예외 만받습니다. JDBC 자원 바인딩은 정확히 동일하며 JNDI 조회 이름도 마찬가지입니다. – onigunn