2012-06-20 6 views
1

우리는 웹 서비스의 호스트를 노출하는 응용 프로그램 서버가 있습니다. JSF 애플리케이션에서 웹 서비스를 사용하여 사용자 인터페이스를 제공하는 바람둥이를 운영하고 있습니다. 웹 서비스와 통신하기 위해 jaxws가 사용하는 프록시 클래스를 리턴하는 "getWebservice()"메소드가있는 bean이 있다고 가정하십시오. 이것은 우리가 최소한의 노력으로 웹 서비스와 상호 작용할 수 있습니다 : 다음 #을 사용하여 wsimport의를 사용하여 생성 {myBean.webservice.myProperty} 등이 노출 된 메소드를 재사용 할 때이 웹 서비스의 상호 작용의 많은을 필요로 볼 수 있습니다 그러나JSF에서 캐싱 JAXWS

. 우리의 유즈 케이스에서 대부분의 메소드는 @RequestScoped 빈의 지속 기간 동안 적어도 정적이다. 따라서 대부분의 메소드의 상호 작용은 적어도 한번은 요청에 대해 호출되면 캐시되어야한다.

현재 우리의 설치는 빈에 래퍼 서비스를 만드는 것입니다 각 래퍼 정확히 같은 일을 수행합니다

if (methodResponse == null) 
    methodResponse = getWebservice().getMethod(); 
return methodResponse; 

당신이 매우 빠르게 아주 무심 얻을 것을 볼 수 있습니다. 캐싱을 위해 jaxws 메서드에 주석을 추가하는 방법이 있습니까? 아니면 인터페이스를 기반으로 자체 프록시 클래스를 생성하고 어떻게 든 jaxws에서 사용하는 프록시에 "연결"(및 일반 캐싱 수행) 할 수 있습니까? 아니면 캐싱을 수행하는 자체 고유 주석을 만들 수 있습니까?

답변

1

당신은 당신의 웹 서비스 클라이언트 프록시 개체 주위에 다른 캐싱 Proxy를 생성하고 InvocationHandler 함께 제공 할 수있는, 즉 메소드 호출의 결과를 캐시합니다.

단계별 설명 지침을 확인하고 샘플 코드를 다운로드하려면 this blog post을 확인하십시오.

+0

아직 튜토리얼에 따라 실제로 프록시를 만들지는 못했지만 기사를 스캔하고 정확히 필요한 것 같습니다. 감사! – nablex