Java 1.6 Maven проект с SOAP XML службами JAX-WS (WAS Portal 7) для Tomcat Liferay 6.2 GA6 не может получить доступ к конечной точке - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь понять, чего мне здесь не хватает ... мне нужно несколько советов от вас, ребята. Итак, ранее я занимался разработкой устаревшей системы в проекте Maven Java 1.6, поддерживаемом порталом 7 IBM WAS (Websphere Aplication Server). Я не запускал этот проект, поэтому мои знания об этом ограничены, и этот проект имел / имел работающие сервисы JAX-WS (SOAP / XML), которые были созданы или созданы вручную (не знаю) (рис. 1). Где реализация этого интерфейса Web-сервисов выглядит следующим образом (рис. 2).

На этом портале, если я делаю этот URL, схема XML появляется, как на рис. 3:

Это объясняется часть (пожалуйста, прокомментируйте, если мне нужно показать больше вещей, чтобы вы могли мне помочь). Вторая часть после картин. Кстати, моя IDE - это Eclipse Oxygen с Tomcat App.Server.

Fig1 enter image description here

Fig2 enter image description here

Fig3 enter image description here

Таким образом, тот же самый проект WAR-файла был перенесен в Liferay 6.2 GA6, поддерживаемый Tomcat (7) но эти WS перестали работать или даже не отображаются должным образом, если я ввожу тот же URL-адрес, меняя только URL-адрес liferay на одну и ту же конечную точку, как показано ниже [ LIFERAYURL_MACHINE / PROJECT_NAME / InternetUser / InternetUser.wsdl ] liferay говорит, что не может найти явно.

Так что я искал в Интернете об этом, и я обнаружил, что у Liferay есть свои открытые веб-сервисы в этом URL [http://MACHINE: PORT / api / ось ], как вы можете видеть на рис. Если я нажимаю одну из ссылок, я получаю wsdl по следующему URL [http://MACHINE: 8780 / api / axis / Portlet_Bookmarks_BookmarksEntryService? Wsdl ]

Fig4 enter image description here

ВОПРОС UFFFFF: Так что я очень "ладья ie" для Liferay, и мне нужно от некоторых указателей на то, что мне нужно сосредоточиться, где Нужно ли мне go, чтобы искать и т.д. c .. относительно разоблачения этих уже сделанных веб-сервисов. Мне нужно воссоздать их? Используя инструменты Liferay, мне нужно свойство ie какого-то вида? Также у меня есть этот Fig5, Fig6. если это вообще поможет.

Примечание. Этот проект выполняется на портлете для liferay.

Fig5. enter image description here

Fig6. enter image description here

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020
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 {
...
}

Моя цепочка обработчиков. 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> {...}
0 голосов
/ 06 апреля 2020

Если я правильно понимаю, вы ожидаете ваших (реализованных вручную) веб-сервисов в списке опубликованных WSDL Liferay. Я никогда не пробовал этого и вполне мог себе представить, что это не тот способ, которым Liferay выбирает эти конечные точки.

Безопасный способ реализовать эти веб-сервисы, если вы ожидаете, что они появятся в списке предоставляемых веб-сервисов Liferay, - это использовать Liferay's ServiceBuilder, который предоставит вам несколько стандартных функций - среди них они перечислены в списке. доступных WSDL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...