7

我有一个用于 Web 服务的 wsdl 文件。我想测试客户端和服务器之间的交互。为此,我使用嵌入式 grizzly 运行模拟服务器。

关于实现模拟服务器的问题。我使用 wsimport 从 wsdl(和 xsd)生成了一个接口并编写了实现。在灰熊上运行时,出现以下错误:

com.sun.xml.ws.server.ServerRtException: [failed to localize] cannot.load.wsdl(META-INF/wsdl/test.wsdl)

我使用以下代码运行 Web 服务:

 HttpHandler httpHandler = new JaxwsHandler(new TestImpl());
 server.getServerConfiguration().addHttpHandler(httpHandler, "/test");

问题是 Grizzly 找不到 wsdl 和 xsd 文件。在嵌入式 glassfish 中它的工作。

编辑1

我将 wsdlLocation 更改为“test.wsdl”及其工作。但现在灰熊说:

java.lang.NoSuchMethodError: javax.xml.ws.WebFault.messageName()Ljava/lang/String;

编辑2

如果使用JDK1.7,它可以工作。但我需要一个 JDK 1.6

4

6 回答 6

1

我不确定您为什么会看到该错误。我可以运行 Grizzly jaxws 示例并使用 1.6 或 1.7 获取 wsdl。

我建议查看示例的源代码1并与您所拥有的进行比较。

于 2012-11-13T23:11:12.320 回答
1

我将 jdk6 更改为 jdk7 并且工作正常!不要忘记更改此处相关的 JAVA_HOME 和 Netbeans 的默认 JDK:如何设置 JDK Netbeans 运行?

于 2013-07-25T14:29:50.813 回答
1

您的 Grizzly 版本需要 JAX-WS 2.2 API,而 JDK 1.6 附带 JAX-WS 2.1。正如其他人所提到的,其中一些文件需要安装到认可的目录中。您可以在此处下载所需文件或从您的 Grizzly 安装中获取它们。下载包含一个 Ant 构建文件,该文件提供了一个构建目标,用于将文件安装到 JDK 认可的目录中。您可以使用ant install-api. 如果你不能运行 Ant,你可以手动安装它们:

cp lib/jaxb-api.jar $JAVA_HOME/lib/endorsed
cp lib/jaxws-api.jar $JAVA_HOME/lib/endorsed

不要将 JAX-WS 发行版中的其他文件安装到 endorsed 目录中,除非您想为自己创建一些非常难以调试的错误。

我建议使用 $JAVA_HOME/lib/endorsed 中的背书目录,因为它适用于大多数工具和应用程序,无需任何额外更改。其他人已经提出了更有针对性的更改,例如在 Maven 构建期间设置背书目录或将文件复制到 Tomcat 背书目录中。只要您可以确保您的代码选择正确的认可目录,所有这些方法都可以。

于 2016-06-15T15:11:02.700 回答
0

结果,我们不得不使用背书机制。文档

于 2012-11-15T08:23:56.630 回答
0

创建一个名为 endorsed 的文件夹并将这些 jar 文件放入其中 1.jaxb-api-2.2.jar 2.jaxws-api.jar 将文件夹作为 C:\tomcat-7.50\< created folder> 放在 tomcat 服务器中并运行它将作品

于 2014-07-04T07:18:40.747 回答
0

将 JDK 从 1.6 更改为 1.7 对我有用。

于 2017-08-29T15:19:24.060 回答