2014-01-29 1 views
1

두 개의 내부 클라이언트 라이브러리가 있습니다. 하나는 JAX-WS RI (나는 지금 메트로라고 생각한다.)과 다른 하나는 Apache CXF이다. 이 두 클라이언트는 동일한 웹 응용 프로그램에로드해야합니다. 둘 다 Metro를 사용할 수없는 이유는 고객 중 한 명이 XmlBeans을 필요로하기 때문입니다 (스키마를 변환하는 XJB에서 JAXB를 작동시키지 못했음에도 불구하고). CXF에 다른 클라이언트 그러나 그때 사용을 사용하기 전에 ThreadLocal 변수를 설정하는 정적 메서드를 가지고 실제하는 프로 바이더를 말한다 ThreadLocal 변수를 사용하는 사용자 지정 가짜 Provider 무엇을 만들 경우 같아요 확실한 솔루션은 포트입니다두 개의 다른 JAX-WS 클라이언트 구현 사용

고객.

그게 나쁜 생각입니까?

답변

0

꽤 멋지게 작동하는 ThreadLocal 기반 공급자를 만들었습니다.

이 코드는 gist에서 볼 수 있습니다.

당신은 같은 잭스 - WS 및 CXF에서 전환 할 수 있습니다 공급자

ThreadLocalProvider.setProvider(ThreadLocalProvider.JAXWS_RI_PROVIDER); 

또는

ThreadLocalProvider.setProvider(ThreadLocalProvider.CXF_PROVIDER); 
에게 강제로

관련 문제