Tomcat 9: Служба JAX-WS не запускается - «имя службы не может быть получено из интерфейса» - PullRequest
0 голосов
/ 13 марта 2020

Мне не удалось найти какую-либо ценную информацию об этой проблеме, поэтому я подумал о ее публикации здесь:

У меня есть служба JAX-WS, реализация которой имеет следующую аннотацию:

@WebService(serviceName = "PortaladapterWebservice",
            portName="PortaladapterWebservicePort",
            endpointInterface = "de.portaladapter.webservice.IPortaladapterWebservice")
public class PortaladapterWebservice implements de.portaladapter.webservice.IPortaladapterWebservice {
...
}

где указанный интерфейсный класс аннотируется так:

@WebService
@SOAPBinding(style=Style.DOCUMENT, 
                use=Use.LITERAL)
public interface IPortaladapterWebservice
{
...
}

Файл sun-jaxws.xml в WEB-INF выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
  <endpoint
     name="PortaladapterWebservice"
     implementation="de.portaladapter.webservice.PortaladapterWebservice"
     url-pattern="/services/PortaladapterWebservice"/>
</endpoints>

Когда я запускаю эту службу в моем Eclipse-Tomcat, все хорошо. Я также мог бы скомпилировать исходники и развернуть веб-приложение на внешнем коте, и сначала это тоже, похоже, сработало. Однако через несколько дней сервис больше не работает - когда я запускаю tomcat, в файл журнала tomcat9-stderr записывается следующее:

13-Mar-2020 16: 25: 56.874 SEVERE [main] com.sun. xml .ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate WSSERVLET11: Laufzeitdeskriptor konnte nicht geparst werden: Der serviceName darf nicht aus eenener. Klasse de.aedsicad.vermunterlagenportal.portaladapter.webservice.PortaladapterWebservice com.sun. xml .ws.model.RuntimeModelerException: Der serviceName darf nicht aus einer Schnittstelle abgerufen werden. Klasse de.aedsicad.vermunterlagenportal.portaladapter.webservice.PortaladapterWebservice at com.sun. xml .ws.model.RuntimeModeler.getServiceName (RuntimeModeler. java: 1507) в com.sun. xml .wserver. EndpointFactory.getDefaultServiceName (EndpointFactory. java: 580) в com.sun. xml .ws.server.EndpointFactory.getDefaultServiceName (EndpointFactory. java: 562) в com.sun. xml .ws.transport. http.DeploymentDescriptorParser.parseAdapters (DeploymentDescriptorParser. java: 272) по адресу com.sun. xml .ws.transport.http.DeploymentDescriptorParser.parse (DeploymentDescriptorParser. java: 179) в com.sun. * 1037. ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate (WSServletContextListener. java: 131) в com.sun. xml .ws.transport.http.servlet.WSServletContainerInitialt. org. apache .catalina.core.StandardContext.startInternal (StandardContext. java: 5135) в org. apache .catalina.util.LifecycleBase.start (LifecycleBase. * 10 44 *: 183) в орг. apache .catalina.core.ContainerBase.addChildInternal (ContainerBase. java: 717) в орг. apache .catalina.core.ContainerBase.addChild (ContainerBase. java: 690 ) в орг. apache .catalina.core.StandardHost.addChild (StandardHost. java: 705) в орг. apache .catalina.startup.HostConfig.deployDirectory (HostConfig. java: 1133) в орг. apache .catalina.startup.HostConfig $ DeployDirectory.run (HostConfig. java: 1867) в java .base / java .util.concurrent.Executors $ RunnableAdapter.call (Исполнители. java: 515 ) в java .base / java .util.concurrent.FutureTask.run (FutureTask. java: 264) в org. apache .tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService. java : 75) в java .base / java .util.concurrent.AbstractExecutorService.submit (AbstractExecutorService. java: 118) в орг. apache .catalina.startup.HostConfig.deployDirectories (HostConfig. java : 1045) в орг. apache .catalina.startup.HostConfig.deployApps (HostConfig. java: 429) в орг. apache .catalina.startup.HostConfig.start (HostConfi) g. java: 1576) в орг. apache .catalina.startup.HostConfig.lifecycleEvent (HostConfig. java: 309) в орг. apache .catalina.util.LifecycleBase.fireLifecycleEvent (LifecycleBase. java: 123) в орг. apache .catalina.util.LifecycleBase.setStateInternal (LifecycleBase. java: 423) в орг. apache .catalina.util.LifecycleBase.setState (LifecycleBase. java: 366) в орг. apache .catalina.core.ContainerBase.startInternal (ContainerBase. java: 936) в орг. apache .catalina.core.StandardHost.startInternal (StandardHost. java: 841) в org. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в org. apache .catalina.core.ContainerBase $ StartChild.call (ContainerBase. java: 1384) в орг. apache .catalina.core.ContainerBase $ StartChild.call (ContainerBase. java: 1374) в java .base / java .util.concurrent.FutureTask.run (FutureTask. java: 264) в org. apache .tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService. java: 75) в java .base / java .util.concurrent.AbstractExecutorService.submit (AbstractExecutorService. java 140: ) в орг. apache .catalina.core.ContainerBase.startInternal (ContainerBase. java: 909) в орг. apache .catalina.core.StandardEngine.startInternal (StandardEngine. java: 262) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.core.StandardService.startInternal (StandardService. java: 421) в орг. apache. catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.core.StandardServer.startInternal (StandardServer. java: 93 0) в орг. apache .catalina.util.LifecycleBase.start (LifecycleBase. java: 183) в орг. apache .catalina.startup.Catalina.start (Каталина. java: 633) в java .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java 62): 62) jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .base / java .lang.reflect.Method.invoke (Метод. java: 567) в орг. apache .catalina.startup. Bootstrap .start (Bootstrap. java: 344) в орг. apache .catalina.startup. Bootstrap .main (Bootstrap. java: 475)

Соответствующее сообщение, к сожалению, на немецком языке, однако версия sh на английском языке: ""com.sun.xml.ws.model.RuntimeModelerException: The serviceName cannot be retrieved from an interface", которая выбрасывается com.sun.xml.ws.model.RuntimeModeler

Кто-нибудь, пожалуйста, есть идея, что это точно значит а почему мой сервис больше не работает? Я реализовал несколько других сервисов jax-ws таким образом, и у меня никогда не было этой проблемы.

...