No it is still the same. However I have found something interesting. It works if I change the operation name. Previously my operation name was the same than the element name used as input parameter (GetDevices). The generated SEI is now different and everything works. Is it a normal behavior?
On Tue, Dec 20, 2011 at 12:34 PM, Willem Jiang <[email protected]>wrote: > Can you check if the net.wgcorp.**deviceregistrysimple.**GetDevicesResponse > is changed ? > > On Tue Dec 20 18:02:19 2011, will mad wrote: > >> Hi Willem, >> I tried to re-generate the SEI but it does not change anything. Here is >> what it looks like : >> >> @WebService(targetNamespace = >> "http://wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple> >> ", >> name = "DeviceRegistryPortType") >> @XmlSeeAlso({ObjectFactory.**class}) >> public interface DeviceRegistryPortType { >> >> @RequestWrapper(localName = "GetDevices", targetNamespace = " >> http://wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple>", >> className = >> "net.wgcorp.**deviceregistrysimple.**GetDevices") >> @WebMethod(operationName = "GetDevices", action = "urn:#GetDevices") >> @ResponseWrapper(localName = "GetDevicesResponse", targetNamespace = " >> http://wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple>", >> className = >> "net.wgcorp.**deviceregistrysimple.**GetDevicesResponse") >> public void getDevices( >> @WebParam(name = "arg1", targetNamespace = "") >> java.lang.String arg1, >> @WebParam(mode = WebParam.Mode.OUT, name = "resp1", >> targetNamespace >> = "") >> javax.xml.ws.Holder<java.lang.**String> resp1, >> @WebParam(mode = WebParam.Mode.OUT, name = "resp2", >> targetNamespace >> = "") >> javax.xml.ws.Holder<java.lang.**String> resp2 >> ); >> } >> >> On Tue, Dec 20, 2011 at 8:43 AM, Willem Jiang<[email protected]>** >> wrote: >> >> Hi, >>> >>> It looks like you just change the WSDL, and didn't use the wsdl2java to >>> generate the new SEI. >>> Can you updated the generated SEI and try again ? >>> >>> >>> On Tue Dec 20 01:59:49 2011, will mad wrote: >>> >>> Hi, >>>> >>>> I have written a simple route that regularly send a soap message using >>>> cxf : >>>> >>>> from("timer:test?period=20000&****delay=5000").to("bean:** >>>> systemManagerBean?method=****getDevicesSimple"); >>>> >>>> >>>> Here is the operation in my systemManagerBean calling the cxf endpoint : >>>> public void getDevicesSimple() { >>>> Exchange senderExchange = new DefaultExchange(context, >>>> ExchangePattern.InOut); >>>> List<String> params = new ArrayList<String>(); >>>> params.add("a"); >>>> senderExchange.getIn().****setBody(params); >>>> senderExchange.getIn().****setHeader(CxfConstants.****OPERATION_NAME, >>>> >>>> "GetDevices"); >>>> Exchange responseExchange = >>>> producerTemplate.send("cxf:****bean:****cxfDeviceRegistryWsEndpoint?** >>>> >>>> synchronous=true", >>>> senderExchange); >>>> MessageContentsList messageContentsList = >>>> (MessageContentsList)****responseExchange.getOut().****getBody(); >>>> >>>> logger.debug("resp1 : " + messageContentsList.get(2)); >>>> logger.debug("resp2 : " + messageContentsList.get(3)); >>>> } >>>> >>>> I have a weird issue occurring when my wsdl specifies that there are 2 >>>> elements in the response. If I specify that there is only one element in >>>> the response, everything works perfectly. But if I add a second element >>>> in >>>> the response, I encounter the following exception : >>>> >>>> 2011-12-19 17:50:27,281 | WARN | org.apache.cxf.common.logging.**** >>>> LogUtils >>>> | Interceptor for { >>>> http://wgcorp.net/****DeviceRegistrySimple}**** >>>> DeviceRegistryPortTypeService#<http://wgcorp.net/**DeviceRegistrySimple%7D**DeviceRegistryPortTypeService#> >>>> **{http://wgcorp.net/****DeviceRegistrySimple}****GetDeviceshas<http://wgcorp.net/**DeviceRegistrySimple%7D**GetDeviceshas> >>>> <http://wgcorp.**net/DeviceRegistrySimple%** >>>> 7DDeviceRegistryPortTypeServic**e#%7Bhttp://wgcorp.net/** >>>> DeviceRegistrySimple%**7DGetDeviceshas<http://wgcorp.net/DeviceRegistrySimple%7DDeviceRegistryPortTypeService#%7Bhttp://wgcorp.net/DeviceRegistrySimple%7DGetDeviceshas> >>>> > >>>> thrown exception, unwinding now >>>> java.lang.****IndexOutOfBoundsException: Index: 1, Size: 1 >>>> at java.util.ArrayList.****RangeCheck(ArrayList.java:547) >>>> at java.util.ArrayList.get(****ArrayList.java:322) >>>> at >>>> org.apache.cxf.jaxws.****interceptors.****HolderInInterceptor.** >>>> handleMessage(****HolderInInterceptor.java:63) >>>> at >>>> org.apache.cxf.phase.****PhaseInterceptorChain.****doIntercept(** >>>> PhaseInterceptorChain.java:****243) >>>> at org.apache.cxf.endpoint.****ClientImpl.onMessage(** >>>> ClientImpl.java:733) >>>> at >>>> org.apache.cxf.transport.http.****HTTPConduit$**** >>>> WrappedOutputStream.** >>>> handleResponseInternal(****HTTPConduit.java:2286) >>>> at >>>> org.apache.cxf.transport.http.****HTTPConduit$**** >>>> WrappedOutputStream.** >>>> handleResponse(HTTPConduit.****java:2156) >>>> at >>>> org.apache.cxf.transport.http.****HTTPConduit$**** >>>> WrappedOutputStream.close(* >>>> *HTTPConduit.java:2010) >>>> at >>>> org.apache.cxf.transport.****AbstractConduit.close(** >>>> AbstractConduit.java:66) >>>> at >>>> org.apache.cxf.transport.http.****HTTPConduit.close(** >>>> HTTPConduit.**java:661) >>>> at >>>> org.apache.cxf.interceptor.****MessageSenderInterceptor$** >>>> MessageSenderEndingInterceptor****.handleMessage(** >>>> MessageSenderInterceptor.java:****62) >>>> at >>>> org.apache.cxf.phase.****PhaseInterceptorChain.****doIntercept(** >>>> PhaseInterceptorChain.java:****243) >>>> at org.apache.cxf.endpoint.****ClientImpl.invoke(ClientImpl.*** >>>> * >>>> java:516) >>>> at >>>> org.apache.camel.component.****cxf.CxfProducer.process(** >>>> CxfProducer.java:129) >>>> at >>>> org.apache.camel.impl.****SynchronousDelegateProducer.****process(** >>>> SynchronousDelegateProducer.****java:61) >>>> at >>>> org.apache.camel.impl.****converter.****AsyncProcessorTypeConverter$** >>>> ProcessorToAsyncProcessorBridg****e.process(**** >>>> AsyncProcessorTypeConverter.* >>>> *java:50) >>>> at >>>> org.apache.camel.processor.****UnitOfWorkProcessor.process(** >>>> UnitOfWorkProcessor.java:99) >>>> at >>>> org.apache.camel.util.****AsyncProcessorHelper.process(**** >>>> AsyncProcessorHelper.java:91) >>>> at >>>> org.apache.camel.processor.****DelegateAsyncProcessor.****process(** >>>> DelegateAsyncProcessor.java:****85) >>>> at >>>> org.apache.camel.processor.****UnitOfWorkProducer.process(** >>>> UnitOfWorkProducer.java:63) >>>> at >>>> org.apache.camel.impl.****ProducerCache$1.doInProducer(**** >>>> ProducerCache.java:333) >>>> at >>>> org.apache.camel.impl.****ProducerCache$1.doInProducer(**** >>>> ProducerCache.java:303) >>>> at >>>> org.apache.camel.impl.****ProducerCache.doInProducer(** >>>> ProducerCache.java:208) >>>> at >>>> org.apache.camel.impl.****ProducerCache.sendExchange(** >>>> ProducerCache.java:303) >>>> at org.apache.camel.impl.****ProducerCache.send(** >>>> ProducerCache.java:138) >>>> at >>>> org.apache.camel.impl.****DefaultProducerTemplate.send(**** >>>> DefaultProducerTemplate.java:****105) >>>> at >>>> org.apache.camel.impl.****DefaultProducerTemplate.send(**** >>>> DefaultProducerTemplate.java:****91) >>>> at >>>> net.eads.itcore.esb.pelco.****SystemManagerBean.****getDevicesSimple(** >>>> >>>> SystemManagerBean.java:204) >>>> ... >>>> >>>> >>>> Here is the wsdl (with two elements in the response "GetDevicesResponse" >>>> resp1and resp2) : >>>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> >>>> <wsdl:definitions name="DeviceRegistrySimple" >>>> targetNamespace="http://**wgco**rp.net/**DeviceRegistrySimple<http://wgcorp.net/**DeviceRegistrySimple> >>>> <**http://wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple> >>>> >" >>>> xmlns:soap=" >>>> http://schemas.xmlsoap.org/****wsdl/soap/<http://schemas.xmlsoap.org/**wsdl/soap/> >>>> <http://schemas.**xmlsoap.org/wsdl/soap/<http://schemas.xmlsoap.org/wsdl/soap/> >>>> > >>>> " >>>> xmlns:wsdl="http://schemas.**x**mlsoap.org/wsdl/<http://xmlsoap.org/wsdl/> >>>> <http://**schemas.xmlsoap.org/wsdl/ <http://schemas.xmlsoap.org/wsdl/> >>>> >" >>>> xmlns:tns=" >>>> http://wgcorp.net/****DeviceRegistrySimple<http://wgcorp.net/**DeviceRegistrySimple> >>>> <http://**wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple> >>>> > >>>> >>>> "> >>>> >>>> <!-- Types --> >>>> <wsdl:types> >>>> <xsd:schema targetNamespace="http://**wgco** >>>> rp.net/**DeviceRegistrySimple<http://wgcorp.net/**DeviceRegistrySimple> >>>> <**http://wgcorp.net/**DeviceRegistrySimple<http://wgcorp.net/DeviceRegistrySimple> >>>> > >>>> " >>>> >>>> xmlns:xsd="http://www.w3.org/****2001/XMLSchema<http://www.w3.org/**2001/XMLSchema> >>>> <http://www.w3.**org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>> >>>> >>>> "> >>>> >>>> <xsd:element name="GetDevices"> >>>> <xsd:complexType> >>>> <xsd:sequence> >>>> <xsd:element name="arg1" type="xsd:string" /> >>>> </xsd:sequence> >>>> </xsd:complexType> >>>> </xsd:element> >>>> <xsd:element name="GetDevicesResponse"> >>>> <xsd:complexType> >>>> <xsd:sequence> >>>> <xsd:element name="resp1" type="xsd:string" /> >>>> <xsd:element name="resp2" type="xsd:string" /> >>>> </xsd:sequence> >>>> </xsd:complexType> >>>> </xsd:element> >>>> </xsd:schema> >>>> </wsdl:types> >>>> >>>> <!-- Messages --> >>>> <wsdl:message name="GetDevices"> >>>> <wsdl:part name="parameters" element="tns:GetDevices" /> >>>> </wsdl:message> >>>> <wsdl:message name="GetDevicesResponse"> >>>> <wsdl:part name="parameters" element="tns:****GetDevicesResponse" /> >>>> >>>> </wsdl:message> >>>> >>>> <!-- Ports --> >>>> <wsdl:portType name="DeviceRegistryPortType"> >>>> <wsdl:operation name="GetDevices"> >>>> <wsdl:input message="tns:GetDevices" /> >>>> <wsdl:output message="tns:****GetDevicesResponse" /> >>>> >>>> </wsdl:operation> >>>> </wsdl:portType> >>>> >>>> <!-- Bindings --> >>>> <wsdl:binding name="DeviceRegistry" type="tns:**** >>>> DeviceRegistryPortType"> >>>> <soap:binding style="document" >>>> transport="http://schemas.**xm**lsoap.org/soap/http<http://xmlsoap.org/soap/http> >>>> <http://**schemas.xmlsoap.org/soap/http<http://schemas.xmlsoap.org/soap/http> >>>> >**" >>>> >>>> /> >>>> <wsdl:operation name="GetDevices"> >>>> <soap:operation >>>> soapAction="urn:#GetDevices" /> >>>> <wsdl:input> >>>> <soap:body use="literal" /> >>>> </wsdl:input> >>>> <wsdl:output> >>>> <soap:body use="literal" /> >>>> </wsdl:output> >>>> </wsdl:operation> >>>> </wsdl:binding> >>>> >>>> <wsdl:service name="DeviceRegistry"> >>>> <wsdl:port name="DeviceRegistry" binding="tns:DeviceRegistry"> >>>> <soap:address location="http://localhost:**** >>>> 60001/control/DeviceRegistry-**1<http://localhost:60001/** >>>> control/DeviceRegistry-1<http://localhost:60001/control/DeviceRegistry-1> >>>> > >>>> **" /> >>>> >>>> </wsdl:port> >>>> </wsdl:service> >>>> </wsdl:definitions> >>>> >>>> The cxf endpoint definition in camel context : >>>> >>>> <cxf:cxfEndpoint id="****cxfDeviceRegistryWsEndpoint" >>>> address="http://localhost:****60001/control/****DeviceRegistrySimple< >>>> http://**localhost:60001/control/**DeviceRegistrySimple<http://localhost:60001/control/DeviceRegistrySimple> >>>> > >>>> " >>>> serviceClass="net.wgcorp.****deviceregistrysimple.** >>>> >>>> DeviceRegistryPortType"> >>>> <cxf:properties> >>>> <entry key="dataFormat" value="POJO" /> >>>> </cxf:properties> >>>> </cxf:cxfEndpoint> >>>> >>>> The message is correctly sent to the distant endpoint, I receive the >>>> response but I have this WARN in my logs... Moreover the result message >>>> contents list is empty at index 0 and 1. Any ideas on what is wrong ? >>>> >>>> Thanks for your help. >>>> William >>>> >>>> >>>> >>> >>> -- >>> Willem >>> ------------------------------****---- >>> FuseSource >>> Web: http://www.fusesource.com >>> Blog: http://willemjiang.blogspot.****com<http://willemjiang.** >>> blogspot.com <http://willemjiang.blogspot.com>>(English) >>> >>> http://jnn.javaeye.com (Chinese) >>> Twitter: willemjiang Weibo: willemjiang >>> >>> >> > > > -- > Willem > ------------------------------**---- > FuseSource > Web: http://www.fusesource.com > Blog: > http://willemjiang.blogspot.**com<http://willemjiang.blogspot.com>(English) > http://jnn.javaeye.com (Chinese) > Twitter: willemjiang Weibo: willemjiang >
