Недавно я переписал приложение веб-служб для использования CXF вместо Axis. Коммутатор был достаточно прост, но у меня возникли проблемы с развертыванием webapp. Ранее с помощью Axis вы могли перейти на страницу, обслуживаемую Tomcat, которая будет перечислять все службы Axis; что-то похожее на http://localhost:8080/axis2/services/listServices
. И чтобы просмотреть WSDL службы, я бы перешел на http://localhost:8080/axis2/services/Service?wsdl
.Развертывание веб-служб CXF SOAP для Apache Tomcat
После перезаписи служб в CXF я обнаружил, что не знаю, как развернуть и настроить приложение. Я следил за базовой установкой CXF, где файл web.xml
моего приложения импортирует конфигурационный файл Spring, beans.xml
. Я могу полностью справиться с этим и развернуть его в Tomcat, где он взрывается просто отлично, и никаких ошибок не происходит, но я не могу понять, как даже просматривать хост, чтобы увидеть список развернутых веб-сервисов.
Могу ли я получить помощь и пояснить это? Я хотел бы понять, как настроить CXF, чтобы я знал, какие URL использовать, чтобы перечислять службы и видеть их соответствующие WSDL. Не стесняйтесь объяснять эту порцию, как будто мне было пять лет; Я прочный программист, но развертывание и настройка не являются самыми сильными областями знаний.
Одна вещь, которую я заметил, пытаясь понять, что файл beans.xml ссылается на импорт classpath:META-INF/cxf/cxf.xml
. Я понятия не имею, что это за файл или где он находится, но мое предположение было бы в том, что это, вероятно, необходимо, и что я должен, вероятно, понять его роль. Может ли кто-то подумать об этом? Есть ли у Tomcat web.xml
что-то общее с этой конфигурацией?
Если я могу предоставить дополнительную информацию или конфигурацию, чтобы помочь с этим сообщением, дайте мне знать!
Вот web.xml моего приложения:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<display-name>CXF Servlet</display-name>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>inc</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
</web-app>
А вот мой beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<jaxws:endpoint
id="accountService"
implementor="com.company.ws.data.services.AccountService"
address="/AccountService" />
<jaxws:endpoint
id="loggingService"
implementor="com.company.ws.data.services.LoggingService"
address="/LoggingService" />
<jaxws:endpoint
id="searchService"
implementor="com.company.ws.data.services.SearchService"
address="/SearchService" />
<jaxws:endpoint
id="validationService"
implementor="com.company.ws.data.services.ValidationService"
address="/ValidationService" />
</beans>
так просто. Благодарю. – liltitus27