带有 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</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WebService</servlet-name>
<url-pattern>/CoreService17</url-pattern>
</servlet-mapping>
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</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 无法访问端点的主要内容,如果未能解决你的问题,请参考以下文章