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
というエラーが出ます。私は何かを逃していることを知っている。私はあなたの指導に感謝します。
私は同じことをしています、plsは私のコードを参照してください。また、Tomcatサーバーをビルドして実行しようとすると、java.lang.ClassNotFoundException:org.pqr.xyzr.MyApplication'が追加されます。この理由はありますか? – vardhinisuresh27
web.xmlに2番目のプロジェクトのコメントがあります。 web.xmlの最新バージョンをアップロードできますか? – ron
これはコメントではありません。その理由は、「/ *」の使用がイントゥーンであり、それに続くコードにコメントしているからです。投稿されたコードは現在のweb.xmlです。ありがとう! – vardhinisuresh27