我使用 spring web 3.1.1 和 spring oxm 3.1.1。
当 jaxb2marshaller 尝试将 xml 源解组为对象时发生异常。
2012-12-03 13:38:41,152[k.c.s.s.c.r.AuthenticationController:154][ERROR] JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException: Namespace URIs and local names to the unmarshaller needs to be interned
org.springframework.oxm.UnmarshallingFailureException: JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException: Namespace URIs and local names to the unmarshaller needs to be interned
at org.springframework.oxm.jaxb.Jaxb2Marshaller.convertJaxbException(Jaxb2Marshaller.java:761) ~[org.springframework.oxm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:682) ~[org.springframework.oxm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:665) ~[org.springframework.oxm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
我像这样在我的 sevlet 设置上配置了 jaxb2 marshall。
<oxm:jaxb2-marshaller id="marshaller">
<oxm:class-to-be-bound name="kr.co.skcomms.simon.bean.rest.Authentication" />
</oxm:jaxb2-marshaller>
并在控制器上尝试像这样解组。
@Autowired
public Jaxb2Marshaller marshaller;
....
Source source = new StreamSource(new StringReader(body));
Authentication authentication = (Authentication) marshaller.unmarshal(source);
和我的身份验证对象。
@XmlRootElement
public class Authentication {
private String simon_auth;
private String client_ip;
private String request_url;
public Authentication(){
}
@XmlElement
public String getSimon_auth() {
return simon_auth;
}
public void setSimon_auth(String simon_auth) {
this.simon_auth = simon_auth;
}
@XmlElement
public String getClient_ip() {
return client_ip;
}
public void setClient_ip(String client_ip) {
this.client_ip = client_ip;
}
@XmlElement
public String getRequest_url() {
return request_url;
}
public void setRequest_url(String request_url) {
this.request_url = request_url;
}
}
我参考了这篇文章.. http://www.ibm.com/developerworks/webservices/library/wa-spring3webserv/index.html
我认为我的来源与文章的示例代码完全相同。
但效果不好。
我感谢您的帮助。