私のTomEE Plume 7.0.2に問題があります。JAX-RS - ContainerRequestFilterを拡張するフィルターを作成する
私は、フィルタをそのように作成しました:ここ
package com.gfp.rest.providers;
import java.io.IOException;
import javax.annotation.Priority;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;
@PreMatching
@Provider
@Priority(value = 1)
public class AuthenticationFilter implements ContainerRequestFilter
{
public AuthenticationFilter()
{
System.out.println("AuthenticationFilter.AuthenticationFilter()");
}
@Override
public void filter(ContainerRequestContext requestContext) throws IOException
{
System.out.println("AuthenticationFilter.filter()");
String token = requestContext.getHeaderString("token");
ResponseBuilder responseBuilder = null;
Response response = null;
// check if token is empty
if (token.isEmpty()) {
responseBuilder = Response.serverError();
response = responseBuilder.status(Status.UNAUTHORIZED).build();
requestContext.abortWith(response);
}
}
}
は私のRESTアプリケーションです:
package com.gfp.rest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("api/v1")
public class RestApplication extends Application
{
}
問題がある:フィルタと呼ばれ得るように見えることはありません。私は多くのドキュメントや他の多くの記事を読んでいますが、私は解決策を見つけることができません。私が逃した特別なものがありますか?
ありがとうございます!
これを行うと、すべてのリソースクラスも登録する必要があります。空のApplicationクラスは '@Path'クラスと' @Provider'クラスのクラスパススキャンをトリガするために指定されているので、動作するには_supposed_です。クラスを追加すると、クラスパスのスキャンが無効になり、すべてを自分で登録する必要があります。 –
次のようにNullPointerExceptionが発生しました。 TomEEと連携させるための「自動方法」はありますか? –