JBossWS dysfunctional? Can't get DocumentLiteral with Comple
jlauemoeller Oct 26, 2004 4:22 AMHi all,
I'm trying to get a very simple Document/Literal sample application to work in JBoss 4.0 and I'm failing. The application deploys allright and I'm able to view it's "start page" provided by Axis.
However, when I call the only method provided by the service, I get the following exception (start-up trace included in case it contains any clues):
10:02:15,631 INFO [Server] Starting JBoss (MX MicroKernel)... 10:02:15,634 INFO [Server] Release ID: JBoss [Zion] 4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418) 10:02:15,635 INFO [Server] Home Dir: /home/jacob/development/jboss-4.0.0 10:02:15,635 INFO [Server] Home URL: file:/home/jacob/development/jboss-4.0.0/ 10:02:15,636 INFO [Server] Library URL: file:/home/jacob/development/jboss-4.0.0/lib/ 10:02:15,638 INFO [Server] Patch URL: null 10:02:15,639 INFO [Server] Server Name: jboss-ws 10:02:15,639 INFO [Server] Server Home Dir: /home/jacob/development/jboss-4.0.0/server/jboss-ws 10:02:15,640 INFO [Server] Server Home URL: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/ 10:02:15,641 INFO [Server] Server Data Dir: /home/jacob/development/jboss-4.0.0/server/jboss-ws/data 10:02:15,642 INFO [Server] Server Temp Dir: /home/jacob/development/jboss-4.0.0/server/jboss-ws/tmp 10:02:15,643 INFO [Server] Server Config URL: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/conf/ 10:02:15,643 INFO [Server] Server Library URL: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/lib/ 10:02:15,644 INFO [Server] Root Deployment Filename: jboss-service.xml 10:02:15,655 INFO [Server] Starting General Purpose Architecture (GPA)... 10:02:16,874 INFO [ServerInfo] Java version: 1.5.0,Sun Microsystems Inc. 10:02:16,875 INFO [ServerInfo] Java VM: Java HotSpot(TM) Server VM 1.5.0-b64,Sun Microsystems Inc. 10:02:16,875 INFO [ServerInfo] OS-System: Linux 2.6.5-7.111-default,i386 10:02:19,083 INFO [Server] Core system initialized 10:02:29,884 INFO [Log4jService$URLWatchTimerTask] Configuring from URL: resource:log4j.xml 10:02:30,378 INFO [WebService] Using RMI server codebase: http://linux:8083/ 10:02:31,362 INFO [NamingService] Started jnpPort=1099, rmiPort=1098, backlog=50, bindAddress=/0.0.0.0, Client SocketFactory=null, Server SocketFactory=org.jboss.net.sockets.DefaultSocketFactory@ad093076 10:02:58,272 INFO [Embedded] Catalina naming disabled 10:03:02,176 INFO [Http11Protocol] Initializing Coyote HTTP/1.1 on http-0.0.0.0-8080 10:03:02,380 INFO [Catalina] Initialization processed in 3585 ms 10:03:02,381 INFO [StandardService] Starting service jboss.web 10:03:02,432 INFO [StandardEngine] Starting Servlet Engine: Apache Tomcat/5.0.28 10:03:02,652 INFO [StandardHost] XML validation disabled 10:03:02,841 INFO [Catalina] Server startup in 460 ms 10:03:03,647 INFO [TomcatDeployer] deploy, ctxPath=/jbossmq-httpil, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jms/jbossmq-httpil.sar/jbossmq-httpil.war/ 10:03:05,991 INFO [ContextConfig] WARNING: Security role name durpublisher used in an <auth-constraint> without being defined in a <security-role> 10:03:05,992 INFO [ContextConfig] WARNING: Security role name publisher used in an <auth-constraint> without being defined in a <security-role> 10:03:05,993 INFO [ContextConfig] WARNING: Security role name guest used in an <auth-constraint> without being defined in a <security-role> 10:03:05,994 INFO [ContextConfig] WARNING: Security role name j2ee used in an <auth-constraint> without being defined in a <security-role> 10:03:05,995 INFO [ContextConfig] WARNING: Security role name subscriber used in an <auth-constraint> without being defined in a <security-role> 10:03:07,860 INFO [TomcatDeployer] deploy, ctxPath=/ws4ee, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/tmp/deploy/tmp9180jboss-ws4ee-exp.war/ 10:03:08,839 INFO [TomcatDeployer] deploy, ctxPath=/invoker, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/http-invoker.sar/invoker.war/ 10:03:09,868 INFO [TomcatDeployer] deploy, ctxPath=/, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jbossweb-tomcat50.sar/ROOT.war/ 10:03:22,885 INFO [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jms/jms-ra.rar 10:03:23,816 INFO [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jboss-local-jdbc.rar 10:03:24,754 INFO [RARDeployment] Required license terms exist view the META-INF/ra.xml: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jboss-xa-jdbc.rar 10:03:30,421 INFO [ConnectionFactoryBindingService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA to JNDI name 'java:JmsXA' 10:03:30,927 INFO [WrapperDataSourceService] Bound connection factory for resource adapter for ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS to JNDI name 'java:DefaultDS' 10:03:33,413 INFO [UILServerILService] JBossMQ UIL service available at : /0.0.0.0:8093 10:03:33,652 INFO [OIL2ServerILService] JBossMQ OIL2 service available at : /0.0.0.0:8092 10:03:34,136 INFO [OILServerILService] JBossMQ OIL service available at : /0.0.0.0:8090 10:03:34,287 INFO [DLQ] Bound to JNDI name: queue/DLQ 10:03:34,389 INFO [testTopic] Bound to JNDI name: topic/testTopic 10:03:34,394 INFO [securedTopic] Bound to JNDI name: topic/securedTopic 10:03:34,403 INFO [testDurableTopic] Bound to JNDI name: topic/testDurableTopic 10:03:34,494 INFO [testQueue] Bound to JNDI name: queue/testQueue 10:03:34,520 INFO [A] Bound to JNDI name: queue/A 10:03:34,524 INFO [B] Bound to JNDI name: queue/B 10:03:34,532 INFO [C] Bound to JNDI name: queue/C 10:03:34,538 INFO [D] Bound to JNDI name: queue/D 10:03:34,543 INFO [ex] Bound to JNDI name: queue/ex 10:03:35,825 INFO [MailService] Mail Service bound to java:/Mail 10:03:39,516 INFO [EjbModule] Deploying MEJB 10:03:40,475 INFO [EJBDeployer] Deployed: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/management/ejb-management.jar 10:03:41,033 INFO [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/management/web-console.war/ 10:03:45,182 INFO [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jmx-console.war/ 10:03:46,094 INFO [EARDeployer] Init J2EE application: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jboss-ws.ear 10:03:49,056 INFO [TomcatDeployer] deploy, ctxPath=/WeatherSevice, warUrl=file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/tmp/deploy/tmp9236jboss-ws.ear-contents/WeatherService-exp.war/ 10:03:51,544 INFO [WSDLFilePublisher] WSDL published to: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/data/wsdl/WeatherService.war/WeatherService-1.0.wsdl 10:03:54,990 WARN [ServiceDescription] Guessing fault java type from qname: jbossws.server.ws.ForecastNotAvailableDetails 10:03:55,354 INFO [AxisService] WSDD published to: /home/jacob/development/jboss-4.0.0/server/jboss-ws/data/wsdl/WeatherService.war/WeatherService.wsdd 10:03:56,682 INFO [AxisService] Web Service deployed: http://localhost:8080/WeatherSevice/WeatherService 10:03:56,821 INFO [EARDeployer] Started J2EE application: file:/home/jacob/development/jboss-4.0.0/server/jboss-ws/deploy/jboss-ws.ear 10:03:57,813 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-0.0.0.0-8080 10:03:58,602 INFO [ChannelSocket] JK2: ajp13 listening on /0.0.0.0:8009 10:03:58,610 INFO [JkMain] Jk running ID=0 time=1/120 config=null 10:03:58,768 INFO [Server] JBoss (MX MicroKernel) [4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418)] Started in 1m:41s:762ms 10:08:43,986 ERROR [RPCInvocation] org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:207) at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1188) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:244) at org.apache.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElementAxisImpl.java:1407) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:263) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:397) at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:232) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:104) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:360) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:73) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:162) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:125) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:557) at org.jboss.webservice.server.ServerEngine.invokeInternal(ServerEngine.java:202) at org.jboss.webservice.server.ServerEngine.invoke(ServerEngine.java:91) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:971) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:372) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) 10:08:44,276 ERROR [ServerEngine] Server error: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client faultSubcode: faultString: javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:401) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:104) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:360) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:73) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:162) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:125) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:557) at org.jboss.webservice.server.ServerEngine.invokeInternal(ServerEngine.java:202) at org.jboss.webservice.server.ServerEngine.invoke(ServerEngine.java:91) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:971) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:372) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:207) at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1188) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:244) at org.apache.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElementAxisImpl.java:1407) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:263) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:397) at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:232) ... 43 more {http://xml.apache.org/axis/}isRuntimeException: true 10:08:44,288 INFO [AxisServlet] AxisFault: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client faultSubcode: faultString: javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:401) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:104) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:360) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:73) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:162) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:125) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:557) at org.jboss.webservice.server.ServerEngine.invokeInternal(ServerEngine.java:202) at org.jboss.webservice.server.ServerEngine.invoke(ServerEngine.java:91) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:971) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:372) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:207) at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1188) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:244) at org.apache.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElementAxisImpl.java:1407) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:263) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:397) at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:232) ... 43 more {http://xml.apache.org/axis/}isRuntimeException: true javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.AxisFault.makeFault(AxisFault.java:139) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:376) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:73) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:162) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:125) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:557) at org.jboss.webservice.server.ServerEngine.invokeInternal(ServerEngine.java:202) at org.jboss.webservice.server.ServerEngine.invoke(ServerEngine.java:91) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:971) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:372) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:44) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:169) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) Caused by: javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:401) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:104) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:360) ... 41 more Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize. at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:207) at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1188) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:244) at org.apache.axis.message.SOAPElementAxisImpl.publishToHandler(SOAPElementAxisImpl.java:1407) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:263) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:397) at org.apache.axis.providers.java.RPCInvocation.prepareFromRequestEnvelope(RPCInvocation.java:232) ... 43 more
How is this possible considering that both client and server were generated by the Axis version embedded in JBoss? Stepping through Axis as the request is handled hasn't yet provided much of a clue as to what is going on, but so far it seems to me that the DeserializationContextImpl class is failing when it attempts to deserialize the fake RPC call it has converted the Document message into.
Any clues would be much appreciated. Curiously, this sample application is quite like one I developed using JBoss 4.0 / Axis 1.2beta2 (with JBossWS undeployed) which leads me to think that the problem lies with Axis 1.1.
Right now it looks as though I'll have to either use a different App server (for J2EE WS compliance) or replace JBossWS with Suns reference implementation and live with the fact that I'll have to write the Servlet-to-Endpoint glue code myself. Too bad.
For reference, here are the various files involved:
WSDL
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="WeatherService" targetNamespace="http://jbossws/weatherservice/service/1.0" xmlns:ws="http://jbossws/weatherservice/service/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xs:schema targetNamespace="http://jbossws/weatherservice/service/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import namespace="http://jbossws/weatherservice/service/1.0" schemaLocation="WeatherService-1.0.xsd"/> </xs:schema> </wsdl:types> <!-- Messages --> <wsdl:message name="GetForecastRequest"> <wsdl:part name="request" element="ws:GetForecastRequestDocument"/> </wsdl:message> <wsdl:message name="GetForecastResponse"> <wsdl:part name="response" element="ws:GetForecastResponseDocument"/> </wsdl:message> <wsdl:message name="ForecastNotAvailableFault"> <wsdl:part name="errorMessage" element="ws:ForecastNotAvailableDetails"/> </wsdl:message> <wsdl:portType name="WeatherServicePortType"> <wsdl:operation name="getForecast"> <wsdl:input name="in" message="ws:GetForecastRequest"/> <wsdl:output name="out" message="ws:GetForecastResponse"/> <wsdl:fault name="ForecastNotAvailableFault" message="ws:ForecastNotAvailableFault"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="WeatherServiceSoapBinding" type="ws:WeatherServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getForecast"> <soap:operation soapAction="http://jbossws/weatherservice/service/2.0/GetForecast"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="ForecastNotAvailableFault"> <soap:fault name="ForecastNotAvailableFault" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="WeatherService"> <wsdl:documentation>Weather Service</wsdl:documentation> <wsdl:port name="WeatherServicePort" binding="ws:WeatherServiceSoapBinding"> <soap:address location="http://localhost:8080/weatherservice/services/WeatherServicePort"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
WeatherService WSDL Type Schema
This schema defines the request and response documents used in the WSDL. It includes the Forecast schema (see below) which defines the business types involved.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fc="http://jbossws/weatherservice/forecast/1.0" xmlns:ws="http://jbossws/weatherservice/service/1.0" targetNamespace="http://jbossws/weatherservice/service/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified" > <xs:import namespace="http://jbossws/weatherservice/forecast/1.0" schemaLocation="Forecast-1.0.xsd"/> <!-- Common Types --> <xs:complexType name="ForecastNotAvailableDetails"> <xs:sequence> <xs:element name="incidentToken" type="xs:string"/> <xs:element name="explanation" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="ForecastNotAvailableDetails" type="ws:ForecastNotAvailableDetails"/> <!-- GetForecast --> <xs:complexType name="GetForecastRequestDocument"> <xs:sequence> <xs:element ref="fc:Query"/> </xs:sequence> </xs:complexType> <xs:complexType name="GetForecastResponseDocument"> <xs:sequence> <xs:element ref="fc:Forecast"/> </xs:sequence> </xs:complexType> <xs:element name="GetForecastRequestDocument" type="ws:GetForecastRequestDocument"/> <xs:element name="GetForecastResponseDocument" type="ws:GetForecastResponseDocument"/> </xs:schema>
WeatherService Forecast Schema
This schema defines the business types used by the Weather Service.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://jbossws/weatherservice/forecast/1.0" xmlns:fc="http://jbossws/weatherservice/forecast/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:complexType name="Query"> <xs:sequence> <xs:element name="numberOfDays" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:element name="Query" type="fc:Query"/> <xs:complexType name="Day"> <xs:sequence> <xs:element name="date" type="xs:date"/> <xs:element name="prediction" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="Forecast"> <xs:sequence> <xs:element name="Day" type="fc:Day" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:element name="Forecast" type="fc:Forecast"/> </xs:schema>
Sample SOAP Request / Response message pair
I have manually validated the body of the envelope against the relevant schemas and it checks out ok.
POST /WeatherSevice/WeatherService HTTP/1.0 Content-Type: text/xml; charset=utf-8 Accept: application/soap+xml, application/dime, multipart/related, text/* User-Agent: Axis/1.1 Host: 127.0.0.1 Cache-Control: no-cache Pragma: no-cache SOAPAction: "http://jbossws/weatherservice/service/2.0/GetForecast" Content-Length: 509 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <GetForecastRequestDocument xmlns="http://jbossws/weatherservice/service/1.0"> <ns1:Query xmlns:ns1="http://jbossws/weatherservice/forecast/1.0"> <ns1:numberOfDays>5</ns1:numberOfDays> </ns1:Query> </GetForecastRequestDocument> </soapenv:Body> </soapenv:Envelope>
HTTP/1.1 500 Internal Server Error X-Powered-By: Servlet 2.4; Tomcat-5.0.28/JBoss-4.0.0 (build: CVSTag=JBoss_4_0_0 date=200409200418) Content-Type: text/xml;charset=utf-8 Date: Tue, 26 Oct 2004 08:08:44 GMT Server: Apache-Coyote/1.1 Connection: close <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Client</faultcode> <faultstring>javax.xml.rpc.JAXRPCException: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.</faultstring> <detail/> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>