Spring MVC:将JAXB添加到类路径中,以便自动序列化XML

时间:2010-09-13 17:27:30

标签: spring maven-2 spring-mvc xml-serialization jaxb

根据Spring MVC文档,<mvc:annotation-driven/>如果Jackson在类路径中,则配置对JSON的支持,如果类路径中存在JAXB,则支持XML。只需在我的pom.xml中添加Jackson依赖项,我就可以获得JSON支持! (见:Ajax Simplification in Spring 3.0

但是,尝试使用接受标头“application / xml”访问相同的服务后,我得到406 Not Acceptable响应。在类路径中获取JAXB的最简单方法是什么?什么是启用XML MarshallingHttpMessageConverter支持?

更新

看一下AnnotationDrivenBeanDefinitionParser,我可以看看是什么定义了“jaxb2Present”。我在第179行设置了一个断点,看看Jaxb2RootElementHttpMessageConverter是否确实像MappingJacksonHttpMessageConverter一样被注册。它不是......

将JAXB添加到类路径以使其自动序列化我的XML请求的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

它应该工作。确保返回的对象具有JAXB所需的@XmlRootElement注释。

答案 1 :(得分:0)

如果您使用的是Java 6,则JAXB已经在类路径中。如果您使用的是Java 5,则需要自己添加reference implementation

如果你正在使用Maven,你可以添加到你的pom.xml:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2</version>
</dependency>