2014-04-18 6 views
1

오늘 개발 프로젝트에서 문제가 발생했습니다. 나는 Glassfish 환경에서 전에했던 것처럼 TomEE 1.6.0+ 환경에서 webservice를 만들고 싶었다. 나는 문제가 많아서 Apache CXF를 Sun Metro 스택 (버전 2.3)으로 대체하려고 생각했습니다.Apache CXF를 TomEE의 Sun Metro로 바꾸십시오.

본인이 직접 튜토리얼을 찾지 못 했으므로 직접 해결하려고했습니다. 내 솔루션 TomEE lib 폴더에서 모든 cxf - *. jar 및 openejb - cxf - *. jar 삭제하고 webservices - *. jar 추가했습니다 (단지 다음과 같은 4 라이브러리 : rt, 도구, 추가, api)를 메트로 배포판에서 가져옵니다. 설치 ant 스크립트를 살펴본 결과 설치 정의에 따라 파일을 선택했습니다.

이제 모든 것이 완벽 해 보입니다. 이제는 이전에 일했던 것과 똑같은 방식으로 webservices를 사용할 수 있습니다. 내 프로젝트가 TomeEE 환경에 원활하게 배포됩니다.

내 질문은 지금 매우 간단합니다 :

이 올바른 해결책인가, 아니면 해킹처럼 보인다?

의견에 대해 미리 감사드립니다.

답변

0

확실한 대답은 TomEE 프로젝트의 누군가에게서 나올 것이지만, 나는이 일이 놀랍다 ... 그러나 나는 너를 위해 해 준 것을 기쁘게 생각한다.

TomEE는 특정 목적으로 CDI 용 CXF에 바인딩되어 있습니다. jax-rs 주석을 스캔하고, 필드를 주입하고, 서비스를 노출 할 수 있습니다 (열거하기에 너무 많음). 응용 프로그램이 해당 기능에 의존하지 않는 한 괜찮을 수 있습니다.

지원되지 않는 구성을 실행 중이므로 핵심은 철저한 테스트입니다. 나는 당신에게 분기 커버리지의 편안한 수준을 얻을 통합 테스트 (SOAP-UI?) 배터리를 만들 것입니다 ... 적어도 당신의 행복한 길을 커버하십시오.

TomEE에 대한 좋은 점은 당신이 발견 한 것처럼 믿을 수 없을만큼 모듈화되어 있다는 것입니다. 행운을 빌며 나중에 모든 일이 어떻게 진행될 것인지 지역 사회에 알릴 수 있습니다.

+0

그렇습니다. apache-cxf jax-rs를 사용하지 않으면 주석 처리가 실제로 실패하지만 물론 jax-rs 구현이 없기 때문에 이것은 사소한 결과입니다. 그래서 나는 더 많은 실험을했습니다. apache-cxf 라이브러리를 다시 변경했습니다. 이제 루트 컨텍스트가 있기 때문에 jax-rs 리소스를 모두 내 URL s destroyes에 포함합니다. jax-rs 리소스 클래스를 삭제하면 url이 다시 좋게됩니다. 그리고 webservice는 훌륭하게 작동하지만 webservice 클라이언트는 정책 대안 중 "어느 정책 대안도 만족할 수 없습니다"라는 정책 오류를 제공하므로 모든 기능을 사용할 수 없습니다. 더 많은 연구가 필요해. –