是否可以在JAXB Binding类中包含内置的ServletContext注释?

时间:2012-08-07 12:41:12

标签: jaxb jaxb2

以下是我在JAXB Unmarshalling过程中使用的JAXB Binding类。

package com;

@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class CustAcct {

    @XmlAttribute
    private String cust;

    @XmlAttribute
    private String acct;



    public CustAcct() {

        super();
    }

    public String getCust() {

        return cust;
    }

    public void setCust(String s) {

        cust = s;
    }

    public String getAcct() {

        return acct;
    }

    public void setAcct(String s) {

        acct = s;
    }

}

现在我的问题是,我无法在上面的类中包含注释@Context ServletContext。

public class CustAcct {

    @XmlAttribute
    private String cust;


    @XmlAttribute
    private String acct;

                @Context
    ServletContext cont ; 

我收到了此消息

的异常
javax.servlet.servletcontext is an interface and jaxb can't handle interfaces

请告诉我是否可以在JAXB Binding类中包含内置的ServletContext注释?

提前致谢。

我试过这种方式,

@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.FIELD)
public class CustAcct {

    @XmlAttribute
    private String acct;

    @XmlTransient
    @Context
    ServletContext con;

    public CustAcct() {

        super();
    }

    public String getAcct() {
    return acct;
    }

    public void setAcct(String s) {
    acct = s;
    }

}

但是当我尝试在Jersey服务中访问它时,我得到以下异常

SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java.lang.NullPointerException

1 个答案:

答案 0 :(得分:1)

您可以使用@XmlTransient注释该字段。这可以防止您的JAXB(JSR-222)实现将其视为映射数据。

了解更多信息