I'm slightly further along now: the message is being received by the service endpoint. My endpoint address did not match the address I requested in the actual web app. Stupid typos. :(
I'm receiving a SOAPFaultException now (object is not an instance of declaring class while invoking ...), but at least I'm a little closer. I'm hoping the current problem is just a namespace issue or something. Thanks, - Dave dclane wrote: > > My client's SOAP message doesn't seem to be making the trip to the web > service when deployed on Tomcat 5.5 (I'm using CXF 2.2-SNAPSHOT). I've > made a JUnit4 test which uses the CXF Jetty transport, and the SOAP > request/response works when executed within Eclipse or via mvn test. Here > are the messages from the unit test: > > Mar 7, 2009 8:31:45 PM > org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose > INFO: Outbound Message > --------------------------- > Address: http://localhost:8081/myProject/issueService > Encoding: UTF-8 > Content-Type: text/xml > Headers: {SOAPAction=[""], Accept=[*/*]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:issueCreate > xmlns:ns2="http://model.company.com/"><issue><votes>0</votes></issue></ns2:issueCreate></soap:Body></soap:Envelope> > -------------------------------------- > Mar 7, 2009 8:31:45 PM org.apache.cxf.interceptor.LoggingInInterceptor > logging > INFO: Inbound Message > ---------------------------- > Encoding: UTF-8 > Content-Type: text/xml; charset=UTF-8 > Headers: {content-type=[text/xml; charset=UTF-8], connection=[keep-alive], > Host=[localhost:8081], Content-Length=[240], SOAPAction=[""], > User-Agent=[Apache CXF 2.2-SNAPSHOT], Accept=[*/*], Pragma=[no-cache], > Cache-Control=[no-cache]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:issueCreate > xmlns:ns2="http://model.company.com/"><issue><votes>0</votes></issue></ns2:issueCreate></soap:Body></soap:Envelope> > -------------------------------------- > Mar 7, 2009 8:31:46 PM > org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose > INFO: Outbound Message > --------------------------- > Encoding: UTF-8 > Content-Type: text/xml > Headers: {} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:issueCreateResponse > xmlns:ns2="http://model.company.com/"><return>1.0</return></ns2:issueCreateResponse></soap:Body></soap:Envelope> > -------------------------------------- > Mar 7, 2009 8:31:46 PM org.apache.cxf.interceptor.LoggingInInterceptor > logging > INFO: Inbound Message > ---------------------------- > Encoding: UTF-8 > Content-Type: text/xml; charset=utf-8 > Headers: {content-type=[text/xml; charset=utf-8], Content-Length=[229], > Server=[Jetty(6.1.11)]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:issueCreateResponse > xmlns:ns2="http://model.company.com/"><return>1.0</return></ns2:issueCreateResponse></soap:Body></soap:Envelope> > -------------------------------------- > > And here are the client's outbound/inbound messages when the service is > deployed within Tomcat: > > > Mar 7, 2009 8:24:38 PM > org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose > INFO: Outbound Message > --------------------------- > Address: http://localhost:8081/myProject/issueService > Encoding: UTF-8 > Content-Type: text/xml > Headers: {SOAPAction=[""], Accept=[*/*]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:issueCreate > xmlns:ns2="http://model.company.com/"><issue><assigneeId>admin</assigneeId><description>afsfdsa</description><issueTypeId>1</issueTypeId><key>TEST-94</key><priorityId>3</priorityId><projectId>10040</projectId><reporterId>admin</reporterId><statusId>10008</statusId><summary>test</summary><votes>0</votes><workflowId>10580</workflowId></issue></ns2:issueCreate></soap:Body></soap:Envelope> > -------------------------------------- > Mar 7, 2009 8:24:38 PM org.apache.cxf.interceptor.LoggingInInterceptor > logging > INFO: Inbound Message > ---------------------------- > Encoding: UTF-8 > Content-Type: > Headers: {connection=[close], Date=[Sun, 08 Mar 2009 02:24:38 GMT], > transfer-encoding=[chunked], Server=[Apache-Coyote/1.1]} > Payload: > -------------------------------------- > > The payload is completely empty on the inbound message. It appears to me > that this request is never even hitting the service (I'm seeing nothing > about this request in my service's log), and that the SOAP message is > discarded on the client side. Is this likely to be correct? > > Here is the error stacktrace: > > Mar 7, 2009 8:24:39 PM org.apache.cxf.phase.PhaseInterceptorChain > doIntercept > INFO: Interceptor has thrown exception, unwinding now > org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader. > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:184) > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:1) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:641) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2113) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1992) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1917) > at > org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:170) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:601) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:469) > ... > Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog > at [row,col {unknown-source}]: [1,0] > at > com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661) > at > com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134) > at > com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040) > at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069) > at > com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095) > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:86) > ... 93 more > [20:24:39.753-http-8081-Processor24][IssueEventDispatcher][ERROR] - > Exception thrown from listener [com.company.IssueCreator] : Error reading > XMLStreamReader. > javax.xml.ws.soap.SOAPFaultException: Error reading XMLStreamReader. > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:144) > at $Proxy71.issueCreate(Unknown Source) > ... > Caused by: org.apache.cxf.binding.soap.SoapFault: Error reading > XMLStreamReader. > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:184) > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:1) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:641) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2113) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1992) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1917) > at > org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:170) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:601) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:469) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) > at > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123) > ... 76 more > Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog > at [row,col {unknown-source}]: [1,0] > at > com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661) > at > com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134) > at > com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040) > at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069) > at > com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095) > at > org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:86) > ... 93 more > > I was initially deploying to Tomcat via Eclipse's server tools, but later > tried dropping the packaged WAR into the Tomcat webapps directory, but > received the same result. > > Here is my unit test: > > public class IssueServiceTest extends AbstractWsServiceTest { > > private final String uri = > "http://localhost:8081/myProject/issueService"; > > @Test > public void issueCreateTest() { > > deployWsService( IssueService.class, IssueServiceBean.class, uri > ); > IssueService client = getWsServiceClient( IssueService.class, uri > ); > Double responseNum = client.issueCreate( new Issue( issue ) ); > log.info( "responseNum: " + responseNum ); // this returns an > appropriate response. > } > > protected <T> void deployWsService( Class<? extends T> > serviceInterfaceClass, Class<? extends T> serviceBeanClass, String uri ) { > > JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); > > factory.setServiceClass( serviceInterfaceClass ); > factory.setAddress( uri ); > factory.setServiceBean( Reflection.newInstance( > serviceBeanClass ) ); > factory.create(); > } > > protected <T> T getWsServiceClient( Class<? extends T> > serviceInterfaceClass, String uri ) { > > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > > factory.setServiceClass( serviceInterfaceClass ); > factory.setAddress( uri ); > > T client = (T) factory.create(); > return client; > } > } > > Here is the method which fails when trying to use the Tomcat-deployed > service: > > public class IssueCreator { > > public void createIssue( Issue issue ){ > > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > factory.setServiceClass( DevTrackSyncService.class ); > factory.setAddress( > "http://localhost:8081/myProject/issueService" ); > DevTrackSyncService client = (DevTrackSyncService) > factory.create(); > } > } > > Does anyone have any suggestions for how I should proceed? I've been > stepping through the CXF code (PhaseInterceptorChain, > HolderOutInterceptor, etc.) and don't see the problem... > > Could it be something with project dependencies or some setting I should > change in my application context? My firewall is off, and everything is > happening on my local machine (both client and service). > > Thank you, > - Dave > -- View this message in context: http://www.nabble.com/Empty-SOAP-Inbound-Message-when-service-is-deployed-on-Tomcat-tp22394848p22413693.html Sent from the cxf-user mailing list archive at Nabble.com.
