Я пытаюсь использовать JAXB 2 и spring-ws 2.0.3 для создания службы SOAP на glassfish 3.
У меня возникли некоторые проблемы с конфигурациями файлов xml, поскольку существует масса информации (учебные пособия, примеры) о запуске более старых версий этих пакетов, но не о более новых версиях.
Я успешно получил клиент-серверные программы, работающие через службу удаленного взаимодействия httpInvokerProxy, но объем конфигурации, требуемый в этих файлах, значительно больше.
По сути, я использовал инструмент xjc maven для создания javaклассы из моей xml-схемы и аннотации spring-ws @PayloadRoot
, @EndPoint
и @ResponsePayload
, чтобы пометить методы в моем классе конечной точки Java.Я просто пытаюсь убедиться, что мой wsdl-файл доступен по правильному URL-адресу и что запросы на мыло принимаются и ответы доставляются.
Если кто-то может порекомендовать подходящее место для получения этой информации или иметь сердцепросмотреть мои 3 xml-файла я был бы очень признателен.Иначе, вот ошибка, которую я получаю при переходе в корневой каталог сервлета после загрузки файла war.
org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр класса bean [org.springframework.web.context.support.XmlWebApplicationContext]: конструктор сгенерировал исключение;вложенным исключением является java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter (Ljava / lang / Class; Ljava / lang / Class; Lorg / springframework / core / convert / converter / Converter
1016 *
Мои xml-файлы выглядят следующим образом:
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Licensing SOAP Service</display-name>
<servlet>
<servlet-name>licensingSOAPService</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>licensingSOAPService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
licensingSOAPService-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<import resource-"/applicationContext.xml"/>
<bean id = "licensingSOAPService" class="mypackage.soap.LicensingSOAPService">
</bean>
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<description>An endpoint mapping strategy that looks for @Endpoint and @PayloadRoot annotations.</description>
</bean>
<bean class="org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter">
<description>Enables the MessageDispatchServlet to invoke methods requiring OXM marshalling.</description>
<constructor-arg ref="marshaller"/>
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"
p:contextPath="mypackage.schemas" />
<bean id = "licensingWSDL" class ="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
<property name = "schema" ref = "schema">
<property name = "portTypeName" value = "licenseResource"/>
<property name = "locationUri" value ="/licensing/schema/" />
<property name = "targetNamespace" value = "mypackage/schemas" />
</bean>
<bean id ="schema" class ="org.springframework.xml.xsd.SimpleXsdSchema">
<property name ="xsd" value = "/licenseSchema.xsd"/>
</bean>
</beans>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sws="http://www.springframework.org/schema/web-services"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/web-services
http://www.springframework.org/schema/web-services/web-services-2.0.xsd">
<sws:annotation-driven />
<context:component-scan base-package="mypackagel.licensing"/>
</beans>
Кто-нибудь видит что-то явно не так с этими?
РЕДАКТИРОВАТЬ:
Хотел включить часть зависимости моего pom.xml, как было указано (правильно), что у меня есть обаВесна 3.1 И весна 3.5 банки в моем файле войны.
<repositories>
<repository>
<id>com.springsource.repository.bundles.release</id>
<name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
<url>http://repository.springsource.com/maven/bundles/release</url>
</repository>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.3</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>LicensingSOAPService</finalName>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>