【问题标题】:Caused by: java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.get(Ljava/lang/String;)Ljava/lang/Object引起:java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.get(Ljava/lang/String;)Ljava/lang/Object
【发布时间】:2017-11-08 09:23:20
【问题描述】:

我正在使用 springframwork 创建一个 SOAP 服务器,但我希望我的服务器接收来自 SOAP 1.2 的 SOAP 请求并且我正在尝试强制它。

我在互联网上看到我需要将 spring-ws-core 与 bean 一起使用:

<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
    <property name="soapVersion">
        <util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_12" />
    </property>
</bean>

但我认为我有这个问题,因为 spring-ws-core 和 springframework 之间存在一些不兼容。

我的 pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pt.ama.services.ws.server</groupId>
<artifactId>AMAMulticanalWS</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>WebService Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
    <!-- Spring -->
    <spring-framework.version>3.2.18.RELEASE</spring-framework.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <!-- <version>6.0.5</version> -->
        <version>5.1.44</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.2.1.Final</version>
    </dependency>       
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>servlet</artifactId>
        <version>2.2.8</version>
    </dependency>
    <!-- Spring and Transactions -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.ws</groupId>
        <artifactId>spring-ws-core</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>       
</dependencies>
<build>
    <finalName>AMAMulticanalWS</finalName>
</build>

有什么想法吗?

最好的问候。

【问题讨论】:

  • Spring WS 3.0.0 需要 Spring 5。

标签: java spring maven spring-mvc soap


【解决方案1】:

Spring Web 服务 3.0.0。需要 Spring 5,因为您使用的是不符合该要求的 Spring 3.2.18。见SWS-994

【讨论】:

  • 如果我尝试使用 springframework 5.0.1.RELEASE 我不知道为什么我需要增加启动 tomcat 服务器的时间,我得到这个错误:Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
  • 您不能只升级到 5,因为您必须升级所有库(例如,hibernate 5 是受支持的最低版本)。而是降级到受支持的 Spring WS 版本。