5

我很难让 Web 服务在 Websphere 上运行。我有一个使用 JAXWS 注释 @WebService 定义的 Web 服务的 ejb-jar。然后将此 ejb-jar 打包到耳朵中。我已经成功地将耳朵部署到 Glassfish 上,并且能够访问我的 WebService。但是,当我尝试将同一个耳朵部署到 Websphere 8.5 中时,我看不到任何暴露的 WebService。我需要采取哪些步骤才能使这个耳朵在 Websphere 中工作?

以及如何查看 Websphere 管理控制台中可用的 Web 服务?

谢谢

4

3 回答 3

4

为了在 WebSphere 单元中查看可用的 Web 服务,请从管理控制台中选择服务,然后选择服务提供者。

如果您部署了一个包含 Web 服务的 EAR,但您看不到 Web 服务在 WAS 中可用,那么最好的办法是首先查看 WAS 日志(常规日志 + FFDC 日志),看看 WAS 是否有一个处理您的服务类的问题(无论出于何种原因)。

如果这没有帮助,您可以将 WAS 配置为为 JAX-WS 操作发出跟踪数据。

我之前遇到过类似的问题,当时 WAS 没有处理我的 Web Service 类并且没有在其日志中写入任何关于它的内容。仅在设置跟踪后,我才发现问题出在哪里,这可能与您遇到的问题相似:它与 WAS 在以下情况下尝试部署 JAX-WS 服务有关 -

  1. EAR 包含 JAX-WS 服务的源代码;和
  2. EAR 不包含编译Web Service 类(或 Web Service 类直接使用的任何类)所需的所有类。

说明:当您将 EAR 部署到 WebSphere 并指定应该部署 Web 服务(-deployws时,当 EAR 包含您的应用程序的源代码时,WebSphere 会很聪明并继续尝试重新编译您的代码。为什么?打败了我,但它就是这样。如果 WebSphere 无法编译您的 JAX-WS Web 服务类 - 或您的 Web 服务类使用的任何类 - 它只会放弃,不向日志写入任何内容,并且您的服务根本不会被部署。

如果激活了 JAX-WS 跟踪,WebSphere 将把它记录到跟踪文件中的唯一位置。

(我正在考虑为此与 IBM 开设 PMR,但当时我已经开设了大约 10 个 PMR...)

于 2014-05-20T06:04:57.293 回答
1

我不使用 websphere 8.5,但在 websphere 7 中,您还需要一个额外的步骤才能使用soap/http(或JMS)访问您的Web 服务(实现为无状态ejb)——您必须使用endptEnabler 工具。在部署到 WAS 之前,在您的 ear 文件中使用它。websphere 8.5 上可能需要相同的过程。

在我的 websphere 7 安装中,该工具可以在 [WEBSPHERE]/AppServer/bin 目录中找到。只需在命令行上运行它并部署耳朵。

于 2013-11-13T09:51:14.603 回答
0

如何查看 Websphere 管理控制台中可用的 Web 服务?

这适用于不在 EAR 中的 WebModules(直接部署为战争的 eG)。如果将 WebService 部署为 EAR 的 Module:卸载 EAR,单独部署 war,然后按照以下步骤操作,最终 URL 相同。

  1. 打开管理控制台并登录
  2. 安文顿根
  3. 格沙夫特桑文登根
  4. 打开网络应用程序
  5. 在右侧,您有一个区域“Web-Service-Eigenschaften”
  6. 有链接“WSDL-Dateien veröffentlichen”打开它。
  7. 下载压缩文件。
  8. 在其中,您将找到此模块中所有活动 Web 服务的 wsdl。
  9. 在 WSDL 中,您可以找到一个条目<soap:address location=那里有您的 WebService。

.wsdl我注意到如果我自己不提供文件,这将不起作用。不过,我还没弄清楚为什么会这样。因此,如果您遵循这些步骤但没有“Web-Service-Eigenschaften”块,那么在这场战争中没有可用的 Web 服务(从 WebSphere 的角度来看)。为项目中的 Web 服务创建一个 .wsdl 文件,并使用.war.

于 2014-05-08T09:29:59.347 回答