3

我们正在尝试从一系列 WSDL(每个都有自己的 XSD)生成源代码存根。我们可以很好地做到这一点,并且在 JDK1.6 下完美运行,但是我们需要它在 JDK1.5 下运行。

我们使用 jaxws-maven-plugin 来生成源代码,但是它取决于可用的 wsimport 二进制文件(这在 JDK1.5 中不可用)。我们找到了解决方法,我们现在可以生成源代码。

最后一个问题是当我们尝试将编译后的存根代码与 Spring (2.5.6) 一起使用时,我们正在使用 JaxWsPortProxyFactoryBean 与生成的客户端代码进行交互。我们得到一个 java.lang.NoClassDefFoundError: javax/xml/ws/soap/Addressing。我调查了为什么会这样,发现 javax.xml.ws/javax-api/2.1 依赖项不包含此类。我将版本号升级到 2.1-1,现在当我们构建项目(生成源代码)时,我们收到以下错误:

cannot find symbol
symbol : method partName()
location : @interface javax.jws.WebParam

谁能为此提供解决方案,以便我们可以生成我们的 JAXWS 客户端存根代码并使其与 JaxWsPortProxyFactoryBean 一起工作?

提前致谢

乔纳森

4

3 回答 3

3

似乎他们把这个罐子弄乱了,看这个链接

解决方法如下:

  1. 删除 M2_REPO/javax/xml/ws/jaxws-api/2.1/ 目录
  2. 使用这个依赖

    <dependency>
     <groupId>javax.xml.ws</groupId>
     <artifactId>jaxws-api</artifactId>
     <version>2.1</version>
    </dependency>
    
  3. 将这些存储库放在列表的顶部:

    <repository>
     <id>javanet</id>
     <url>http://download.java.net/maven/2/</url>
    </repository>
    <repository>
     <id>javanet legacy</id>
     <url>http://download.java.net/maven/1/</url>
     <layout>legacy</layout>
    </repository>
    
于 2009-11-19T17:17:09.897 回答
2

我设法解决了这个问题,经过数小时研究依赖项并查看它们每个人的内部内容后,我发现依赖项 javax.xml.ws:jaxws-api:2.1-1 是必需的,但我们必须复制一份这种依赖关系并取出:

<dependency>
    <groupId>javax.jws</groupId>
    <artifactId>jsr181</artifactId>
    <version>1.0</version>
</dependency>

然后我必须在我的应用程序的 pom.xml 中包含以下依赖项:

<dependency>
    <groupId>javax.jws</groupId>
    <artifactId>jsr181-api</artifactId>
    <version>1.0-MR1</version>
</dependency>

这远非理想,我们必须在我们的 Maven 存储库中维护一个单独的专有依赖项,并记住包含这个依赖项。烦人的是 Maven 不允许我按版本号排除(仅按 groupId 和 artifactId)。如果有人对改进此解决方案有任何建议,请告诉我。

谢谢你的帮助。

于 2009-11-03T09:46:44.193 回答
0

我们使用 jaxws-maven-plugin 来生成源代码,但是它取决于可用的 wsimport 二进制文件(这在 JDK1.5 中不可用)。我们找到了解决方法,我们现在可以生成源代码。

实际上,wsimport作为 JAX-WS 的一部分,Java 5 中不包含.你提供它。奇怪的是 jaxws-maven-plugin 声明了这些依赖项(例如参见jaxws-maven-plugin-1.12.pom),某处必须存在类加载问题,因此“变通”。

最后一个问题是当我们尝试将编译后的存根代码与 Spring (2.5.6) 一起使用时,我们正在使用 JaxWsPortProxyFactoryBean 与生成的客户端代码进行交互。我们得到一个 java.lang.NoClassDefFoundError: javax/xml/ws/soap/Addressing。[...]

您使用的是哪个版本的插件?我建议使用 1.12 版和与您的插件中相同版本的 jax-ws pom.xml

<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-tools</artifactId>
  <version>2.1.7</version>
</dependency>
于 2009-10-30T19:03:47.307 回答