Spring-ws 1.5.9 依赖于 Spring 2.5(基于 pom)。它可以与 Spring 3 一起使用而不会遇到任何类加载问题。我知道两者之间的一些包匹配,我可以不包括那些 Spring 3 罐子吗?我似乎找不到任何官方的说法。
2 回答
除了 skaffman 的回答,这里是如何通过 Maven 将 Spring-WS 1.5.9 与 Spring 3 一起使用:
1)首先排除Spring 3的OXM依赖。只需从你的POM中删除以下依赖即可。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</dependency>
如果您正在使用另一个对 Spring 3 具有传递依赖的框架(如 Apache Camel 的camel-spring模块),请使用:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
</exclusion>
</exclusions>
</dependency>
2) 移除 Spring-WS 1.5.9 对 Spring 2.5.6 的传递依赖:
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>1.5.9</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-support</artifactId>
<version>1.5.9</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
</exclusions>
</dependency>
3) 最后确保在 POM 中包含必要的 Spring 3 模块(上面的列表)作为依赖项。
就是这样,您现在应该能够将 Spring-WS 1.5.9 与 Spring 3.x 一起使用。
正式地说,不,它们不兼容。就像你说的那样,两者之间存在包冲突 -org.springframework.oxm
特别是。这个包是从 Spring-WS 引入 Spring 3 的,两者会发生冲突。
在 Spring 3.0 发布后,本应立即在 Spring-WS 2.0 上完成工作,但这并没有发生。在此之前,Spring-WS 仍然与 Spring Framework 的当前版本不兼容。
在实践中,我发现如果您org.springframework.oxm
从 Spring 3 发行版中省略 JAR,两者可以很好地协同工作。但是,如果您使用的是 maven,我不确定这是否适合您。