equinox 플랫폼에서 xmlbeans 사용시의 문제

11 views
Skip to first unread message

Chungho Lee

unread,
Aug 12, 2010, 3:47:29 AM8/12/10
to OSGi &SpringDM
안녕하세요?

현재, equinox에서 osgi bundle 를 구현하고 있는데,
XmlBeans(2.4)를 이용한 xml 문서 파싱 중에 이상한 문제가 발생하여 문의 드립니다.

A 라는 번들에서 아래의 코드를 실행하는 경우, 정상적으로 원하는 xml 파싱이 이루어집니다.

XmlObject docXml = (XmlObject)XmlObject.Factory.parse(new File
("test.xml"));
System.out.print("Type of docXml: " + docXml.getClass());

정상적인 결과: "Type of docXml: class myclass"

그런데, 새로운 HTTP 서블릿 번들(B)을 만들고, B 번들에서 A 번들을 호출하게 되면,
아래와 같이 xml 파싱 중에 오류가 발생합니다.
비정상적인 결과: "Type of docXML: class
org.apache.xmlbeans.impl.values.XmlAnyTypeImpl"

위의 두 경우를 비교하면, A 번들의 동일한 코드가 실행되는 것이며, 차이라면 다른 번들에서 호출되어 실행된다는 점 뿐입니다.

XmlBeans가 OSGi 번들에서 사용시에 어떤 문제가 있는 것인가요?

아이디어 있으시면 알려주세요.

감사합니다.

Chris Kwon

unread,
Aug 12, 2010, 5:20:46 AM8/12/10
to osgi-s...@googlegroups.com
말씀하신 내용만으로는
B 번들에서 A 번들의 클래스 사용시 Classpath 설정이 약간 오류가 있는듯 한데요.
해당 클래스 패키지를 그냥 import-package 에 넣으신건가요 ?

xmlbeans 자체가 한단계 건너뛰어 사용되면서 제대로 처리가 안되는듯 합니다.
혹시 xmlbeans 클래스를 B 에서 import 해보면 어떤가요 ?

==
Guru / Chris Kwon / 권정혁
gu...@xguru.net
http://xguru.net
http://twitter.com/xguru


2010/8/12 Chungho Lee <chung...@gmail.com>

Chungho Lee

unread,
Aug 12, 2010, 9:32:42 PM8/12/10
to OSGi &SpringDM
빠른 답변 감사드립니다.

A번들의 클래스라면 서비스로 등록해서, B 번들에서 해당 서비스를 호출한 것이고,
xml 스키마의 컴파일된 클래스(myclass) 또한 B 번들에 import-package에 넣어 있습니다.
그리고, 이미 B번들에서 xmlbeans 클래스를 import 해 보았지만, 결과는 동일 했습니다.

해외 포럼 사이트에서 찾아본 것 중에 비슷한 사례가 있는데요.
물론 경우가 tomcat 상에는 잘 동작하면서 Junit 테스트시 오류가 나는 경우이긴 합니다만,
http://old.nabble.com/Strange-Type-Resolution-Error-td2708361.html#a2708361

문제 원인이 SOAP marshalling/unmarshalling 이라고 하는데 정확한 해결법을 모르겠습니다.

감사합니다.

On 8월12일, 오후6시20분, Chris Kwon <gurug...@gmail.com> wrote:
> 말씀하신 내용만으로는
> B 번들에서 A 번들의 클래스 사용시 Classpath 설정이 약간 오류가 있는듯 한데요.
> 해당 클래스 패키지를 그냥 import-package 에 넣으신건가요 ?
>
> xmlbeans 자체가 한단계 건너뛰어 사용되면서 제대로 처리가 안되는듯 합니다.
> 혹시 xmlbeans 클래스를 B 에서 import 해보면 어떤가요 ?
>
> ==
> Guru / Chris Kwon / 권정혁

> g...@xguru.nethttp://xguru.nethttp://twitter.com/xguru
>
> 2010/8/12 Chungho Lee <chungho....@gmail.com>


>
>
>
> > 안녕하세요?
>
> > 현재, equinox에서 osgi bundle 를 구현하고 있는데,
> > XmlBeans(2.4)를 이용한 xml 문서 파싱 중에 이상한 문제가 발생하여 문의 드립니다.
>
> > A 라는 번들에서 아래의 코드를 실행하는 경우, 정상적으로 원하는 xml 파싱이 이루어집니다.
>
> > XmlObject docXml = (XmlObject)XmlObject.Factory.parse(new File
> > ("test.xml"));
> > System.out.print("Type of docXml: " + docXml.getClass());
>
> > 정상적인 결과: "Type of docXml: class myclass"
>
> > 그런데, 새로운 HTTP 서블릿 번들(B)을 만들고, B 번들에서 A 번들을 호출하게 되면,
> > 아래와 같이 xml 파싱 중에 오류가 발생합니다.
> > 비정상적인 결과: "Type of docXML: class
> > org.apache.xmlbeans.impl.values.XmlAnyTypeImpl"
>
> > 위의 두 경우를 비교하면, A 번들의 동일한 코드가 실행되는 것이며, 차이라면 다른 번들에서 호출되어 실행된다는 점 뿐입니다.
>
> > XmlBeans가 OSGi 번들에서 사용시에 어떤 문제가 있는 것인가요?
>
> > 아이디어 있으시면 알려주세요.
>

> > 감사합니다.- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -

Reply all
Reply to author
Forward
0 new messages