在我的JEE應用,在GlassFish 3運行,我有以下情況:JEE:如何參數傳遞給攔截
MyFacade類
@Interceptors(SomeInterceptor.class)
public void delete(Flag somethingForTheInterceptor, String idToDelete) {
.......
}
@Interceptors(SomeInterceptor.class)
public void update(Flag somethingForTheInterceptor, MyStuff newStuff) {
.......
}
變量somethingForTheInterceptor
不使用這些方法中,僅在使用攔截器:
SomeInterceptor類
@AroundInvoke
public Object userMayAccessOutlet(InvocationContext ctx) throws Exception {
Flag flag = extractParameterOfType(Arrays.asList(ctx.getParameters()), Flag.class);
// some checks on the flag
}
不知何故,它不舒服有一個參數,沒有在方法中使用。有沒有另外一種方法將「somethingForTheInterceptor
」發送給攔截器?
UPDATE:的delete()
和update()
的呼叫者具有計算somethingForTheInterceptor
變量的不同方式。這不是一個常數。計算它所需的信息在REST調用中。但是2個REST方法有不同的輸入對象,所以僅僅注入http請求是不夠的。
這些求助者:
MyResource類
@DELETE
@Path("/delete/{" + ID + "}")
public Response delete(@PathParam(ID) final String id) {
Flag flag = calculateFlagForInterceptor(id);
facade.delete(flag, id);
}
@POST
@Path("/update")
@Consumes(MediaType.APPLICATION_JSON + RestResourceConstants.CHARSET_UTF_8)
public Response update(final WebInputDTO updateDetails) throws ILeanException {
Flag flag = calculateFlagForInterceptor(updateDetails);
facade.update(flag, convertToMyStuff(updateDetails));
}
我在想 - 這可能在資源的方法設置在某種語境下的標誌,可以被後來注入攔截器?
這個標誌值可能是什麼?它可能是註釋中的一個常量嗎?你能解釋這個標誌的需要嗎? – AxelH