Spring WS with JAXB2Marshaller-javax.activation.DataHandler NoClassDefFoundError

Spring WS with JAXB2Marshaller-javax.activation.DataHandler NoClassDefFoundError,jaxb,spring-ws,Jaxb,Spring Ws,我们正试图在我们的webservice项目中实现一个JAXB2Marshaller,但是我们在类javax.activation.DataHandler上得到了一个java.lang.NoClassDefFoundError,但是对activation工件的依赖性存在,并且我们已经验证了activation.jar实际上正在部署中,所以这是由其他原因造成的 以下是应用程序配置: <sws:annotation-driven /> <sws:dynamic-wsdl i

我们正试图在我们的webservice项目中实现一个JAXB2Marshaller,但是我们在类javax.activation.DataHandler上得到了一个java.lang.NoClassDefFoundError,但是对activation工件的依赖性存在,并且我们已经验证了activation.jar实际上正在部署中,所以这是由其他原因造成的

以下是应用程序配置:

<sws:annotation-driven />

    <sws:dynamic-wsdl id="security" portTypeName="security" locationUri="/">                               
        <sws:xsd location="classpath:security-service.xsd"/>                                                  
    </sws:dynamic-wsdl>

    <bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter">
        <constructor-arg ref="marshaller" />
    </bean>

    <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound" >
            <list>
                <value>com.app.model.SimpleRoleList</value>
            </list>
        </property>
        <property name="schema" value="classpath:types.xsd"/>
    </bean>

com.app.model.SimpleRoleList
和往常一样,我们非常感谢你的帮助

编辑--------------


只有当应用程序部署到Tomcat 6上时才会发生这种情况。

我刚刚注意到,在Tomcat的认可文件夹中,我使用的版本比我在应用程序上使用的版本要旧jaxb api.jarjaxb impl.jar。 有两种方法可以解决这个问题;第一种方法是从认可的文件夹中删除JAR,然后将jaxb添加为项目POM的运行时依赖项:

<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.2.2</version>
</dependency>

com.sun.xml.bind
jaxb impl
2.2.2
第二种方法是将认可文件夹中的JAR更新为新版本(在我的例子中是版本2.2.2)

这就解决了问题

希望对某人有所帮助。


     <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
org.springframework 弹簧oxm 3.2.6.1发布

使用此选项,它将支持u

如果删除该修复程序会发生什么?@skaffman:没有,相同的错误。我将删除编辑评论,这样就不会有人感到困惑,因为它显然不相关。你可能也想删除“修复”,那么,这只是分散注意力。