【发布时间】:2011-05-04 19:51:16
【问题描述】:
我在整个网络上都看到过这个问题,但仍然没有找到适合我的明确解决方案。问题来了:
我正在尝试用 Java 创建一个 Web 服务客户端。客户端需要是一个控制台应用程序,它将被放置在服务器上并以一定的时间间隔自动运行。我尝试使用的 Web 服务是由第三方公司编写并托管的。该服务是用 ASP.NET 编写的。有问题的公司有几项我们击中的服务。它们都是用 ASP.NET 编写的。直到 2 天前,我负责使用其中的 2 个服务并从数据中构建 Excel 电子表格,我才处理过这些服务。在继续之前,让我描述一下我的开发环境。有些是相关的,有些不是,但我想包括所有内容:
- Windows 7 专业版 32 位
- NetBeans IDE 6.9.1
- Java JDK 1.6.0_17
- jre6
- Glassfish 3 开源全平台发布
- 所有软件均已应用所有可用更新
解决问题。当我将第一个 Web 服务客户端添加到我的控制台应用程序时,我对这个过程的顺利进行感到惊讶。我编写 Web 服务应用程序的大部分经验都在 .NET 中。我能够在第一次尝试时导入 WSDL 和 NetBeans 生成的所有类。在 5 分钟内,我能够第一次调用该服务并收到预期的响应,让我知道我的尝试成功了。然后,我使用所需的第二个 WSDL 的地址将第二个 Web 服务客户端添加到控制台应用程序。这是我遇到了一个主要问题的地方。
在导入 WSDL 时,NetBeans 向我发出警告,指出错误:
JAXWS:wsimport 实用程序无法创建 Web 服务客户端。
原因:未定义的元素声明's:schema'
在接下来的一个小时里滥用 Google 寻找解决方案后,我最终决定进行一些试验和错误。查看 NetBeans 中的输出窗口,我可以看到它在抱怨 3 个特定的行。看了一下 WSDL,我发现这 3 行是完全一样的,如下:
<s:element ref="s:schema" />
这 3 行是在从 WSDL 顶部到大约一半的随机位置找到的。我从 Web Service References 文件夹中的 WSDL 中删除了这些行,只将 WSDL 留在 META-INF 文件夹中。然后我刷新了服务引用,令我惊讶的是,NetBeans 解析了 WSDL 并像以前一样生成了我的类。太好了,对吧?好吧,这就是问题 #2 发挥作用的地方。
现在我能够毫无错误地编译我的应用程序,我不得不尝试点击该服务以查看我的 hack 是否有效。它没有。由于 JAXWS 中的另一个错误,我必须在创建服务对象时在构造函数中提供指向 WSDL 的 URL。这意味着我修复的 WSDL 将被忽略,服务现在重新使用无法解析的 WSDL。当我尝试提供我在项目中本地编辑的 WSDL 的位置时,我收到了另一个编译错误,指出我有 NullPointerException。它说我需要在使用它之前初始化对象。
我研究了这个网站上似乎无穷无尽的主题,以寻找并尝试提供的任何解决方案。我还尝试了来自整个网络的解决方案,但都没有运气。如果有人对我有任何建议,任何提示,技巧,黑客,请告诉我。在这一点上,我愿意接受任何建议。
提前感谢您提供的任何帮助。
【问题讨论】:
标签: java asp.net service jax-ws