2008년 02월 04일
resin 3.1.3 + axis2 1.3 환경에서 MTOM 오류
개요 :
파일 전송을 위해 axis2 의 mtom(adb binding) 을 사용했는데 테스트 환경에서는 정상적으로
작동하지만 실 서버 환경에서는 오류 발생
오류내용 :
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement AttachmentRequest
점검내용 :
axis2 라이브러리만을 포함한 java application 테스트 환경에서는 정상적으로 작동하지만
resin 상의 web application 환경에서는 오류발생
레진의 라이브러리와 axis2의 라이브러리 충돌 가능성이 있어서 로딩되는 순서를 바꿔보면서 확인한 결과
axis2 라이브러리에 포함된 wstx-asl-3.2.1.jar 와 레진 라이브러리에 포함된 resin.jar 의 로딩순서에 따라서
오류가 발생되는 것으로 확인됨
- wstx-asl-3.2.1.jar 먼저 로드시 정상작동
- resin.jar 먼저 로드시 오류
해당 라이브러리의 jar 를 열어보면 META-INF/services 에
javax.xml.stream.XMLEventFactory
javax.xml.stream.XMLInputFactory
javax.xml.stream.XMLOutputFactory
의 구현 클래스에 대한 정의가 있으며 서로 다른 클래스를 사용하고 있음
resin :
javax.xml.stream.XMLEventFactory => com.caucho.xml.stream.XMLEventFactoryImpl
javax.xml.stream.XMLInputFactory => com.caucho.xml.stream.XMLInputFactoryImpl
javax.xml.stream.XMLOutputFactory => com.caucho.xml.stream.XMLOutputFactoryImpl
axis2 / wstx-asl-3.2.1 :
javax.xml.stream.XMLEventFactory => com.ctc.wstx.stax.WstxEventFactory
javax.xml.stream.XMLInputFactory => com.ctc.wstx.stax.WstxInputFactory
javax.xml.stream.XMLOutputFactory => com.ctc.wstx.stax.WstxOutputFactory
처리 :
우선 resin.jar/META-INF/services
하위의 팩토리 정의를 wstx-asl-3.2.1.jar 에 정의되어있는 클래스로 대체함
추가 :
비슷한 문제로 resin issue tracker 에 해당 클래스들이 문제가 있어서 다른 클래스로 대체했다는 내용이 나온다
0001823: createXMLStreamReader throws NullPointerException on charsetName
( http://bugs.caucho.com/view.php?id=1823 )
관련자료 :
jar file spec - http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service%20Provider
axis2 MTOM - http://ws.apache.org/axis2/1_3/mtom-guide.html
파일 전송을 위해 axis2 의 mtom(adb binding) 을 사용했는데 테스트 환경에서는 정상적으로
작동하지만 실 서버 환경에서는 오류 발생
오류내용 :
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement AttachmentRequest
점검내용 :
axis2 라이브러리만을 포함한 java application 테스트 환경에서는 정상적으로 작동하지만
resin 상의 web application 환경에서는 오류발생
레진의 라이브러리와 axis2의 라이브러리 충돌 가능성이 있어서 로딩되는 순서를 바꿔보면서 확인한 결과
axis2 라이브러리에 포함된 wstx-asl-3.2.1.jar 와 레진 라이브러리에 포함된 resin.jar 의 로딩순서에 따라서
오류가 발생되는 것으로 확인됨
- wstx-asl-3.2.1.jar 먼저 로드시 정상작동
- resin.jar 먼저 로드시 오류
해당 라이브러리의 jar 를 열어보면 META-INF/services 에
javax.xml.stream.XMLEventFactory
javax.xml.stream.XMLInputFactory
javax.xml.stream.XMLOutputFactory
의 구현 클래스에 대한 정의가 있으며 서로 다른 클래스를 사용하고 있음
resin :
javax.xml.stream.XMLEventFactory => com.caucho.xml.stream.XMLEventFactoryImpl
javax.xml.stream.XMLInputFactory => com.caucho.xml.stream.XMLInputFactoryImpl
javax.xml.stream.XMLOutputFactory => com.caucho.xml.stream.XMLOutputFactoryImpl
axis2 / wstx-asl-3.2.1 :
javax.xml.stream.XMLEventFactory => com.ctc.wstx.stax.WstxEventFactory
javax.xml.stream.XMLInputFactory => com.ctc.wstx.stax.WstxInputFactory
javax.xml.stream.XMLOutputFactory => com.ctc.wstx.stax.WstxOutputFactory
처리 :
우선 resin.jar/META-INF/services
하위의 팩토리 정의를 wstx-asl-3.2.1.jar 에 정의되어있는 클래스로 대체함
추가 :
비슷한 문제로 resin issue tracker 에 해당 클래스들이 문제가 있어서 다른 클래스로 대체했다는 내용이 나온다
0001823: createXMLStreamReader throws NullPointerException on charsetName
( http://bugs.caucho.com/view.php?id=1823 )
관련자료 :
jar file spec - http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service%20Provider
axis2 MTOM - http://ws.apache.org/axis2/1_3/mtom-guide.html
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
# by | 2008/02/04 13:32 | 밥벌이 | 트랙백 | 핑백(1) | 덧글(0)






☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
... :Envelope>0ns1 에 대한 정의가 빠진것을 확인 할 수 있음stub 클래스를 좀 뒤져보다가 javax.xml 뭐시기 인터페이스를 사용하는 것을 보고 예전에발생했던 MTOM 과의 오류와 관련있을 것 같아서 동일하게 환경 설정 변경하니깐 해결 됨 ... more