2011-10-28 3 views
4

JAXB와 함께 CXF 2.4를 사용하고 있습니다.다른 패키지의 모든 클래스에 대해 XmlAdapter를 전역으로 등록합니다.

내 owm 클래스의 모든 인스턴스 (예 : LWDate)에 대해 전역 XmlAdapter가있을 수 있습니까? 내가 CXF와 함께 사용할 각 PARAM, 방법 또는 패키지에 @XmlJavaTypeAdapter을 추가 할 필요가 지금

public class LWDateAdapter extends XmlAdapter<Date, LWDate> 

:

나는 클래스를 썼다. 예 :

@WebMethod void test (@WebParam(name="Birthdate") @XmlJavaTypeAdapter(LWDateAdapter.class) LWDate pBirthdate){} 

나는 CXF/JAXB 항상 java.util.Date 내 클래스 LWDate 것이 가능하다 바인딩 요청하고자하는?

업데이트 :@XmlJavaTypeAdapter은 2.4.4 버전부터 시작하여 패키지 수준에서 작동합니다. according to that issue.

답변

5

패키지 레벨에서 @XmlJavaTypeAdapter 주석을 사용하는 것이 최선의 방법입니다. 당신은 당신이 항상 XmlAdapter으로 취급 할 도메인 클래스가있는 경우

당신의 @XmlJavaTypeAdapter 주석을 사용할 수 있습니다 : 다음 나는 Joda-Time 클래스에 대한이 전략을 사용하는 게시물입니다 유형 수준 :

+0

나는 내 질문 앞에 글을 보았다. 불행히도 유형 수준의 주석은 나를 위해 작동하지 않습니다 (아무 이유, 어느 쪽도 아니 구현도). 패키지 레벨은 IMHO 접근 방식입니다. Jaxb 2.1 (Sun JDK에 내장). – FoxyBOA

+1

문제점 https://issues.apache.org/jira/browse/CXF-3205에 따라 패키지 레벨 주석은 CXF에서 작동하지 않습니다 (다음 버전 2.4.4에서 수정 예정) – FoxyBOA

+0

@FoxyBOA - 사용하는 경우 JAXB 공급자 인 EclipseLink JAXB (MOXy)에서 JAXB 메타 데이터의 XML 표현을 사용할 수 있습니다. http://blog.bdoughan.com/2011/04/moxys-xml-metadata-in-jax-rs-service.html –

관련 문제