2017-06-04 13 views
0

を引き起こし、私は例外を取得:それはこのmethodCallでのために許可されていないようREST-EJB AccessLocalExceptionはBadRequest(500)の代わりに、不正な(401)

Warning: StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception 
javax.ejb.AccessLocalException: Client not authorized for this invocation 

これは、完全に正常です。

残念ながら、このEJBはRESTサービスでもあるため、 "500 - Bad Request"のHTTPステータスがスローされます。代わりに私は "401 - Unauthorized"を持っていたいと思います。

EJBセキュリティを使用しないでください.ApplicationConfigでこのAccessLocalExceptionをキャッチする必要がありますか、またはJerseyを使用してRESTセキュリティを実装する必要がありますか?

ロールはweb.xmlで定義され、アノテーションはEJB Beanに配置されます。

答えて

0

一般的な例外をHTTP応答にマップするExceptionMapperを定義できます。

import javax.ejb.EJBAccessException; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.ExceptionMapper; 
import javax.ws.rs.ext.Provider; 

@Provider 
public class EJBAccessExceptionMapper implements 
     ExceptionMapper<EJBAccessException> 
{ 
    @Override 
    public Response toResponse(EJBAccessException exception) 
    { 
    return Response.status(Response.Status.UNAUTHORIZED).build(); 
    } 
} 
関連する問題