If your type classes are in different packages (and this is often the
case), we have always done this,

package *com.acme.book.services.dvo;*

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;

/**
 * @project BookOrderManagerWS
 * @filename Publisher.java
 *
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Publisher",* namespace="http://dvo.services.book.acme.com/";
*)
public class Publisher {
....
....
.....
}

using the *namespace *attribute of the @XmlType annotation in our projects
to insure the namespace and package names align and it has always worked.

The generated XSDs wind up looking like this:

<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema"; xmlns:ns1="
http://webservices.book.acme.com/"; *xmlns:tns="
http://dvo.services.book.acme.com/"* *targetNamespace="
http://dvo.services.book.acme.com/"* version="1.0">
<xs:import namespace="http://webservices.book.acme.com/";
schemaLocation="BookOrderManagerService_schema1.xsd"/>
<xs:complexType name="BookOrder">
    <xs:sequence>
      <xs:element minOccurs="0" name="orderID" type="xs:string"/>
      <xs:element name="orderType" type="xs:int"/>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="books"
nillable="true" type="tns:Book"/>
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="Book">
    <xs:sequence>
      <xs:element minOccurs="0" name="bookID" type="xs:string"/>
      <xs:element minOccurs="0" name="bookTitle" type="xs:string"/>
      <xs:element minOccurs="0" name="authorName" type="xs:string"/>
      <xs:element minOccurs="0" name="ISBN" type="xs:string"/>
      <xs:element minOccurs="0" name="bookTypeCode" type="xs:string"/>
      <xs:element minOccurs="0" name="bookPublisher" type="tns:Publisher"/>
      <xs:element name="bookRetail" type="xs:float"/>
      <xs:element name="bookCost" type="xs:float"/>
      <xs:element name="pageCount" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
*<xs:complexType name="Publisher">*
    <xs:sequence>
      <xs:element minOccurs="0" name="publisherKey" type="xs:string"/>
      <xs:element minOccurs="0" name="publisherName" type="xs:string"/>
      <xs:element name="publisherID" type="xs:int"/>
      <xs:element minOccurs="0" name="publisherAddress" type="tns:Address"/>
    </xs:sequence>
</xs:complexType>


Is this what you're looking for?


On Wed, May 9, 2012 at 9:56 PM, Daniel Kulp <[email protected]> wrote:

> On Tuesday, May 08, 2012 03:51:05 PM rouble wrote:
> > CXF Gurus,
> >
> > If I have a java first web service:
> >
> > package com.example;
> >
> > @WebService
> > FooWebService {
> >     void updateItem(Item item);
> > }
> >
> > Where Item lives in:
> >
> > package com.somewhere.else;
> >
> > public class Item {
> > }
> >
> > If I deploy this web service, Item's namespace is the same as
> > FooWebService's namespace which is "http://example.com";. Is there a
> global
> > config which causes the data objects to have their namespace based on
> > their package?
>
> That should be the case.   At least if you put an @XmlType annotation on
> it.
> Can you whip up an example?
>
> Dan
>
>
> > I know I can have a package-info.java file in the Item's directory that
> > will override it's namespace - but I am wondering if there is a more
> > convenient way of achieving this behavior globally?
> >
> > tia,
> > rouble
> --
> Daniel Kulp
> [email protected] - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>
>


*Mark
*

Reply via email to