ジャージー・フィルターを使用しています。
マイコードロジックAuthenticationFilter.java
に、承認ヘッダーが空の場合は、アクセス拒否エラーメッセージを返します。私は、エラーメッセージと、ステータス401を取得し、ヘッダジャージー・フィルター・サーバー・エラー
http://localhost:8080/JerseyDemos2/rest/pocservice
を装着せずにURLを使用して、残りのクライアントツールを介してアプリケーションを打っています
初めて「あなたはこのリソースにアクセスすることはできません」。これは正しいです。
私は2度目のtryugh rest clientツールをヒットしようとし、サーバは例外メッセージを返します。
私たちは二度目を打つとき、それはエラーを与えるのはなぜのTomcat 7.xのの両方でWindowsとLinux
を自分のアプリケーションを導入しました。 この
@Provider
public class AuthenticationFilter implements javax.ws.rs.container.ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
private static final String AUTHORIZATION_PROPERTY = "Authorization";
private static final Response ACCESS_DENIED = Response.status(Response.Status.UNAUTHORIZED).entity("You cannot access this resource").build();
@Override
public void filter(ContainerRequestContext requestContext) {
// Get request headers
final MultivaluedMap<String, String> headers = requestContext.getHeaders();
// Fetch authorization header
final List<String> authorization = headers.get(AUTHORIZATION_PROPERTY);
// If no authorization information present; block access
if (authorization == null || authorization.isEmpty()) {
requestContext.abortWith(ACCESS_DENIED);
return;
}
}
} }
エラーメッセージを解決する方法:
Dec 19, 2016 6:26:18 PM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse
SEVERE: An I/O error has occurred while writing a response message entity to the container output stream.
java.lang.IllegalStateException: The output stream has already been closed.
at org.glassfish.jersey.message.internal.CommittingOutputStream.setStreamProvider(CommittingOutputStream.java:147)
at org.glassfish.jersey.message.internal.OutboundMessageContext.setStreamProvider(OutboundMessageContext.java:803)
......
は私に事前に 感謝を助けてください。
あなたのフィルタはリクエストを許可し、リクエストを 'rest/pocservice'に転送しています。 bussinessメソッドのコードを含めて、何が起こっているのかを確認してください – pedrofb