JAXB 2 spring-ws 2.0.3.RELEASE SOAP服务教程链接/建议请求

时间:2012-01-19 22:37:46

标签: xml spring jaxb spring-ws

我正在尝试使用JAXB 2和spring-ws 2.0.3在glassfish 3上创建SOAP服务。

我在使用xml文件配置时遇到了一些问题,因为有大量关于使这些软件包的旧版本运行的信息(教程,示例),但在较新版本上运行不多。

我已成功通过httpInvokerProxy远程处理服务获得客户端/服务器程序,但这些文件所需的配置量要多得多。

基本上我使用xjc maven工具从我的xml架构和spring-ws注释@PayloadRoot@EndPoint@ResponsePayload创建java类,以标记我的端点中的方法java类。我只是想确保我的wsdl文件在正确的URL上可用,并且正在接受soap请求并传递响应。

如果有人可以推荐一个好地方来获取这些信息,或者有心去浏览我的3个xml文件,我会非常感激。否则,这是在上传war文件后转到根servlet目录时遇到的错误。

  

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

我的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的依赖部分,因为它指出(正确地说)我在war文件中有spring 3.1和spring 3.5 jar。

<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>

1 个答案:

答案 0 :(得分:2)

异常消息引用方法

ConverterRegistry.addConverter(Class, Class, Converter)

此方法仅在Spring 3.1中引入(请参阅javadoc),因此您的设置中的某些内容假定存在Spring 3.1,但您似乎正在运行3.0。

您需要将Spring升级到3.1