Reputation: 5614
I have the following POJO , and the root element is not showing in the xml file (send over SOAP jax-ws call), can people point out the problem please?
@XmlRootElement(name = "CATALOGUE")
@XmlAccessorType( XmlAccessType.FIELD )
public class Catalogue implements Serializable, Comparable<Catalogue>
{
@XmlTransient
private Integer catalogueId;
@XmlElement( name = "COMMENT", required = false, nillable = false )
private String catalogueComment;
@XmlElement( name = "VERSION", required = false, nillable = false )
private String catalogueVersion;
@XmlElement( name = "VALID_FROM_DTS", required = false, nillable = false )
private Date catalogueValidFromDts;
@XmlElement( name = "CREATED_DTS", required = false, nillable = false )
private Date catalogueCreatedDts;
@XmlElementWrapper(name = "ITEMLIST")
@XmlElement(name = "ITEM")
private List<Item> itemList;
@XmlTransient
private Integer catalogueLifecyclePhase;
@XmlTransient
private Integer ownerId;
the xml file looks like
<COMMENT>LK</COMMENT>
<VERSION>4</VERSION>
<VALID_FROM_DTS>1990-01-25T00:00:00Z</VALID_FROM_DTS>
<CREATED_DTS>2012-05-14T15:49:38.655+01:00</CREATED_DTS>
<ITEMLIST>
<ITEM>
<NAME>Adult Period Pass Corsham</NAME>
<DESC>1 week</DESC>
<SKU>ACT-38</SKU>
<PRICE>15</PRICE>
<CATEGORIES>
<CATEGORY>
<CategoryName>Product</CategoryName>
<CategoryDate>1 week</CategoryDate>
<CategorySortOrder>0</CategorySortOrder>
</CATEGORY>
<CATEGORY>
<CategoryName>Product Type</CategoryName>
<CategoryDate>Coach</CategoryDate>
<CategorySortOrder>0</CategorySortOrder>
</CATEGORY>
.....................
i would expecting something like
<CATALOGUE> <-----------missing!!!
<COMMENT>LK</COMMENT>
<VERSION>4</VERSION>
<VALID_FROM_DTS>1990-01-25T00:00:00Z</VALID_FROM_DTS>
<CREATED_DTS>2012-05-14T15:49:38.655+01:00</CREATED_DTS>
<ITEMLIST>
<ITEM>
<NAME>Adult Period Pass Corsham</NAME>
<DESC>1 week</DESC>
<SKU>ACT-38</SKU>
<PRICE>15</PRICE>
<CATEGORIES>
<CATEGORY>
<CategoryName>Product</CategoryName>
<CategoryDate>1 week</CategoryDate>
<CategorySortOrder>0</CategorySortOrder>
</CATEGORY>
<CATEGORY>
<CategoryName>Product Type</CategoryName>
<CategoryDate>Coach</CategoryDate>
<CategorySortOrder>0</CategorySortOrder>
</CATEGORY>
.....................
</CATALOGUE>
The Code used to Return the Object is
@Stateless
@Remote
@WebService
public class CatalogueManagerSoapService
{
public CatalogueManagerSoapService()
{
// TODO Auto-generated constructor stub
}
@EJB
private SOAPExportService userService;
@WebMethod
public Catalogue getLatestCatalogue(
String username,
String password,
String catalogueName ) throws Exception
{
Catalogue c = CatManager.getCatalogue();
return c;
}
}
Upvotes: 2
Views: 425
Reputation: 5614
Answer my Own question
this is what the JAX-WS (JRS181) default implementation for @WebResult
@Retention(value=RetentionPolicy.RUNTIME)
@Target({METHOD})
public @interface WebResult {
String name() default "return";
String targetNamespace() default "";
boolean header() default false;
String partName() default "";
}
as you can see "return" is by default. change to @WebResult( name = "CATALOGUE") solved the problem
Upvotes: 1
Reputation: 1952
I think that you need a package-info.java file, try something like this:
@XmlSchema(namespace = "<your namespace>",
xmlns = @XmlNs(prefix = "<your prefix>", namespaceURI = "<your namespace>"),
elementFormDefault = XmlNsForm.QUALIFIED
)
@XmlAccessorType(XmlAccessType.NONE)
@XmlAccessorOrder(XmlAccessOrder.UNDEFINED)
package your.package.name;
import javax.xml.bind.annotation.XmlAccessOrder;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorOrder;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
just put it in the root of your package, edit as needed and generate the xsd again. Should be ok.
Upvotes: 0