java - JAXB 注释 RootElement

标签 java xml jakarta-ee jaxb

我有以下 POJO ,根元素没有显示在 xml 文件中(通过 SOAP jax-ws 调用发送),有人可以指出问题吗?

@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;

xml文件看起来像

            <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>     <-----------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>

用于返回对象的代码是

@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;  
        }  

}

最佳答案

回答我自己的问题

这是 JAX-WS (JRS181) @WebResult 的默认实现

@Retention(value=RetentionPolicy.RUNTIME)
@Target({METHOD})
public @interface WebResult {

    String name() default "return";
    String targetNamespace() default "";
    boolean header() default false;
    String partName() default "";
}

如您所见,“return”是默认的。 更改为@WebResult( name = "CATALOGUE") 解决了问题

关于java - JAXB 注释 RootElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808125/

相关文章:

java - Android伪跨编码崩溃

java - 获取数组错误和流条件的键

c# - 通过 C# 将消息放入 Websphere MQ 与手动放置相同的消息具有不同的数据长度

mysql - 导入 XML 文件以创建 DB Schema 并输入信息

java - 如何使用 XMLStreamReader 在 Java 中解析多个 XML 文件

java - Spring Data Elasticsearch 外部 ES 服务器

java - gson.toJson(object) BigDecimal 精度丢失

jakarta-ee - struts2 junit 2.3.12 插件 - 无法在 struts2 junit4 中编写成功测试

java - 为什么托管 bean 方法在发布请求中的过滤器调用之前调用

Java jersey glassfish (payara) 休息 : get status on running async method