CXF Webサービスエンドポイント構成で相対発行アドレスを使用しようとすると、多くの問題が発生しています。CXF jaxwsエンドポイント相対発行アドレス
私は、次の設定ファイルを持つ単純なJava-最初のJAX-WSのプロジェクトがあります。
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>
よるとhttp://cxf.apache.org/docs/servlet-transport.htmlには、私はHelloWorldService
の公開アドレスを指定することができ、サービスのURLは(例えば)http://localhost:8080/services/HelloWorldServiceに解決されるはずです。しかし、私がhttp://localhost:8080/services/HelloWorldService?wsdlに行こうとすると、404が出ます。jaxwsエンドポイントの公開アドレスを絶対URL http://localhost:8080/services/HelloWorldService
に変更すると、wsdlにアクセスできます。
可能であれば、相対エンドポイントアドレスを指定します。私はCXF(そしてウェブサービスの作成)を初めて使うので、どんな助けでも大歓迎です!
UPDATE 1:
私はそれを記録しているのか分からないのTomcat 7に自分のWebサービスを展開していますが、私のスタートアップログ状態Setting the server's publish address to be HelloWorldService
の行の一つ。誰かが私を助けるためにもっと情報が必要なら私に知らせてください。
UPDATE 2:
CXFはCXFServletが「使用中」であるかどうかを検出し、それがない場合に埋め込まれた桟橋のインスタンスを使用していることが表示されます。 http://cxf.apache.org/docs/xfire-migration-guide.html#XFireMigrationGuide-HTTPandServletSetup。だから、何らかの理由でCXFが私のサーブレットの代わりに埋め込まれたjettyインスタンスを使用しています。しかし、私はweb.xmlにHelloWorldServlet以外に必要な設定が何であるか分かりません.CXFのドキュメントはそれ以上の助けにはなりません。
+1あなたの机の上に頭を叩いてください –
私はまったく同じ問題を抱えていました。 – user1339772