1

CXF のアノテーション付きメソッドを使用して、Web サービス呼び出しを通じてさまざまな機能を作成しています。何らかの理由で、私の URL パスはすべて{hostname}/services/status/{my_path}. 私は次のような注釈付きのメソッドを使用しています:

    @Path("/{type:(?i)index}")
    public IndexServiceResource getIndexServiceResource() {
        return new IndexServiceResource(this.handlers);
    }

の代わりに が@Pathからまっすぐ出てきてほしいです。これはどこに設定されますか?{hostname}{hostname}/services/status

4

2 に答える 2

3

cxf Web サービスを処理する CXFServlet "/services" を web.xml のメイン コンテキスト "/" にバインドできます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
   <display-name>cxf</display-name>
   <description>cxf</description>
   <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
</web-app>

url-pattern を「/services/*」から「/*」に変更してみてください。

ただし、「/status」をメインコンテキスト「/*」にもバインドするように変更する方法があるかどうかはわかりません。

もちろん、リクエストが Apache プロキシを通過する場合は、" http://my.domain " -> " http://internal.server/services/status " などのマッピングを設定できます。ただし、これはコードの外で行われます。

于 2013-08-27T06:23:11.563 に答える