Hi all,

In a nutshell I seem to be able pull data from a .Net based web service but when I try push the same data back I'm getting an error. Here's what's happening...

Have created Java classes using wsdltojava using the published wsdl for the service. e.g. the service is accessed with... SalesOrderService service = new SalesOrderService(SALES_ORDER_SERVICE_URL, SALES_ORDER_SERVICE_NAME); SalesOrderServiceSoap soapService = service.getSalesOrderServiceSoap();

I can call methods that return complex data types without any problem. e,g,
   SalesOrderDataSetType dataSet = soapService.getById(orderNum);

An error occurs when I try to pass the same dataset back as an input parameter to another method. e.g. SalesOrderDataSetType dataSet = soapService.getNewOrderDtl(*dataSet*, orderNum);

This returns the stack trace...
java.lang.NullPointerException
at org.apache.cxf.interceptor.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:72) at org.apache.cxf.interceptor.ClientFaultConverter.handleMessage(ClientFaultConverter.java:65) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:206) at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:86) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:178) at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:57) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:206)
   at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:399)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1830) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1698) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:206)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:253)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:204)
   at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
   at $Proxy39.getNewOrderDtl(Unknown Source)

Not very helpful... but here's some more clues...

I was previously trying to do this with XFire and was getting an error at the same point in the code... org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: String was not recognized as a valid DateTime.; at System.DateTime.ParseExact(String s, String[] formats, IFormatProvider provider, DateTimeStyles style)
  at System.Xml.XmlConvert.ToDateTime(String s, String[] formats)
  at System.Xml.XmlConvert.ToDateTime(String s)

This suggests there is a problem with the date format being sent to the webservice. So I've tried to look at what is being sent using tools like TcpMon but can only see the GET requests for the WSDL - I cannot set any requests or responses associated with the methods being called. Should I be looking at a port other than 80?

If you can suggest either a solution or a way to monitor the requests and responses I'd really appreciate it.

thanks

Phil

Reply via email to