8 Stimmen

CXF jaxws endpoint relative Veröffentlichungsadresse

Ich habe große Schwierigkeiten bei dem Versuch, eine relative Veröffentlichungsadresse in meiner CXF-Webdienst-Endpunktkonfiguration zu verwenden.

Ich habe ein einfaches Java-first JAX-WS-Projekt mit den folgenden Konfigurationsdateien:

applicationContent-cxf.xml:

<beans xmlns=...>
    ...
    <jaxws:endpoint
        id="helloWorldService"
        implementorClass="org.helloworld.ws.HelloWorldServiceImpl"
        implementor="#helloWorldServiceImpl" <!-- spring managed -->
        endpointName="sayHello"
        address="HelloWorldService"/>
</beans>

web.xml:

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            WEB-INF/applicationContext.xml
            WEB-INF/applicationContext-cxf.xml
        </param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>HelloWorldServlet</servlet-name>
        <display-name>Hello World Servlet</display-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorldServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
</web-app>

Nach Angaben von http://cxf.apache.org/docs/servlet-transport.html sollte ich in der Lage sein, die Veröffentlichungsadresse von HelloWorldService und die URL des Dienstes wird aufgelöst zu (z. B.) http://localhost:8080/services/HelloWorldService . Aber wenn ich versuche, zu gehen http://localhost:8080/services/HelloWorldService?wsdl Ich erhalte eine 404. Wenn ich die Veröffentlichungsadresse in meinem Jaxws-Endpunkt auf die absolute URL ändere http://localhost:8080/services/HelloWorldService Ich kann auf die wsdl zugreifen.

Ich möchte, wenn möglich, eine relative Endpunktadresse angeben. Ich bin neu in der Verwendung von CXF (und Schreiben von Webdiensten), so dass jede Hilfe sehr geschätzt wird!

UPDATE 1:

Beachten Sie, dass ich meinen Webdienst in Tomcat 7 einsetze. Ich weiß nicht, was es protokolliert, aber eine der Zeilen in meinem Startprotokoll besagt Setting the server's publish address to be HelloWorldService . Wenn jemand mehr Informationen benötigt, um mir zu helfen, lassen Sie es mich bitte wissen.

UPDATE 2:

Es scheint, dass CXF erkennt, ob ein CXFServlet "verwendet" wird und eine eingebettete Jetty-Instanz verwendet, wenn dies nicht der Fall ist. http://cxf.apache.org/docs/xfire-migration-guide.html#XFireMigrationGuide-HTTPandServletSetup . Aus irgendeinem Grund verwendet CXF also die eingebettete Jetty-Instanz anstelle meines Servlets. Ich weiß jedoch nicht, welche weitere Konfiguration ich außer dem HelloWorldServlet in meiner web.xml benötige, und die CXF-Dokumentation hilft mir nicht weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X