Adding localName to the RequestWrapper/ResponseWrapper took care of it, for both cases.
Thanks! On Thu, Jul 21, 2011 at 4:45 PM, Daniel Kulp <[email protected]> wrote: > > Can you add localName attributes to those? > > @RequestWrapper(localName="myBarMethod", > targetNamespace="http://com.bar") > > @ResponseWrapper(localName="myBarMethodResponse" > targetNamespace="http://com.bar") > > And seeing if that helps. If so, try removing them and then adding the > name > attribute to the @WebMethod. > > Looking at the code, I think it needs to have one of those defined, but > I'd > like to verify that. > > Dan > > > > On Thursday, July 21, 2011 4:41:03 PM Algirdas Veitas wrote: > > Hi Daniel, > > > > In doing a bit more experimentation, it looks like the "issue" manifests > > itself even if you are not extending an interface. The following service > > interface, results in the same issue: > > > > package com; > > @WebService > > public interface UberService > > { > > @WebMethod > > @RequestWrapper(targetNamespace="http://com.bar") > > @ResponseWrapper(targetNamespace="http://com.bar") > > String myBarMethod(String x); > > } > > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns=" > > http://com/" elementFormDefault="unqualified" targetNamespace=" > http://com/" > > version="1.0"> > > <xs:element name="myBarMethod" type="tns:myBarMethod"/> > > <xs:element name="myBarMethodResponse" type="tns:myBarMethodResponse"/> > > <xs:complexType name="myBarMethod"> > > <xs:sequence> > > <xs:element minOccurs="0" name="arg0" type="xs:string"/> > > </xs:sequence> > > </xs:complexType> > > <xs:complexType name="myBarMethodResponse"> > > <xs:sequence> > > <xs:element minOccurs="0" name="return" type="xs:string"/> > > </xs:sequence> > > </xs:complexType> > > </xs:schema> > > > > Thanks, > > Al > > > > On Thu, Jul 21, 2011 at 3:59 PM, Algirdas Veitas <[email protected]> > wrote: > > > Hi Daniel, > > > > > > Thanks for the response. I added the @RequestWrapper/@ResponseWrapper > > > as > > > recommended, but the outcome is the same: the wrapper's are not being > > > put > > > into the proper namespace :( > > > > > > Here are the updated Java interfaces: > > > > > > > > > @WebService(targetNamespace="http://com.foo") > > > public interface FooService { > > > > > > @WebMethod > > > @RequestWrapper(targetNamespace="http://com.foo") > > > @ResponseWrapper(targetNamespace="http://com.foo") > > > > > > @WebResult(targetNamespace="http://com.foo") > > > String myFooMethod(String x); > > > > > > } > > > > > > @WebService(targetNamespace="http://com.bar") > > > public interface BarService { > > > > > > @WebMethod > > > @RequestWrapper(targetNamespace="http://com.bar") > > > @ResponseWrapper(targetNamespace="http://com.bar") > > > > > > @WebResult(targetNamespace="http://com.bar") > > > String myBarMethod(String x); > > > > > > } > > > > > > Thanks, > > > Al > > > > > > On Thu, Jul 21, 2011 at 3:39 PM, Daniel Kulp <[email protected]> wrote: > > >> You may need to also add @RequestWrapper/@ResponseWrapper annotations > > >> to > > >> the > > >> methods to define the namespaces used for the generated wrappers. > > >> The > > >> @WebResult/@WebParam annotations define them for the elements IN the > > >> request/response wrapper sequences (for example, you see the line: > > >> > > >> <xs:element minOccurs="0" ref="ns2:return"/> > > >> > > >> to refer to the element in a different namespace). The other > > >> annotations > > >> would generate the appropriate wrapper elements in their appropriate > > >> namespace. > > >> > > >> Dan > > >> > > >> On Thursday, July 21, 2011 10:30:03 AM Algirdas Veitas wrote: > > >> > Hi, > > >> > > > >> > Am hoping someone can give me a hand with a potential issue (or a > > >> > misunderstanding on my part) with java2ws with respect to the > > >> > target > > >> > namespaces being generated for the operation message types. > > >> > > > >> > Some background: We have a requirement to move roughly 15 web > > >> > services > > >> > > >> from > > >> > > >> > "Code-First" to "Contract-First". In addition, we now need to > > >> > collapse these 15 web services into 1 big WSDL (not my choice). > > >> > To date we have > > >> > > >> been > > >> > > >> > using java2ws via the cxf-java2ws-plugin (2.3.1) to generate the > > >> > WSDL > > >> > > >> for > > >> > > >> > each of our services. > > >> > > > >> > Now, to boil this (potential) issue (or misunderstanding) down to > > >> > a > > >> > > >> small > > >> > > >> > size, let say we have 2 existing Web Services and that we need > > >> > collapse > > >> > > >> into > > >> > > >> > 1 WSDL and then move away from Code-First. Here are there > > >> > definitions: > > >> > > > >> > package com.foo; > > >> > @WebService(targetNamespace="http://com.foo") > > >> > public interface FooService { > > >> > > > >> > @WebMethod > > >> > @WebResult(targetNamespace="http://com.foo") > > >> > String myFooMethod(String x); > > >> > > > >> > } > > >> > > > >> > package com.bar; > > >> > @WebService(targetNamespace="http://com.bar") > > >> > public interface BarService { > > >> > > > >> > @WebMethod > > >> > @WebResult(targetNamespace="http://com.bar") > > >> > String myBarMethod(String x); > > >> > > > >> > } > > >> > > > >> > After running java2ws on these 2 services, we see that the > > >> > > >> targetNamespace > > >> > > >> > for elements and complexTypes "myBarMethod" and "myBarResponse" > > >> > are " > > >> > http://com.bar", which is expected (some attributes and other > > >> > elements > > >> > removed for clarity): > > >> > > > >> > <xs:schema xmlns:tns="http://com.bar" > > >> > targetNamespace="http://com.bar" > > >> > version="1.0"> > > >> > <xs:element name="myBarMethod" type="tns:myBarMethod"/> > > >> > <xs:element name="myBarMethodResponse" > > >> > type="tns:myBarMethodResponse"/> <xs:complexType > > >> > name="myBarMethod"> > > >> > > > >> > <xs:sequence> > > >> > > > >> > <xs:element minOccurs="0" name="arg0" > > >> > type="xs:string"/> > > >> > > > >> > </xs:sequence> > > >> > > > >> > </xs:complexType> > > >> > > > >> > </xs:schema> > > >> > > > >> > > > >> > Now, our solution to merge all of these services into one WSDL was > > >> > to > > >> > initially generate the WSDL using java2ws and then migrate our > > >> > infrastructure away from java2ws to start using wsdl2java. The > > >> > > >> following > > >> > > >> > solution seemed to be the most efficient to get us there. We > > >> > would > > >> > basically create a temporary UberService interface that extended > > >> > > >> FooService > > >> > > >> > and BarService like so to generate the 1 big WSDL > > >> > > > >> > package com; > > >> > @WebService > > >> > public interface UberService > > >> > > > >> > extends FooService , BarService { > > >> > > > >> > } > > >> > > > >> > We then process UberService via java2ws and a UberService.wsdl is > > >> > > >> generated > > >> > > >> > and all methods from each service are merged into one WSDL, > > >> > exactly what > > >> > > >> we > > >> > > >> > wanted. However, we did notice that element/complexType > > >> > "myBarMethod" , "myBarMethodResponse" , "myFooMethod" and > > >> > "myFooMethodResponse" are now > > >> > > >> in > > >> > > >> > the "http://com" namespace instead of the expected http://com.bar > > >> > and > > >> > http://com.foo namespaces respectively > > >> > > > >> > The 3 WSDL's are attached.... > > >> > > > >> > It seems like java2ws in this situation (processing an interface > > >> > that > > >> > extends other interfaces annotated with @WebService) is ignoring > > >> > the > > >> > targetNamespace that is defined for both FooService and > > >> > BarService. > > >> > > >> There > > >> > > >> > may be a good reason for doing this (specifications, etc) but am > > >> > not > > >> > > >> sure if > > >> > > >> > it is a bug or a feature or PEBKAC :) > > >> > > > >> > Anyone have any thoughts? > > >> > > > >> > Al > > >> > > >> -- > > >> Daniel Kulp > > >> [email protected] > > >> http://dankulp.com/blog > > >> Talend - http://www.talend.com > -- > Daniel Kulp > [email protected] > http://dankulp.com/blog > Talend - http://www.talend.com >
