에 매개 변수를 전달하는 방법, 나는 다음과 같은 상황이 :JEE : 글래스 피쉬 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));
}
내가 생각
:
이
는 발신자입니다 나중에 인터셉터에 주입 되었습니까?
이 플래그 값이 될 수있는 무엇 : 인터셉터 책임을 강화하여 교통에 이상 anly 플래그가 필요하지 않은 것? 주석에서 상수 일 수 있습니까? 이 깃발의 필요성을 설명해 주시겠습니까? – AxelH