J'ai une webapp exécutée sur un serveur Websphere 6.1 que JNDI recherche pour une source de données. Cette webapp fonctionne très bien, le serveur Websphere reconnaît l'arbitre DataSource dans le web.xml etc ..Websphere 6.1, Source de données, deux applications
Maintenant, nous avons ajouté une deuxième webapp qui devrait utiliser cette source de données avec la même configuration, mais je reçois un ClassCastException
lorsque je tente d'accéder à la la source de données.
Pour localiser le problème que j'ai mis cela dans mon code
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());
}
l'erreur déboiser est imprimé
[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
Alors, je reçois un objet de la classe com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource
mais les causes de coulée DataSource
le ClassCastException
?
J'ai essayé cette application sur un autre serveur, était nouvelle installation 6.1, là ça marche. Il fonctionne également dans un environnement de Tomcat.
Une chose plus importante: Il est une source de données DB2 qui utilise le jt400.jar
- il y a quelques problèmes avec simliar le pilote JDBC Oracle et WAS 6.
Peut-être que l'un d'entre vous a quelques suggestions?
Vous devez inclure la trace de pile ou les gens devineront juste. –
En plus de ce que bkail a mentionné, vous devez également fournir la topologie. Ces deux applications Web s'exécutent-elles sur le même serveur. S'agit-il d'un serveur unique ou d'une configuration ND, etc. La pile que vous avez fournie affiche des informations provenant de votre application - à java.lang.ClassCastException. (ClassCastException.java:29) à de.ac.action.ServiceAction.execute (ServiceAction.java: 65) Nous aurions besoin de savoir si le classcast est à la DataSource ou à un autre composant/classe. Cette pile ne fournit aucune information pour que les gens puissent vous aider. –
Manglu
Excusez-moi mais: Bien sûr, il y a une DataSource attendue sinon ma question n'aurait aucun sens. Un serveur est défini et deux applications doivent exécuter et partager cette source de données sur ce serveur. Comme mentionné dans ma question: Application on recherche la source de données avec succès, l'application deux me jette juste cette exception. Les liaisons de ressources JDBC sont exactement les mêmes, ainsi que le nom de recherche JNDI. – onigunn