2011-12-06 2 views
0

웹 서비스 클라이언트를 생성하기위한 구성 요소를 제공하고 싶습니다. 지금까지 내 접근 방식은 JaxWsProxyFactoryBean을 확장하고 create 메소드를 재정의하고 timeout과 같은 매개 변수에 setter 및 getter를 제공했습니다.JaxWsProxyFactoryBean에 의해 생성 된 Proxy로 서비스 호출을 로그하는 방법

@Override 
public synchronized Object create() { 

    //do some stuff here 
    Object result = super.create(); 
    //here too 

    return result; 
} 

프록시에 대한 호출을 기록하는 적절한 방법은 무엇입니까? getInInterceptors().add(new MyInterceptor());으로 Interceptor을 설정하려했지만 JaxWsProxyFactoryBeanPhaseInterceptor 만 원했습니다. 그러나 나는 그 인터셉터의 모든 속성을 어떻게 설정해야하는지 알지 못합니다. 이것이 올바른 방법 일 경우 ..

답변

0

해결책을 찾았지만 완벽하지는 않습니다.

LogicalHandler 인터페이스를 구현했습니다. FactoryBean으로 설정하고 메시지가 아웃 바운드 또는 인바운드 인 경우 핸들러를 체크인하십시오.

public class LoggingHandler implements LogicalHandler<LogicalMessageContext> 

방법 :

public boolean handleMessage(LogicalMessageContext context) { 
    Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); 

    if (outboundProperty.booleanValue()) { 
     //log here 
    } else { 
     //or here 
    } 
    return true; 
} 

이 내가 응답이없는 방법을 호출 situatin을 제외하고 잘 작동합니다. 그런 다음 응답이있는 경우 두 번 호출하는 대신 한 번만 호출하는 메서드입니다.

관련 문제