Java 6 中附带了 JAX-WS 2.0。据我所知,Java 5 没有附带 JAX-WS。
我能够使用 JAX-WS 2.2.5 和 Java 1.6 创建 Webservice 客户端桩,通过使用 Java Endorsed Override Mechanism,该机制列出了 JAX-WS 作为可以在 Java 6 中被替换的组件之一。
我所需要做的只是在 JDK 和 JRE 6 的路径中创建一个 lib\endorsed 目录,然后将来自 JAX-WS 2.2.5 的 jaxb-api.jar 和 jaxws-api.jar 复制到名为 endorsed 的目录中。 JDK 和 JRE 6 都会自动选择 2.2.5 版本的 JAX-WS。
我在 Java 5 文档中没有找到类似的 Java Endorsed Override Mechanism。我在这里找到了一个:here。这并没有像 Java 6 文档那样明确提到 JAX-WS,但它也提到了 endorsed dirs。
我在 JDK 和 JRE 的 lib 目录下创建了类似的 'endorsed' 目录。我将 JAX-WS 2.2.5 的所有 jar 文件(共 23 个)复制到 endorsed 目录中。然而,与 Java 6 不同的是,既 javac.exe 又 java.exe 并没有直接选择它。我必须使用这个命令行参数运行 java.exe 和 javac.exe。
-Djava.endorsed.dirs=<JDK/JRE1.5_DIR>\lib\endorsed
一切似乎都运行良好,但我想知道这是否有保证能够正常工作 - 之前有人遇到过任何问题吗? JAX-WS 2.2.5是否支持Java 5?