Arrays as result and casting issue
Hi I got an issue with casting arrays returned when calling my SOAP service. Interface: public Address[] lookupAddress(...); Implementation: public Address[] lookupAddress(...) { ... some stuff happening ... UKAddress address = new UKAddress[10]; ... 10 UKAddress objects added to address array ... return address; } Model: public class BaseModel{} public class Address{} extends BaseModel public class UKAddress extends Address{} Spring setup: class="com.surgex.addresslookup.service.impl.AddressLookupServiceImpl" i nit-method="init"> address="/AddressLookup"> class="org.apache.cxf.aegis.databinding.AegisDatabinding"/> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/> class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/> true com.surgex.addresslookup.model.BaseModelvalue> com.surgex.addresslookup.model.Address com.surgex.addresslookup.model.UKAddressvalue> Note: the client side also has the setup as per the server above. WSDL: name="UKAddress" nillable="true" type="tns:UKAddress"/> name="Address" nillable="true" type="tns:Address"/> nillable="true" type="xsd:string"/> name="matchingAttributes" type="xsd:int"/> nillable="true" type="xsd:string"/> name="dbleDependentLocality" nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> name="dependentLocality" nillable="true" type="xsd:string"/> name="dependentThoroughfare" nillable="true" type="xsd:string"/> name="matchingAttributes" type="xsd:int"/> nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> nillable="true" type="xsd:string"/> The issue is that when using SOAP to access this service (Note that this service is also exposed through RMI, JMX, HttpInvoker, Hessian and Burlap and they're all fine) I cannot cast the Address[] to a UKAddress[] eventhough all elements in the Address[] are UKAddress objects. I get a ClassCastException. I have the same bunch of tests which are executed using RMI, JMX, HttpInvoker, Burlap and Hessian and they have no issue with the cast. Address[] addresses = service.lookupAddress(...); UKAddress[] addr = (UKAddress[])addresses-> ClassCastException; Code below runs ok. Address[] addresses = service.lookupAddress(...); assertTrue(addresses instanceof Address[]); System.out.println(addresses.length); for (int i=0; ihttp://pgpkeys.mit.edu/ 1024D/BA6700ED 49A6 8E8E 4230 8D41 1ADE B649 3203 1DD2 BA67 00ED
Inheritance in CXF
Hi I can't find any information on inheritance in the CXF doc. The only info I found was on the XFire site and the Jira issue CXF-1164 Say, I have: public class Parent { private String p1; (+ get/set accessors) } public class Child extends Parent { private String c1; private String c2; (+ get/set accessors) } The SOAP exposed interface is: public interface IExample { public Parent findSomething(... params...); } The implementation is: public class ExampleImpl implements IExample { public Parent findSomething(... params...) { return new Child(); } } The WSDL shows: ... type="xsd:string"/> type="xsd:string"/> type="xsd:string"/> ... Now the client cannot do something like: Child ch = (Child)service.findSomething(... params ...); as this will fail with a ClassCastException. So is there a way to define inheritance (annotation? Spring config?) for the model objects being returned so the WSDL generated shows the inheritance properly allowing the clients to cast objects accordingly? Thx. -- Frederic P. Soulier OpenPGP key available on http://pgpkeys.mit.edu/ 1024D/BA6700ED 49A6 8E8E 4230 8D41 1ADE B649 3203 1DD2 BA67 00ED
Re: Different bevaviour in 2.0.4
Thx Dan package-info.java file with: @javax.xml.bind.annotation.XmlSchema( namespace="http://addresslookup.surgex.com";, elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package com.surgex.addresslookup; fixes it for sure :) Obviously, understanding what might be the problem would have shown that there was similar a jira issue: (CXF-1226) Missing input/output param namespace in SOAP :( Is the necesssity of having a package-info.java will be removed in 2.0.4+ ? Thx a bunch. On 6 Feb 2008, at 16:07, Daniel Kulp wrote: Ah! Now we're getting someplace. Can you look at the lines in the wsdl (there probably are two or more of them) and tell me if they say elementFormDefault="qualified" or elementFormDefault="unqualified" along with the targetNamespace for each. My gut feeling says the one for targetnamspace: http://addresslookup.surgex.com is set to unqualified. If it is, the incoming message is wrong. The DEFAULT for JAX-WS is that the wrapper schema types should be unqualified. Thus the accessor elements (credential, postcode, etc...) from the WebParam annotations would be unqualified on the wire. If that's the case, you can probably change it in 2.0.4 by adding a package-info.java file next to the IAddressLookupService.java that looks something like: @javax.xml.bind.annotation.XmlSchema( namespace="http://addresslookup.surgex.com";, elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package com.surgex.addresslookup; 2.0.4 should actually look in the package-info to grab that. It's also configurable via spring config, but the package-info is probably easier. Dan On Wednesday 06 February 2008, Frederic Soulier wrote: Hi Dan Thx for this info. On 5 Feb 2008, at 20:48, Daniel Kulp wrote: Hmm... the incoming messages definitely are the same. That shouldn't be an issue. Next question: if you do a "?wsdl" on the endpoint, are the wsdl's EXACTLY the same? http://192.168.10.61:9520/remoting/soap/AddressLookupService?wsdl shows the same thing for 2.0.3 and 2.0.4 http://192.168.10.61:9520/remoting/soap/AddressLookupService? wsdl=AddressLookupService.wsdl is slightly different. output of: diff cxf-203-wsdl.txt cxf-204-wsdl.txt < http://www.w3.org/2001/XMLSchema"; namespace="http:// impl.service.addresslookup.surgex.com/"/> --- impl.service.addresslookup.surgex.com/"/> 88,92d87 < < < < < 94d88 < 99c93,94 < --- 101,102c96 < < --- name="Address" nillable="true" type="tns:Address"/> 104d97 < 110a104 114d107 < 120a114 123a118,123 nillable="true" type="xsd:string"/> type="xsd:int"/> 148c148,150 < http://www.w3.org/2001/XMLSchema"; namespace="http:// impl.service.addresslookup.surgex.com/"/> --- model.remoting.commons.surgex.com"/> impl.service.addresslookup.surgex.com/"/> http://model.addresslookup.surgex.com"/> Also, is this doc/lit bare or wrapped? Code first/wsdl first? (it looks wrapped, but want to verify the rest) Interface (IAddressLookupService): @WebService(name = "AddressLookupService") @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.WRAPPED) public UKAddress [] lookupUK(@WebParam(name = "credential", mode = Mode.IN, header = false) Credential credential, @WebParam(name = "postcode", mode = Mode.IN, header = false) String postcode, @WebParam(name = "otherInfo", mode = Mode.IN, header = false) Map otherInfo, @WebParam(name = "multipleResults", mode = Mode.IN, header = false) boolean multipleResults) throws RemotingException, InvalidArgumentException, UnauthorisedAccessException; Implementation (AddressLookupServiceImpl): @WebService(endpointInterface = "com.surgex.addresslookup.service.IAddressLookupService") No annotations in model objects. Default Aegis processing. I WOULD expect this behavior if the WSDL or runtime thinks the parts are supposed to be unqualified. Basically, it's walking through elements and trying to match them up with the parts from the service model. However, the call to rname.equals(part.getConcreteName()) is never returning true so it's not finding the appropriate part. What you MAY want to try looking at if you have this in the debugger is to see what rname is and what part.getConcreteName() is.If getConcreteName() doesn't have a URL, it definitely thinks it should be unqualifie
Re: Different bevaviour in 2.0.4
Hi Dan Thx for this info. On 5 Feb 2008, at 20:48, Daniel Kulp wrote: Hmm... the incoming messages definitely are the same. That shouldn't be an issue. Next question: if you do a "?wsdl" on the endpoint, are the wsdl's EXACTLY the same? http://192.168.10.61:9520/remoting/soap/AddressLookupService?wsdl shows the same thing for 2.0.3 and 2.0.4 http://192.168.10.61:9520/remoting/soap/AddressLookupService? wsdl=AddressLookupService.wsdl is slightly different. output of: diff cxf-203-wsdl.txt cxf-204-wsdl.txt < http://www.w3.org/2001/XMLSchema"; namespace="http:// impl.service.addresslookup.surgex.com/"/> --- > 88,92d87 < < < name="Address" nillable="true" type="tns:Address"/> < < 94d88 < 99c93,94 < --- > > 101,102c96 < nillable="true" type="xsd:string"/> < type="xsd:int"/> --- > name="Address" nillable="true" type="tns:Address"/> 104d97 < 110a104 > 114d107 < 120a114 > 123a118,123 > > > nillable="true" type="xsd:string"/> > type="xsd:int"/> > > 148c148,150 < http://www.w3.org/2001/XMLSchema"; namespace="http:// impl.service.addresslookup.surgex.com/"/> --- > > > http://model.addresslookup.surgex.com"/> Also, is this doc/lit bare or wrapped? Code first/wsdl first? (it looks wrapped, but want to verify the rest) Interface (IAddressLookupService): @WebService(name = "AddressLookupService") @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL, parameterStyle = ParameterStyle.WRAPPED) public UKAddress [] lookupUK(@WebParam(name = "credential", mode = Mode.IN, header = false) Credential credential, @WebParam(name = "postcode", mode = Mode.IN, header = false) String postcode, @WebParam(name = "otherInfo", mode = Mode.IN, header = false) Map otherInfo, @WebParam(name = "multipleResults", mode = Mode.IN, header = false) boolean multipleResults) throws RemotingException, InvalidArgumentException, UnauthorisedAccessException; Implementation (AddressLookupServiceImpl): @WebService(endpointInterface = "com.surgex.addresslookup.service.IAddressLookupService") No annotations in model objects. Default Aegis processing. I WOULD expect this behavior if the WSDL or runtime thinks the parts are supposed to be unqualified. Basically, it's walking through elements and trying to match them up with the parts from the service model. However, the call to rname.equals(part.getConcreteName()) is never returning true so it's not finding the appropriate part. What you MAY want to try looking at if you have this in the debugger is to see what rname is and what part.getConcreteName() is.If getConcreteName() doesn't have a URL, it definitely thinks it should be unqualified and it may be a bug in how the servicemodel is setup. rname = {http://addresslookup.surgex.com}credential trying to match: part.getConcreteName() = credential part.getConcreteName() = postcode part.getConcreteName() = otherInfo part.getConcreteName() = multipleResults Obviously doesn't match... and params array ends up containing null,null,null,null -- Frederic P. Soulier OpenPGP key available on http://pgpkeys.mit.edu/ 1024D/BA6700ED 49A6 8E8E 4230 8D41 1ADE B649 3203 1DD2 BA67 00ED
Fwd: Different bevaviour in 2.0.4
Ok I've been tracing the 2.0.4 code base to see why I'm getting these 4 null parameters that triggers the SOAPFault and I ended up finding some differences in the DocLiteralInInterceptor class. I haven't traced 2.0.3. Am I onto something here? Thx. The 2.04 DocLiteralInInterceptor has: private void getPara(DepthXMLStreamReader xmlReader, DataReader dr, MessageContentsList parameters, Iterator itr, Message message) { boolean hasNext = true; while (itr.hasNext()) { MessagePartInfo part = itr.next(); if (hasNext) { hasNext = StaxUtils.toNextElement(xmlReader); } Object obj = null; if (hasNext) { QName rname = xmlReader.getName(); while (part != null && !rname.equals(part.getConcreteName())) { if (part.getXmlSchema() instanceof XmlSchemaElement) { //TODO - should check minOccurs=0 and throw validation exception //thing if the part needs to be here parameters.put(part, null); << in my case always executes this line } if (itr.hasNext()) { part = itr.next(); } else { part = null; } } if (part == null) { return; << actually returns here } if (rname.equals(part.getConcreteName())) { obj = dr.read(part, xmlReader); << never executed } } parameters.put(part, obj); } } The 2.0.3 DocLiteralInInterceptor has: private void getPara(DepthXMLStreamReader xmlReader, DataReader dr, MessageContentsList parameters, Iterator itr, Message message) { boolean hasNext = true; while (itr.hasNext()) { MessagePartInfo part = itr.next(); if (hasNext) { hasNext = StaxUtils.toNextElement(xmlReader); } Object obj = null; if (hasNext) { QName rname = xmlReader.getName(); while (part != null && !rname.equals(part.getConcreteName())) { String bindingType = message.getExchange().get (Service.class).getDataBinding().getClass().getName(); if (part.getXmlSchema() instanceof XmlSchemaElement) { if (bindingType.endsWith("AegisDatabinding")) { parameters.add(dr.read(part, xmlReader)); } else { //should check minOccurs=0 parameters.put(part, null); } } if (itr.hasNext()) { part = itr.next(); } else { part = null; } } if (part == null) { return; } if (rname.equals(part.getConcreteName())) { obj = dr.read(part, xmlReader); } } parameters.put(part, obj); } } Begin forwarded message: From: Frederic Soulier <[EMAIL PROTECTED]> Date: 4 February 2008 21:51:17 GMT To: cxf-user@incubator.apache.org Subject: Fwd: Different bevaviour in 2.0.4 Reply-To: cxf-user@incubator.apache.org Hi So any idea why this could be failing on 2.0.4 and not 2.0.3? Thx. Begin forwarded message: From: Frederic Soulier <[EMAIL PROTECTED]> Date: 3 February 2008 11:22:29 GMT To: cxf-user@incubator.apache.org Subject: Re: Different bevaviour in 2.0.4 Reply-To: cxf-user@incubator.apache.org Hi Dan THere doesn't seem to be a difference in the messages. CXF 2.0.4 = 02-Feb-2008 12:46:56 org.apache.cxf.interceptor.LoggingInInterceptor logging INFO: Inbound Message Encoding: UTF-8 Headers: {Host=[192.168.10.61:9530], User-Agent=[Java/1.5.0_13], connection=[keep-alive], SOAPAction=[""], transfer-encoding= [chunked], Pragma=[no-cache], content-type=[text/xml; charset=UTF-8], Cache-Control=[no-cache], Accept=[*]} Messages: Message: Payload: http://schemas.xmlsoap.org/ soap/envelope/">xmlns:ns2="http://model.remoting.commons.surgex.com";>TESTns2:serviceName>passwordns1:credential>SW7 7ET>falsesoap:Body> -- 02-Feb-2008 12:46:56 org.apache.cxf.phase.PhaseInterceptorChain d
Fwd: Different bevaviour in 2.0.4
Hi So any idea why this could be failing on 2.0.4 and not 2.0.3? Thx. Begin forwarded message: From: Frederic Soulier <[EMAIL PROTECTED]> Date: 3 February 2008 11:22:29 GMT To: cxf-user@incubator.apache.org Subject: Re: Different bevaviour in 2.0.4 Reply-To: cxf-user@incubator.apache.org Hi Dan THere doesn't seem to be a difference in the messages. CXF 2.0.4 = 02-Feb-2008 12:46:56 org.apache.cxf.interceptor.LoggingInInterceptor logging INFO: Inbound Message Encoding: UTF-8 Headers: {Host=[192.168.10.61:9530], User-Agent=[Java/1.5.0_13], connection=[keep-alive], SOAPAction=[""], transfer-encoding= [chunked], Pragma=[no-cache], content-type=[text/xml; charset=UTF-8], Cache-Control=[no-cache], Accept=[*]} Messages: Message: Payload: http://schemas.xmlsoap.org/soap/ envelope/">xmlns:ns2="http://model.remoting.commons.surgex.com";>TESTns2:serviceName>passwordns1:credential>SW7 7ET>falsesoap:Body> -- 02-Feb-2008 12:46:56 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Application has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookupU K (com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut il.Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.co mmons.remoting.exceptions.InvalidArgumentException,com.surgex.commons. remoting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. at org.apache.cxf.service.invoker.AbstractInvoker.createFault (AbstractInvoker.java:109) at org.apache.cxf.jaxws.JAXWSMethodInvoker.createFault (JAXWSMethodInvoker.java:76) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:101) at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke (JAXWSMethodInvoker.java:100) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:68) at org.apache.cxf.interceptor.ServiceInvokerInterceptor $1.run(ServiceInvokerInterceptor.java:56) at org.apache.cxf.workqueue.SynchronousExecutor.execute (SynchronousExecutor.java:37) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage (ServiceInvokerInterceptor.java:92) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) at org.apache.cxf.transport.ChainInitiationObserver.onMessage (ChainInitiationObserver.java:77) at org.apache.cxf.transport.servlet.ServletDestination.doMessage (ServletDestination.java:79) at org.apache.cxf.transport.servlet.ServletController.invokeDestination (ServletController.java:264) at org.apache.cxf.transport.servlet.ServletController.invoke (ServletController.java:160) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke (AbstractCXFServlet.java:170) at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost (AbstractCXFServlet.java:148) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 763) at javax.servlet.http.HttpServlet.service(HttpServlet.java: 856) at org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:362) at org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:726) at org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content (HttpConnection.java:842) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730) at org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:205) at org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:395) at org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:450) Caused by: java.lang.IllegalArgumentException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation (AbstractInvoker.java:124) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractI
Re: Different bevaviour in 2.0.4
Hi Dan THere doesn't seem to be a difference in the messages. CXF 2.0.4 = 02-Feb-2008 12:46:56 org.apache.cxf.interceptor.LoggingInInterceptor logging INFO: Inbound Message Encoding: UTF-8 Headers: {Host=[192.168.10.61:9530], User-Agent=[Java/1.5.0_13], connection=[keep-alive], SOAPAction=[""], transfer-encoding= [chunked], Pragma=[no-cache], content-type=[text/xml; charset=UTF-8], Cache-Control=[no-cache], Accept=[*]} Messages: Message: Payload: http://schemas.xmlsoap.org/soap/ envelope/">xmlns:ns2="http://model.remoting.commons.surgex.com";>TESTns2:serviceName>passwordns1:credential>SW7 7ET>falsesoap:Body> -- 02-Feb-2008 12:46:56 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Application has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookupUK( com.surgex.commons.remoting.model.Credential,java.lang.String,java.util. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.comm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.remo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. at org.apache.cxf.service.invoker.AbstractInvoker.createFault (AbstractInvoker.java:109) at org.apache.cxf.jaxws.JAXWSMethodInvoker.createFault (JAXWSMethodInvoker.java:76) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:101) at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke (JAXWSMethodInvoker.java:100) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:68) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run (ServiceInvokerInterceptor.java:56) at org.apache.cxf.workqueue.SynchronousExecutor.execute (SynchronousExecutor.java:37) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage (ServiceInvokerInterceptor.java:92) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) at org.apache.cxf.transport.ChainInitiationObserver.onMessage (ChainInitiationObserver.java:77) at org.apache.cxf.transport.servlet.ServletDestination.doMessage (ServletDestination.java:79) at org.apache.cxf.transport.servlet.ServletController.invokeDestination (ServletController.java:264) at org.apache.cxf.transport.servlet.ServletController.invoke (ServletController.java:160) at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke (AbstractCXFServlet.java:170) at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost (AbstractCXFServlet.java:148) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:362) at org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:726) at org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content (HttpConnection.java:842) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730) at org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:205) at org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:395) at org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:450) Caused by: java.lang.IllegalArgumentException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation (AbstractInvoker.java:124) at org.apache.cxf.service.invoker.AbstractInvoker.invoke (AbstractInvoker.java:82) ... 27 more 02-Feb-2008 12:46:56 org.apache.cxf.interceptor.LoggingOutInterceptor $LoggingCallback onClose INFO: Outbound Message --- Encoding: UTF-8 Headers: {} Messages: Payload: http://schemas.xmlsoap.org/soap/ envelope/">soap:Serverfaultcode>null while invoking public com.surgex.addresslookup.model.UKAddre
Re: Different bevaviour in 2.0.4
Hi Dan A bit more info that can help. I'm using Spring 2.5.1 and Aegis Data binding. CXF is on both side of the wire. The Spring config I use to set up the client side is as follows: http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:jaxws="http://cxf.apache.org/jaxws"; xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/ beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd";> class="com.surgex.addresslookup.service.IAddressLookupService" factory-bean="clientFactory" factory-method="create"/> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> value="com.surgex.addresslookup.service.IAddressLookupService"/> http://192.168.10.60:9520/ remoting/soap/AddressLookupService"/> class="org.apache.cxf.aegis.databinding.AegisDatabinding"/> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/> class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/> What do you mean by "wire trace"? Happy to provide more info though if I can get it. Thx. On 1 Feb 2008, at 02:57, Daniel Kulp wrote: Hmm... That's really not good. Is there any chance you can get a wire trace of the test with both 2.0.3 and 2.0.4? Is it CXF on both sides of the wire? There were some updates to the fault handling/mapping to make it honor the elementFormDefault flags of the schemas. Thus, the fault messages don't match the schema, there could be problems. Dan On Thursday 31 January 2008, Frederic Soulier wrote: Hi I've been using 2.0.3 with good success and I decided to upgrade to 2.0.4 this morning. I'm having problem running my tests which are failing now with: Testcase: test5SoapRemoting (com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest ) : Caused an ERROR [junit] null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit] javax.xml.ws.soap.SOAPFaultException: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit]at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:175) [junit]at $Proxy21.lookupUK(Unknown Source) [junit]at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest. e xe cuteTests(AddressLookupServiceIntegrationTest.java:217) [junit]at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest. t es t5SoapRemoting(AddressLookupServiceIntegrationTest.java:158) [junit]at org.springframework.test.ConditionalTestCase.runBare (ConditionalTestCase.java:76) [junit] Caused by: org.apache.cxf.binding.soap.SoapFault: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit]at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand l eM essage(Soap11FaultInInterceptor.java:70) [junit]at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand l eM essage(Soap11FaultInInterceptor.java:3
Re: Different bevaviour in 2.0.4
Ah maybe that's better info. Going back to the default bindings (commenting out the Aegis stuff) I get: Testcase: test5SoapRemoting (com.surgex.mafaddresslookup.service.AddressLookupServiceIntegrationTest ): Caused an ERROR [junit] Marshalling Error: java.util.Map is not known to this context [junit] javax.xml.ws.soap.SOAPFaultException: Marshalling Error: java.util.Map is not known to this context [junit] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:175) [junit] at $Proxy30.lookupUK(Unknown Source) [junit] at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest.exe cuteTests(AddressLookupServiceIntegrationTest.java:216) [junit] at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest.tes t5SoapRemoting(AddressLookupServiceIntegrationTest.java:158) [junit] at org.springframework.test.ConditionalTestCase.runBare (ConditionalTestCase.java:76) [junit] Caused by: org.apache.cxf.interceptor.Fault: Marshalling Error: java.util.Map is not known to this context [junit] at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall (JAXBEncoderDecoder.java:207) [junit] at org.apache.cxf.jaxb.io.DataWriterImpl.write (DataWriterImpl.java:63) [junit] at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts( AbstractOutDatabindingInterceptor.java:84) [junit] at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage (BareOutInterceptor.java:68) [junit] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) [junit] at org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:276) [junit] at org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:222) [junit] at org.apache.cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:73) [junit] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:135) [junit] Caused by: javax.xml.bind.MarshalException [junit] - with linked exception: [junit] [javax.xml.bind.JAXBException: java.util.Map is not known to this context] [junit] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:295) [junit] at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal (MarshallerImpl.java:221) [junit] at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal (AbstractMarshallerImpl.java:70) [junit] at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject (JAXBEncoderDecoder.java:360) [junit] at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall (JAXBEncoderDecoder.java:187) [junit] Caused by: javax.xml.bind.JAXBException: java.util.Map is not known to this context [junit] at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError (XMLSerializer.java:223) [junit] at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError (XMLSerializer.java:238) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl $1.serializeBody(ElementBeanInfoImpl.java:85) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl $1.serializeBody(ElementBeanInfoImpl.java:127) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody (ElementBeanInfoImpl.java:244) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot (ElementBeanInfoImpl.java:251) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot (ElementBeanInfoImpl.java:33) [junit] at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot (XMLSerializer.java:461) [junit] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:292) [junit] Caused by: javax.xml.bind.JAXBException: java.util.Map is not known to this context [junit] at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo (JAXBContextImpl.java:538) [junit] at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl $1.serializeBody(ElementBeanInfoImpl.java:82) [junit] Test com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest FAILED On 1 Feb 2008, at 11:25, Frederic Soulier wrote: Hi Dan A bit more info that can help. I'm using Spring 2.5.1 and Aegis Data binding. CXF is on both side of the wire. The Spring config I use to set up the client side is as follows: http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:jaxws="http://cxf.apache.org/jaxws"; xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/ beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd";> class="com.surgex.addresslookup.service.IAddressLookupService" factory-bean="clientFactory" factory-method="c
Re: Different bevaviour in 2.0.4
Hi Dan A bit more info that can help. I'm using Spring 2.5.1 and Aegis Data binding. CXF is on both side of the wire. The Spring config I use to set up the client side is as follows: http://www.springframework.org/schema/beans"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:jaxws="http://cxf.apache.org/jaxws"; xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/ beans/spring-beans-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd";> class="com.surgex.addresslookup.service.IAddressLookupService" factory-bean="clientFactory" factory-method="create"/> class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> value="com.surgex.addresslookup.service.IAddressLookupService"/> http://192.168.10.60:9520/ remoting/soap/AddressLookupService"/> class="org.apache.cxf.aegis.databinding.AegisDatabinding"/> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean"> class="org.apache.cxf.jaxws.support.JaxWsServiceConfiguration"/> class="org.apache.cxf.aegis.databinding.AegisServiceConfiguration"/> class="org.apache.cxf.service.factory.DefaultServiceConfiguration"/> What do you mean by "wire trace"? Happy to provide more info though if I can get it. Thx. On 1 Feb 2008, at 02:57, Daniel Kulp wrote: Hmm... That's really not good. Is there any chance you can get a wire trace of the test with both 2.0.3 and 2.0.4? Is it CXF on both sides of the wire? There were some updates to the fault handling/mapping to make it honor the elementFormDefault flags of the schemas. Thus, the fault messages don't match the schema, there could be problems. Dan On Thursday 31 January 2008, Frederic Soulier wrote: Hi I've been using 2.0.3 with good success and I decided to upgrade to 2.0.4 this morning. I'm having problem running my tests which are failing now with: Testcase: test5SoapRemoting (com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest ) : Caused an ERROR [junit] null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit] javax.xml.ws.soap.SOAPFaultException: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit]at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:175) [junit]at $Proxy21.lookupUK(Unknown Source) [junit]at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest. e xe cuteTests(AddressLookupServiceIntegrationTest.java:217) [junit]at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest. t es t5SoapRemoting(AddressLookupServiceIntegrationTest.java:158) [junit]at org.springframework.test.ConditionalTestCase.runBare (ConditionalTestCase.java:76) [junit] Caused by: org.apache.cxf.binding.soap.SoapFault: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookup U K( com.surgex.commons.remoting.model.Credential,java.lang.String,java.ut i l. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.c o mm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.r e mo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit]at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand l eM essage(Soap11FaultInInterceptor.java:70) [junit]at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.hand l eM essage(Soap11FaultInInterceptor.java:3
Different bevaviour in 2.0.4
Hi I've been using 2.0.3 with good success and I decided to upgrade to 2.0.4 this morning. I'm having problem running my tests which are failing now with: Testcase: test5SoapRemoting (com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest): Caused an ERROR [junit] null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookupUK( com.surgex.commons.remoting.model.Credential,java.lang.String,java.util. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.comm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.remo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit] javax.xml.ws.soap.SOAPFaultException: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookupUK( com.surgex.commons.remoting.model.Credential,java.lang.String,java.util. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.comm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.remo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:175) [junit] at $Proxy21.lookupUK(Unknown Source) [junit] at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest.exe cuteTests(AddressLookupServiceIntegrationTest.java:217) [junit] at com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest.tes t5SoapRemoting(AddressLookupServiceIntegrationTest.java:158) [junit] at org.springframework.test.ConditionalTestCase.runBare (ConditionalTestCase.java:76) [junit] Caused by: org.apache.cxf.binding.soap.SoapFault: null while invoking public com.surgex.addresslookup.model.UKAddress[] com.surgex.addresslookup.service.impl.AddressLookupServiceImpl.lookupUK( com.surgex.commons.remoting.model.Credential,java.lang.String,java.util. Map,boolean) throws com.surgex.commons.remoting.exceptions.RemotingException,com.surgex.comm ons.remoting.exceptions.InvalidArgumentException,com.surgex.commons.remo ting.exceptions.UnauthorisedAccessException with params [null, null, null, null]. [junit] at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleM essage(Soap11FaultInInterceptor.java:70) [junit] at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleM essage(Soap11FaultInInterceptor.java:35) [junit] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) [junit] at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage (AbstractFaultChainInitiatorObserver.java:96) [junit] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMes sage(ReadHeadersInterceptor.java:183) [junit] at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMes sage(ReadHeadersInterceptor.java:56) [junit] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) [junit] at org.apache.cxf.endpoint.ClientImpl.onMessage (ClientImpl.java:429) [junit] at org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.handleResponse(HTTPConduit.java:1955) [junit] at org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.close(HTTPConduit.java:1791) [junit] at org.apache.cxf.transport.AbstractConduit.close (AbstractConduit.java:66) [junit] at org.apache.cxf.transport.http.HTTPConduit.close (HTTPConduit.java:575) [junit] at org.apache.cxf.interceptor.MessageSenderInterceptor $MessageSenderEndingInterceptor.handleMessage (MessageSenderInterceptor.java:62) [junit] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept (PhaseInterceptorChain.java:208) [junit] at org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:276) [junit] at org.apache.cxf.endpoint.ClientImpl.invoke (ClientImpl.java:222) [junit] at org.apache.cxf.frontend.ClientProxy.invokeSync (ClientProxy.java:73) [junit] at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:135) [junit] Test com.surgex.addresslookup.service.AddressLookupServiceIntegrationTest FAILED If I downgrade the CXF jar file back to 2.0.3 the tests run again. Any idea what I'm missing or what's triggering this behaviour? Thx a lot for any help. -- This email is intended for the recipients only and should not be copied, forwarded or otherwise distributed to third parties without the consent of the original author. Frederic Soulier <[EMAIL PROTECTED]> Senior Vice-President Casino Cecure Gaming Ltd. 23 Clayton Rd. Hayes. Middlesex. UB3 1AN. United Kingdom (Mob) +44(0)7967966490 (Tel) +44(0)2088171444 (Fax) +4