Я выполняю миграцию нашего проекта с Axis на Apache CXF.Я хочу использовать CXF без пружины (пока).Я сгенерировал свои сервисы и объекты с помощью плагина codegen CXF apache, но для некоторых сервисы работать не будут.
Когда я пытаюсь выставить сервис, который не генерируется плагином codex CXF, он работает ... Может кто-нибудь сказатьмне почему один работает, а другой нет.
Прежде всего мой web.xml
<servlet>
<display-name>SimpleCXFNonSpringServlet</display-name>
<servlet-name>SimpleCXFNonSpringServlet</servlet-name>
<servlet-class>xxx.SimpleCXFNonSpringServlet</servlet-class>
</servlet>
<servlet>
<display-name>GreetingCXFNonSpringServlet</display-name>
<servlet-name>GreetingCXFNonSpringServlet</servlet-name>
<servlet-class>xxx.GreetingCXFNonSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleCXFNonSpringServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GreetingCXFNonSpringServlet</servlet-name>
<url-pattern>/greeting/*</url-pattern>
</servlet-mapping>
Это веб-сервис, который работает.Всякий раз, когда я захожу на localhost /reeting , я получаю список доступных сервисов SOAP.
@WebService
public interface GreetingService {
public String helloWorld(@WebParam(name="name") String name);
}
@WebService(endpointInterface = "xxx.GreetingService", serviceName = "GreetingService")
public class GreetingServiceImpl implements GreetingService {
@Override
public String helloWorld(String name) {
return "Hello World, " + name + "!";
}
}
public class GreetingCXFNonSpringServlet extends CXFNonSpringServlet {
private static final long serialVersionUID = 1L;
@Override
public void loadBus(ServletConfig servletConfig) {
super.loadBus(servletConfig);
ServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setBus(bus);
factory.setServiceClass(GreetingService.class);
factory.setServiceBean(new GreetingServiceImpl());
factory.setAddress("/calcService");
factory.create();
}
}
Это веб-сервис, который НЕ работает.Всякий раз, когда я захожу на localhost / services , он говорит: «Службы не найдены».Класс DocumentGeneratorService был создан с помощью плагина apache cxf codegen.
/**
* This class was generated by Apache CXF 3.1.18
* 2019-04-05T14:54:36.480+02:00
* Generated source version: 3.1.18
*
*/
@WebService(targetNamespace = "http://stack.nl/overflow/DocumentGenerator", name = "DocumentGeneratorService")
@XmlSeeAlso({ObjectFactory.class, xxx.ObjectFactory.class, xxx.ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface DocumentGeneratorService {
@WebMethod(action = "http://stack.nl/overflow/DocumentGenerator/DocumentGenerator/GenereerDocument")
@WebResult(name = "genereerDocumentResponse", targetNamespace = "http://stack.nl/overflow/DocumentGenerator", partName = "parameters")
public DocumentGeneratorResponse genereerDocument(
@WebParam(partName = "parameters", name = "genereerDocumentRequest", targetNamespace = "http://stack.nl/overflow/DocumentGenerator")
DocumentGeneratorRequest parameters
);
}
@WebService(endpointInterface = "xxx.DocumentGeneratorService", serviceName = "DocumentGeneratorService")
public class DocumentGeneratorServiceImpl implements DocumentGeneratorService {
@Override
public DocumentGeneratorResponse genereerDocument(DocumentGeneratorRequest parameters) {
return new DocumentGeneratorResponse();
}
}
public class SimpleCXFNonSpringServlet extends CXFNonSpringServlet {
private static final long serialVersionUID = 1L;
@Override
public void loadBus(ServletConfig servletConfig) {
super.loadBus(servletConfig);
ServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setBus(bus);
factory.setServiceClass(DocumentGeneratorService.class);
factory.setServiceBean(new DocumentGeneratorServiceImpl());
factory.setAddress("/calcService");
factory.create();
}
}
Код кажется мне идентичным, но, очевидно, это не так ... Может ли это быть, потому что класс DocumentService находится вдругой модуль maven, который он включил в качестве зависимости?