2016-05-10 146 views
1

JerseyプロジェクトB(すでにうまく機能しています)を新しいJerseyプロジェクトAに組み込みたい/フィルタレイヤー/セキュリティレイヤーとして機能したいと思います。基本的な手順として、プロジェクトAのビルドパスに依存関係を追加し、ビルドパスの展開アセンブリにも追加しました。私はthisの投稿から理解しました。サーブレットを同じweb.xmlに入れて、<servlet-mapping>を使って別の方法でマッピングすることで可能でした。私はそう複数のサーブレットを1つのweb.xmlに追加する

web.xml

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>org.abc.def.ba, org.pqr.xyz</param-value> 
    </init-param> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>org.abc.def.ba.CustomApplication</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/webapi/*</url-pattern> 
</servlet-mapping> 

<!-- The Servlet of Project B --> 
<servlet> 
    <servlet-name>Jersey Web Application 2</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-  class> 

<init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value> org.pqr.xyz.MyApplication</param-value> 
    </init-param> 

    <!-- Register resources and providers under my.package. --> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value> org.pqr.xyz</param-value> 
    </init-param> 

    <!-- Register my custom provider (not needed if it's in my.package) AND LoggingFilter. --> 
    <init-param> 
     <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value> org.pqr.xyz.mapper.ObjectMapperProvider</param-value> 
    </init-param> 

    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value> org.pqr.xyzr</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name> 
     <param-value>com.porterhead.rest.filter.ResourceFilterFactory</param-value> 
    </init-param> 
    <init-param> 
     <param-name>readOnly</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application 2</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

プロジェクトBのリソースにアクセスしようとしていたとき、私は私がhttp://localhost:8080/ba/webapi/myresourceにアクセスしようとすると、それがうまく機能し、任意の運を持っていませんでした。しかし、私がhttp://localhost:8080/ba/rest/newresourceを試してみると、404というエラーが出ます。私は何かを逃していることを知っている。私はあなたの指導に感謝します。

答えて

0

サーブレット3.0を使用している場合は、@ApplicationPathアノテーションを使用して、異なるリソースに対して異なるアプリケーションパスを使用できます。アノテーションを使用したくない場合は、デプロイメントオプションのジャージーdocumentationを参照してください詳細について

<web-app> 
<servlet> 
    <servlet-name>org.foo.rest.MyApplication</servlet-name> 
</servlet> 
... 
<servlet-mapping> 
    <servlet-name>org.foo.rest.MyApplication</servlet-name> 
    <url-pattern>/resources</url-pattern> 
</servlet-mapping> 
... 

下回ると同じ使用のweb.xmlを達成することができます。

+0

私は同じことをしています、plsは私のコードを参照してください。また、Tomcatサーバーをビルドして実行しようとすると、java.lang.ClassNotFoundException:org.pqr.xyzr.MyApplication'が追加されます。この理由はありますか? – vardhinisuresh27

+0

web.xmlに2番目のプロジェクトのコメントがあります。 web.xmlの最新バージョンをアップロードできますか? – ron

+0

これはコメントではありません。その理由は、「/ *」の使用がイントゥーンであり、それに続くコードにコメントしているからです。投稿されたコードは現在のweb.xmlです。ありがとう! – vardhinisuresh27

関連する問題