Spring WS с Jaxb2Marshaller — javax.activation. DataHandler.Обработчик данных NoClassDefFoundError

#jaxb #spring-ws

#jaxb #spring-ws

Вопрос:

Мы пытаемся внедрить Jaxb2Marshaller в наш проект веб-сервиса, но получаем java.lang.Нет ошибки в classdeffounderror для класса javax.activation.DataHandler, однако зависимость от артефакта активации существует, и мы убедились, что 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>
  

Как всегда, помощь действительно ценится.

Редактировать—————

Это происходит только тогда, когда приложение развернуто в Tomcat 6.

Комментарии:

1. Что произойдет, если вы удалите это исправление?

2. @skaffman: Ничего, та же ошибка. Я удалю комментарий к редактированию, чтобы никто не запутался, поскольку он, по-видимому, не связан.

3. Возможно, вы также захотите удалить «исправление», тогда это просто отвлекающий маневр.

Ответ №1:

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>3.2.6.RELEASE</version>
    </dependency>
  

используйте это, оно будет поддерживать для u

Ответ №2:

Я только что заметил, что у меня были более старые версии jaxb-api.jar и jaxb-impl.jar в папке, одобренной Tomcat, чем те, которые я использую в приложении. Есть два способа решения этой проблемы; Первый — удалить jar-файлы из одобренной папки, а затем добавить jaxb в качестве зависимости времени выполнения от POM проектов:

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

Второй способ заключается просто в обновлении jar-файлов в одобренной папке до более новых версий (в моем случае ее версии 2.2.2).

Это исправляет проблему.

Надеюсь, это кому-то поможет.