1

TomEE Plus にデプロイされた、いくつかの JAX-RS サービスとの WAR があります。で注釈が付けられたサービスを指定すると@Path("myservice")、TomEE+ はそれを に公開しlocalhost:8080/mywebapp/myserviceます。

ただし、それはまた、JSP へのアクセスをlocalhost:8080/mywebapp/index.jsp不可能にします - JAXRSInInterceptor はNo root resource matching request path has been found, Relative Path: /index.jsp.

そのため、 URL をapiに変更するすべてのサービスへのパス プレフィックスを構成したいと思います。CXF サーブレットの URL パターンを変更するだけで済むため、(Spring の有無にかかわらず) 自分で CXF を構成した場合、これは簡単です。注釈。では、この場合はどうすればよいのでしょうか。myservicelocalhost:8080/mywebapp/api/myservice

注釈を変更してプレフィックスを含めたくないことに注意してください@Path。JSP の問題は解決されないためです。

4

2 に答える 2

2

javax.ws.rs.core.Applicationの拡張機能を作成し、@ApplicationPathで注釈を付けます。値はapiあなたの場合です:

@ApplicationPath("/api")
public class MyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<Class<?>>();
        // register root resource
        classes.add(MyServiceResource.class);
        return classes;
    }
}

このようにして、サーブレット 3 コンテナーはアプリケーションを見つけてリソースを にマップ/mywebapp/api/myserviceし、Web リソース (.jsp) を で使用できるようにし/mywebappます。

于 2013-07-19T12:21:19.633 に答える
1

TomEE トランクは次の構成をサポートしています: cxf.jaxrs.staticSubresourceResolution & cxf.jaxrs.static-resources-list

しかし、 @ApplicationPath はより関連性の高いソリューション IMO です

-Dopenejb.webservice.old-deployment=true を使用すると役立つ場合もあります

于 2013-07-21T17:13:43.817 に答える