Salut,
je dois migrer des Webservices de Weblogic server 8.1 (utilisant le
framework des Web Services de Weblogic) vers Tomcat 5.5 avec Apache
Axis 1.3.
Les Web services ont =E9t=E9 d=E9velopp=E9s en respectant les
sp=E9cifications JAX-RPC.
Ils sont de + faiblement typ=E9s car il ne prennent en g=E9n=E9ral qu'un
seul param=E8tre sous la forme d'un String. Cependant, j'obtiens des
ClassCastException =E0 l'invocation et je s=E8che. J'ai fait appel =E0 la
ml
d'Axis mais sans succ=E8s. Sinon, si vous connaissez d'autres outils
permettant de d=E9ployer des Webservices JAX-RPC sous Tomcat =E7a
m'int=E9resse.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
La StackTrace:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.ClassCastException:
java.lang.String
at
org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:7=
7)
at
org.apache.axis.encoding.DeserializationContext.startElement(Deserializatio=
nContext.java:1048)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(A=
bstractSAXParser.java:533)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartE=
lement(XMLNSDocumentScannerImpl.java:330)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentD=
ispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Frag=
mentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scan=
Document(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co=
nfiguration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co=
nfiguration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:1=
48)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Abstract=
SAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContex=
t=2Ejava:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java=
:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio=
nFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC=
hain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j=
ava:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j=
ava:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12=
6)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10=
5)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav=
a:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConn=
ection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja=
va:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW=
orkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja=
va:684)
at java.lang.Thread.run(Thread.java:595)
{http://xml.apache.org/axis/}hostname:ldewavrin
java.lang.ClassCastException: java.lang.String
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:324)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java=
:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio=
nFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC=
hain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j=
ava:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j=
ava:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12=
6)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10=
5)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav=
a:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConn=
ection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.ja=
va:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW=
orkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja=
va:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassCastException: java.lang.String
at
org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:7=
7)
at
org.apache.axis.encoding.DeserializationContext.startElement(Deserializatio=
nContext.java:1048)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(A=
bstractSAXParser.java:533)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartE=
lement(XMLNSDocumentScannerImpl.java:330)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentD=
ispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Frag=
mentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scan=
Document(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co=
nfiguration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Co=
nfiguration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:1=
48)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Abstract=
SAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContex=
t=2Ejava:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
... 18 more
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bruno Grieder
Bonjour,
Sur le fond, le problème principal vient de l'utilisation de webservices de type RPC/encoded. Si tu as la possibilité de changer, transforme les en document/literal. Le typage est plus fort - ce qui élimine bien des problèmes - en particulier ceux de l'interopérabilité entre palte-formes.
Axis est un outil cum librairies pratiques mais qui a quelques étranges caractéristiques. JBoss a d'ailleurs décidé de développer son propre stack à la suite de nombreux problèmes.
Je te suggère d'utiliser: 1- si possible un serveur d'application plutôt que Tomcat pur et dur pour la partie serveur. JBoss est un bon choix si le budget est une contrainte. JBoss s'appuie sur Tomcat. 2- pour la génération des stubs clients (et éventuellement serveurs + descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les standards dès que l'on force le respect de WS Basic Profile (WSI).
Bruno
wrote:
Salut, je dois migrer des Webservices de Weblogic server 8.1 (utilisant le framework des Web Services de Weblogic) vers Tomcat 5.5 avec Apache Axis 1.3. Les Web services ont été développés en respectant les spécifications JAX-RPC. Ils sont de + faiblement typés car il ne prennent en général qu'un seul paramètre sous la forme d'un String. Cependant, j'obtiens des ClassCastException à l'invocation et je sèche. J'ai fait appel à la ml d'Axis mais sans succès. Sinon, si vous connaissez d'autres outils permettant de déployer des Webservices JAX-RPC sous Tomcat ça m'intéresse.
========================= > La StackTrace: ========================= > faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.ClassCastException: java.lang.String at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
{http://xml.apache.org/axis/}hostname:ldewavrin
java.lang.ClassCastException: java.lang.String at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:324) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassCastException: java.lang.String at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279) ... 18 more
Bonjour,
Sur le fond, le problème principal vient de l'utilisation de webservices
de type RPC/encoded. Si tu as la possibilité de changer, transforme les
en document/literal. Le typage est plus fort - ce qui élimine bien des
problèmes - en particulier ceux de l'interopérabilité entre palte-formes.
Axis est un outil cum librairies pratiques mais qui a quelques étranges
caractéristiques. JBoss a d'ailleurs décidé de développer son propre
stack à la suite de nombreux problèmes.
Je te suggère d'utiliser:
1- si possible un serveur d'application plutôt que Tomcat pur et dur
pour la partie serveur. JBoss est un bon choix si le budget est une
contrainte. JBoss s'appuie sur Tomcat.
2- pour la génération des stubs clients (et éventuellement serveurs +
descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et
sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les
standards dès que l'on force le respect de WS Basic Profile (WSI).
Bruno
bengalister@gmail.com wrote:
Salut,
je dois migrer des Webservices de Weblogic server 8.1 (utilisant le
framework des Web Services de Weblogic) vers Tomcat 5.5 avec Apache
Axis 1.3.
Les Web services ont été développés en respectant les
spécifications JAX-RPC.
Ils sont de + faiblement typés car il ne prennent en général qu'un
seul paramètre sous la forme d'un String. Cependant, j'obtiens des
ClassCastException à l'invocation et je sèche. J'ai fait appel à la
ml
d'Axis mais sans succès. Sinon, si vous connaissez d'autres outils
permettant de déployer des Webservices JAX-RPC sous Tomcat ça
m'intéresse.
========================= > La StackTrace:
========================= >
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.ClassCastException:
java.lang.String
at
org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77)
at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
{http://xml.apache.org/axis/}hostname:ldewavrin
java.lang.ClassCastException: java.lang.String
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:324)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.ClassCastException: java.lang.String
at
org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77)
at
org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
at
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
at
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at
com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at
com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at
org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
... 18 more
Sur le fond, le problème principal vient de l'utilisation de webservices de type RPC/encoded. Si tu as la possibilité de changer, transforme les en document/literal. Le typage est plus fort - ce qui élimine bien des problèmes - en particulier ceux de l'interopérabilité entre palte-formes.
Axis est un outil cum librairies pratiques mais qui a quelques étranges caractéristiques. JBoss a d'ailleurs décidé de développer son propre stack à la suite de nombreux problèmes.
Je te suggère d'utiliser: 1- si possible un serveur d'application plutôt que Tomcat pur et dur pour la partie serveur. JBoss est un bon choix si le budget est une contrainte. JBoss s'appuie sur Tomcat. 2- pour la génération des stubs clients (et éventuellement serveurs + descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les standards dès que l'on force le respect de WS Basic Profile (WSI).
Bruno
wrote:
Salut, je dois migrer des Webservices de Weblogic server 8.1 (utilisant le framework des Web Services de Weblogic) vers Tomcat 5.5 avec Apache Axis 1.3. Les Web services ont été développés en respectant les spécifications JAX-RPC. Ils sont de + faiblement typés car il ne prennent en général qu'un seul paramètre sous la forme d'un String. Cependant, j'obtiens des ClassCastException à l'invocation et je sèche. J'ai fait appel à la ml d'Axis mais sans succès. Sinon, si vous connaissez d'autres outils permettant de déployer des Webservices JAX-RPC sous Tomcat ça m'intéresse.
========================= > La StackTrace: ========================= > faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.lang.ClassCastException: java.lang.String at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)
{http://xml.apache.org/axis/}hostname:ldewavrin
java.lang.ClassCastException: java.lang.String at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:324) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassCastException: java.lang.String at org.apache.axis.message.EnvelopeBuilder.startElement(EnvelopeBuilder.java:77) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:533) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) at javax.xml.parsers.SAXParser.parse(SAXParser.java:375) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:424) at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279) ... 18 more
Bengali
Bon en fait, mon WSDL n'était pas correct, donc cela ne pouvait pas fonctionner avec Axis.
Je te suggère d'utiliser: 1- si possible un serveur d'application plutôt que Tomcat pur et dur pour la partie serveur. JBoss est un bon choix si le budget est une contrainte. JBoss s'appuie sur Tomcat. J'envisageais également de déployer sous JBoss.
2- pour la génération des stubs clients (et éventuellement serveurs + descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les standards dès que l'on force le respect de WS Basic Profile (WSI). Suite à ta recommandation, j'ai effectivement investi un peu de temps
sur le JWSDP de Sun et cela a bien fonctionné. En fait j'ai même pu déployer mon WS sous Tomcat brut (pas celui de Sun). Je n'ai pas encore regardé comment rajouter des handlers, et changer le format de message avec le fichier de configuration du service, ce sera la 2ème étape.
Pour le client, je ne me suis pas cassé la tête, je n'ai rien généré je suis passé par Spring qui génère des proxys dynamiques pour les WS JAXRPC.
Merci. Luc
Bon en fait, mon WSDL n'était pas correct, donc cela ne pouvait
pas fonctionner avec Axis.
Je te suggère d'utiliser:
1- si possible un serveur d'application plutôt que Tomcat pur et dur
pour la partie serveur. JBoss est un bon choix si le budget est une
contrainte. JBoss s'appuie sur Tomcat.
J'envisageais également de déployer sous JBoss.
2- pour la génération des stubs clients (et éventuellement serveurs +
descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et
sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les
standards dès que l'on force le respect de WS Basic Profile (WSI).
Suite à ta recommandation, j'ai effectivement investi un peu de temps
sur le JWSDP de Sun et cela a bien fonctionné. En fait j'ai même
pu déployer mon WS sous Tomcat brut (pas celui de Sun).
Je n'ai pas encore regardé comment rajouter des handlers, et changer
le format de message avec le fichier de configuration du service,
ce sera la 2ème étape.
Pour le client, je ne me suis pas cassé la tête, je n'ai rien généré
je suis passé par Spring qui génère des proxys dynamiques pour les WS
JAXRPC.
Bon en fait, mon WSDL n'était pas correct, donc cela ne pouvait pas fonctionner avec Axis.
Je te suggère d'utiliser: 1- si possible un serveur d'application plutôt que Tomcat pur et dur pour la partie serveur. JBoss est un bon choix si le budget est une contrainte. JBoss s'appuie sur Tomcat. J'envisageais également de déployer sous JBoss.
2- pour la génération des stubs clients (et éventuellement serveurs + descripteurs xml), le JWSDP de Sun est moins facile à manier que Axis et sa doc n'est pas fameuse mais il permet de respecter scrupuleusement les standards dès que l'on force le respect de WS Basic Profile (WSI). Suite à ta recommandation, j'ai effectivement investi un peu de temps
sur le JWSDP de Sun et cela a bien fonctionné. En fait j'ai même pu déployer mon WS sous Tomcat brut (pas celui de Sun). Je n'ai pas encore regardé comment rajouter des handlers, et changer le format de message avec le fichier de configuration du service, ce sera la 2ème étape.
Pour le client, je ne me suis pas cassé la tête, je n'ai rien généré je suis passé par Spring qui génère des proxys dynamiques pour les WS JAXRPC.