Apache CXF + обработчик ресурсов со встроенным причалом в osgi с пружиной - PullRequest
2 голосов
/ 03 июня 2011

Я пытаюсь запустить конечную точку 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

1 Ответ

0 голосов
/ 10 июня 2011

Здесь очень много образцов.Вы сможете найти то, что ищете

http://svn.apache.org/repos/asf/cxf/branches/2.4.x-fixes/distribution/src/main/release/samples

...