<< 환경 >>
환경 : 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을 생성하면 안된다.
- 끝 -
'OpenSource > Apache CXF' 카테고리의 다른 글
[SOAP] 웹서비스를 구축하여 보자!(apache cxf 사용?) (0) | 2014.05.28 |
---|---|
Webservice 기초 (0) | 2013.02.25 |
Apache CXF??? (0) | 2012.11.16 |