2013-07-31 85 views
4

我在Websphere上获得Web服务的难度很大。我有一个ejb-jar,它使用JAXWS注释@WebService来定义web服务。然后将这个ejb-jar包装到耳朵中。我已经成功地将耳朵部署到Glassfish上,并且能够访问我的WebService。但是,当我尝试将相同的耳朵部署到Websphere 8.5时,我看不到任何公开的WebService。我需要采取哪些措施才能在Websphere中实现这一目标?未部署Websphere 8.5 Web服务

如何查看Websphere管理控制台中提供的WebServices?

感谢

+0

你有没有来解决此问题? –

+0

@AngeloNeuschitzer我做到了。看到我的答案。 – Isaac

回答

1

我不使用SOAP/HTTP(或JMS)使用WebSphere 8.5,但在WebSphere 7有才能访问你的网络服务需要一个额外的步骤(实现为无状态EJB) - 你必须使用endptEnabler工具。在部署到WAS之前,将其用于耳朵文件。也许websphere 8.5需要同样的过程。

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

+0

'endptEnabler'用于JAX-RPC服务(据我所知)。 OP询问JAX-WS。 – Isaac

+1

如果您将它们实现为无状态EJB会话bean,那么'endptEnabler'也用于JAX-WS Web服务 - 如果您的Web服务是作为Web项目(而不是EJB)实现的, – Jurica

0

如何查看Websphere管理控制台中可用的WebServices?

这适用于不在EAR内的WebModules(例如直接部署为war)。 如果您将WebService部署为EAR的模块:卸载EAR,请单独部署该战争并按照以下步骤操作,最后的URL是相同的。

  1. 打开管理员Cosole &登录
  2. Anwendungen
  3. Geschäftsanwendungen
  4. 打开Web应用程序
  5. 在右边你有一个区域, “网络服务的Eigenschaften”
  6. 还有就是链接“WSDL-Dateienveröffentlichen”打开它。
  7. 下载压缩文件。
  8. 在这个模块中,您可以找到一个用于所有活动Web服务的wsdl。
  9. 在WSDL中找到条目<soap:address location=您有WebService。

我注意到,如果我自己没有提供.wsdl文件,这将不起作用。尽管如此,我还没弄明白这是为什么。因此,如果您正在执行这些步骤但没有“Web-Service-Eigenschaften”块,那么这场战争中没有Web服务可用(来自WebSphere的观点)。在您的项目中为您的Web服务创建一个.wsdl文件,并使用.war进行部署。

3

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

如果您部署了一个包含Web服务的EAR,并且您无法看到Web服务在WAS中可用,那么最好的方法是首先查看WAS日志(常规日志+ FFDC日志)以查看也许WAS在处理你的服务类时遇到了问题(无论出于何种原因)。

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

在WAS没有处理我的Web服务类之前,我遇到过类似的问题,并且没有写任何关于它的日志。只有当我建立了跟踪记录后,我才知道问题出在哪里,哪个可能与您遇到的问题类似:当以下情况成立时,它必须与WAS尝试部署JAX-WS服务有关 -

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

说明:当你部署EAR到WebSphere并指定应部署Web服务(-deployws当EAR包含您的应用程序的源代码时,WebSphere将发挥智能并继续并尝试重新编译您的代码。为什么?击败了我的生活地狱但它就是这样。如果WebSphere无法编译您的JAX-WS Web服务类 - 或正在使用的任何类您的Web服务类 - 它只是放弃,不向日志写入任何内容,并且根本没有部署服务。

如果JAX-WS跟踪已激活,那么WebSphere将记录此日志的唯一位置将放入跟踪文件中。

(我正在考虑开一家PMR与IBM这一点,但我已经有大约10 PMRS在那个时候开......)