Я пытаюсь запустить конечную точку apache cxf в среде равноденствия osgi с помощью jetty 7. Мне нужно, чтобы конечная точка находилась по адресу http://x.x.x.x:8080/ws/endpoint1 и имела статические ресурсы в корневом пути http://x.x.x.x:8080/*.
У меня есть специальный пакет для этой цели, содержащий библиотеки cxf. Динамические модули Spring являются частью моей целевой платформы.
После некоторых исследований я попытался запустить веб-сервер Jetty в контексте моего весеннего приложения.
<bean id="Server" class="org.eclipse.jetty.server.Server"
init-method="start" destroy-method="stop">
<property name="connectors">
<list>
<bean id="Connector" class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<property name="port" value="8080" />
</bean>
</list>
</property>
<property name="handler">
<bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerList">
<property name="handlers">
<list>
<bean class="org.eclipse.jetty.server.handler.ResourceHandler">
<property name="directoriesListed" value="true" />
<property name="welcomeFiles">
<list>
<value>index.html</value>
</list>
</property>
<property name="resourceBase" value="./someDir" />
</bean>
<ref bean="web-service-cxf" />
<bean class="org.eclipse.jetty.server.handler.DefaultHandler" />
</list>
</property>
</bean>
</property>
</bean>
<bean name="web-service-cxf" class="org.eclipse.jetty.servlet.ServletContextHandler">
<property name="contextPath" value="/ws" />
<property name="handler">
<bean class="org.eclipse.jetty.servlet.ServletHandler">
<property name="servlets">
<list>
<bean class="org.eclipse.jetty.servlet.ServletHolder">
<property name="name" value="cxf-servlet-holder" />
<property name="servlet">
<bean class="org.apache.cxf.transport.servlet.CXFServlet">
</bean>
</property>
</bean>
</list>
</property>
<property name="servletMappings">
<list>
<bean class="org.eclipse.jetty.servlet.ServletMapping">
<property name="servletName" value="cxf-servlet-holder" />
<property name="pathSpec" value="/*" />
</bean>
</list>
</property>
</bean>
</property>
</bean>
Моя конечная точка WebService объявлена с:
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="someService" class="abc.xyz.SomeClass" />
<jaxws:endpoint id="endpointId" implementor="#someBean"
address="/endpoint1">
</jaxws:endpoint>
К сожалению, это не работает. Я могу достичь статических ресурсов, но не веб-службы.
В журнале говорится, что WebService публикуется по адресу address / endpoint1. Нет предупреждений, нет исключений.
Когда я меняю адрес веб-сервиса на его полный URL
<bean id="someService" class="abc.xyz.SomeClass" />
<jaxws:endpoint id="endpointId" implementor="#someBean"
address="http://x.x.x.x:8080/ws/endpoint1">
</jaxws:endpoint>
веб-служба работает нормально, но статические ресурсы больше не доступны.
Возможно ли в такой конфигурации опубликовать конечную точку на работающем причале с относительным адресом? Или я совершенно не прав? В большинстве примеров, которые я нашел в Интернете, используется файл web.xml, но я не работаю с сервером приложений, таким как tomcat, и мне нужно, чтобы приложение было автономным приложением Eclipse.
Потратьте на это последние две ночи, любая помощь будет высоко оценена.
С уважением,
Onno