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
>

Reply via email to