Servlet 3.xコンテナのJerseyサーブレットコンテナ(2.x)の記述子なしをjavax.servlet.Filter
として実行する方法はありますか?私は、ジャージーのサーブレットコンテナがjavaxのように実行するように設定されたときに、プロパティをのみ適用されJavadocのサーブレット3.xコンテナの記述子なしジャージサーブレットコンテナ
を私のサービスと一緒に静的なリソースを提供する必要があるため、フィルタとして実行したときのみ動作している
jersey.config.servlet.filter.forwardOn404
またはjersey.config.servlet.filter.staticContentRegex
を使用する必要があります.servlet.Filter。そうでない場合、このプロパティは無視されます。私はweb.xml
完全<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>My-Webservice</display-name> <filter> <filter-name>Jersey Filter</filter-name> <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class> <init-param> <param-name>javax.ws.rs.Application</param-name> <param-value>com.foo.webservices.MyApplication</param-value> </init-param> </filter> </web-app>
を取り除くと
Application
クラス@ApplicationPath(value = "/") public class MyApplication extends ResourceConfig { public MyApplication() { packages("com.foo.webservices.services"); property(ServletProperties.FILTER_FORWARD_ON_404, true); } }
公式ドキュメント(https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.3が)何を述べていない私のカスタムですべてを持って取得したいのですが
残念ながらフィルターについて。
グレート答えに完全な例を見ることができます。アプリケーションクラスとして 'org.glassfish.jersey.server.ResourceConfig $ RuntimeConfig'を誤って識別したので、もう一度getApplicationClassメソッドに別のチェックを追加しなければなりませんでした。 'break'ステートメントの周りに' if(applicationCls!= null && applicationCls.getAnnotation(ApplicationPath.class)!= null) 'を追加しました。 – lazlev