Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions

OpenSource/Apache CXF 2013.09.04 10:22
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



<< 환경 >>

환경 : jboss-eap-5.1, jdk1.6.0_31, apache cxf 2.6.2

 

위의 환경속에서~~~~

vo(value object)에 Locale 라는 type으로 생성 하였다.

 

VO 안의 내용(기본적인 getter, setter가 있는 vo)

 

   private Locale userLocale;

 

   public Locale getUserLocale() {
        return userLocale;
    }

    public void setUserLocale(Locale userLocale) {
        this.userLocale = userLocale;
    }

 

<< Error 발생 >>

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.Locale does not have a no-arg default constructor.
 this problem is related to the following location:
  at java.util.Locale
  at private java.util.Locale kr.pe.acet.vo.aaa.userLocale
  at kr.pe.acet.vo.aaa
  at private kr.pe.acet.vo.aaa

  kr.pe.acet.vo.resource.bbb.domain.xxxxVo.aaa
  . . . . . .

 

 Webservice쪽에서 나고 있었다.(Provider쪽)

 

<< 해결 흐름 >>

모든 사람들이 입을 모아 default construct가 없으니 오류가 난다

개발자 A : private Locale userLocale=null;

그냥 null로 초기화를 해주면 된다며..J2EE, Spring..머라머라하는데 무슨말인지 아직도 이해가 가질 않는다ㅋ;

※ null로 초기화 해주었지만 되지 않았다....-_-;;

 

그래서 생성자를 통해 초기화를 해주기로 하였다.

ex) 생성자를 통한 초기화

public aaa(){  // 나는야 생성자~~
   userLocale = new Locale("en", "US"); // 미리 생성!
}

 

헉..이것 또한 같은 오류가 발생 하였다.

 

그래서 구글링을 해보았다.

cxf쪽과 jboss쪽에서 위와같은 Bug성 오류가 났었고 이것을 jira에 올려져있는 것을 알수 있었다. 

Thus, you would need to specify an XmlJavaTypeAdapter to map the Locale object to something that is jaxb/schema compliant.  XmlJavaTypeAdapter 요런게 필요하다고 말하고 있다..

 

참고 사이트(구글링)

   https://issues.apache.org/jira/browse/CXF-3386

   jboss관련 사이트도 있는데 별내용 없어서...링크는 pass~

 

그리고 더욱 더 웃낀 것은...

jboss 대신 apache-tomcat을 사용하였을 경우에..오류가 나지 않았다!!

환경 : apache-tomcat-6.0.32 , jdk1.6.0_31, apache cxf 2.6.2

 

결국 jboss위에서 돌려야하기 때문에 아래의 사이트를 참고하여 수정하였다. 아래의 소스는 오류가 난다;;

http://stackoverflow.com/questions/2522248/how-to-get-locale-from-its-string-representation-in-java

 

<< vo에 추가한 해결 소스 >>

더보기

 

 

   중요 팁!!  : 위의 소스에서 messageConverter를 사용한다면 getter쪽에서 Locale을 생성하면 안된다.

더보기

 

- 끝 -

 

 

 

 

 

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바