带有 SOAP XML JAX-WS(WAS Portal 7)服务的 Java 1.6 Maven 项目对 Tomcat Liferay 6.2 GA6 无法访问端点

Posted

技术标签:

【中文标题】带有 SOAP XML JAX-WS(WAS Portal 7)服务的 Java 1.6 Maven 项目对 Tomcat Liferay 6.2 GA6 无法访问端点【英文标题】:Java 1.6 Maven project with SOAP XML JAX-WS ( WAS Portal 7 ) services to Tomcat Liferay 6.2 GA6 can´t access endpoint 【发布时间】:2020-07-16 20:59:17 【问题描述】:

我试图了解我在这里缺少什么...需要你们的一些指示。 所以以前我一直在 IBM WAS(Websphere Aplication Server)门户 7 支持的 Maven Java 1.6 项目中的遗留系统中开发。我没有开始这个项目,所以我对此的了解是有限的,这个项目有/有一个工作的 JAX -WS(SOAP/XML)服务,生成或手动生成(不知道)(图 1)。该 Web 服务接口的实现是这样的(图 2。)。

在此门户中,如果我执行此 URL,则 XML Schema 将出现如图 3 所示:

这是为了解释第一部分(如果我需要展示更多内容来帮助我,请发表评论)。图片后的第二部分。顺便说一句,我的 IDE 是带有 Tomcat App.Server 的 Eclipse Oxygen。

图1

图2

图3

因此,相同的项目相同的 WAR 文件已迁移到 Tomcat (7) 支持的 Liferay 6.2 GA6,但如果我键入相同的 URL,仅将 liferay URL 更改为相同的端点,这些 WS 停止工作或什至没有正确暴露像这样 [ LIFERAYURL_MACHINE/PROJECT_NAME/InternetUser/InternetUser.wsdl ] ,liferay 说明显找不到。

所以我一直在网上搜索这方面的内容,我发现 liferay 在这个 URL [http://MACHINE:PORT/api/axis] 中有自己的公开网络服务,如图 4 所示。如果我按下其中一个链接,我会在以下 URL [http://MACHINE:8780/api/axis/Portlet_Bookmarks_BookmarksEntryService?wsdl] 中获得 wsdl

图4

问题无解: 所以我对liferay非常“新手”,我需要一些关于我需要关注什么,我需要去哪里,搜索等等的指示。关于公开这些已经制作的网络服务。 我需要重新创建它们吗?使用 Liferay 工具,我需要某种属性吗?我也有这个图5,图6。如果它有任何帮助。

注意:此项目在 liferay 的 portlet 上运行。

图5.

图 6.

【问题讨论】:

请不要将代码/文本作为图片发布。 @OlafKock Images 只是为了解释我的观点,而不是让人们在代码中专门帮助我。因为我知道。谢谢你的回答;) 【参考方案1】:

如果我理解正确,您希望您的(手动实现的)Web 服务出现在 Liferay 的已发布 WSDL 列表中。我从未尝试过,并且可以想象这不是 Liferay 获取这些端点的方式。

如果您希望这些 Web 服务出现在 Liferay 提供的 Web 服务列表中,实现这些 Web 服务的一种安全方法是使用 Liferay 的 ServiceBuilder,它将为您提供一些默认功能 - 其中列出在可用 WSDL 列表中.

【讨论】:

就是这样,但不需要它们出现在该端点中。但是在阅读了一些文章之后,我想我明白 Liferay 就像一个默认情况下向外界公开 WSDL 的外壳,所以我试图对我的项目实现做同样的事情。您输入了 Liferay 的 ServiceBuilder,我也遇到了麻烦,但无法理解如何将我已经拥有的东西与它联系起来,就代码而言......【参考方案2】:
To expose a JAX-WS web-service in Liferay I use WSServlet.
In web.xml put:
    <servlet>
    <servlet-name>WebService</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet&lt;/servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>WebService&lt;/servlet-name>
    <url-pattern>/CoreService17&lt;/url-pattern>
</servlet-mapping>
<listener>
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener&lt;/listener-class>
</listener>

There must be sun-jaxws.xml file near web.xml that contains:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/jax-ws/ri/runtime http://java.sun.com/webservices/docs/2.0/jaxws/sun-jaxws.xsd ">
    <endpoint  implementation="ru.isands.tyva_portlet.web_service.CorePortType17Impl" name="CoreService17" url-pattern="/CoreService17"/>
</endpoints>

Class ru.isands.tyva_portlet.web_service.CorePortType17Impl implements WebService interface :
@WebService(name = "CorePortType17", targetNamespace = "urn://x-artefacts-it-ru/dob/poltava/core/1.7", serviceName = "CoreService17", portName = "CoreEndpoint17")
@HandlerChain(file = "handler-chain.xml")
@XmlSeeAlso( org.w3._2004._08.xop.include.ObjectFactory.class )
public class CorePortType17Impl implements CorePortType17 
...


CorePortType17.java:
@WebService(name = "CorePortType17", targetNamespace = "urn://x-artefacts-it-ru/dob/poltava/core/1.7")
public interface CorePortType17 
...

我的 handler-chain.xml:

<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
  <handler-chain>
    <handler>
      <handler-name>SigningSoapHandler</handler-name>
      <handler-class>ru.isands.tyva_portlet.web_service.SigningSoapHandler</handler-class>
    </handler>
  </handler-chain>
</handler-chains>

public class SigningSoapHandler implements SOAPHandler<SOAPMessageContext> ...

【讨论】:

能否请您也添加 handler-chain.xml ?谢谢你的帮助,我会试试这个 ASP。 ;)

以上是关于带有 SOAP XML JAX-WS(WAS Portal 7)服务的 Java 1.6 Maven 项目对 Tomcat Liferay 6.2 GA6 无法访问端点的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JAX-WS 2.0模拟soap响应?

(原创)用JAX-WS+Spring实现简单soap规范的webservice

JAX-WS - 添加 SOAP 标头

签署 JAX-WS SOAP 请求

如何使用 Java JAX-WS 添加 SOAP 标头

JAX-WS/WS-Addressing WAS 8.5.5 编译错误和无法访问WSDL错误