CXF & AXIS2
- 작성자 :
- 홍*관
- 작성일 :
- 2013-03-06 09:18:23
- 조회수 :
- 1,460
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요.
기존에 잘 운영되던 시스템에 추가 서비스를 붙이다 에러가 나서 문의드립니다.
신규 추가된 라이브러리를 개발시에는 로컬에 임시로
src/main/webapp/WEB-INF/lib 폴더에 복사해놓고 개발하여서 테스트를 잘 하였습니다.
서버로 배포하기전에 Nexsus 서버를 이용 Maven 설정을 하여 테스트 하니 서버구동시 오류가 납니다.
에러메세지는
[2013-03-05 09:02:08,376][org.springframework.web.context.ContextLoader][ERROR]- Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eaprvlnkg': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.ws.commons.schema.XmlSchemaCollection.read(Lorg/w3c/dom/Document;Ljava/lang/String;)Lorg/apache/ws/commons/schema/XmlSchema;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
이며 확인결과 webservice 관련 모듈에서 에러입니다.
에러가 나는 jar 파일은 아래 4개 파일입니다.
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom-impl</artifactId>
<version>1.1.1</version>
</dependency>
검색하고 여러가지를 유추 결과 기존 웹서비스를 CXF 라이브러리로 서비스 중이었으며 신규로 추가되는 라이브러리가 AXIS2 로 두개가 같이 올려지면서 에러가 나는걸로 추정합니다.
서비스제공한쪽에서는 라이브러리 로딩 순서를 바꿔보라고 하는데 어떤방법으로 가능한가요?
1. Maven pom.xml 에 dependency 순서를 바꾸는 방법이 될련지?
(바꿔서 해봤는데 안되네요. ㅠㅜ)
2. Class Path 에서 순서를 주어야 하는지?
3. Maven 을 사용하지 않고 lib 폴더에 직접 복사하여 사용해야 하는지?
최종 해결 목적은 CXF, AXIS2 라이브러가 같이 구동되는게 목적입니다.
어떤 좋은 방법이 있을까요?
기존에 잘 운영되던 시스템에 추가 서비스를 붙이다 에러가 나서 문의드립니다.
신규 추가된 라이브러리를 개발시에는 로컬에 임시로
src/main/webapp/WEB-INF/lib 폴더에 복사해놓고 개발하여서 테스트를 잘 하였습니다.
서버로 배포하기전에 Nexsus 서버를 이용 Maven 설정을 하여 테스트 하니 서버구동시 오류가 납니다.
에러메세지는
[2013-03-05 09:02:08,376][org.springframework.web.context.ContextLoader][ERROR]- Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eaprvlnkg': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.apache.ws.commons.schema.XmlSchemaCollection.read(Lorg/w3c/dom/Document;Ljava/lang/String;)Lorg/apache/ws/commons/schema/XmlSchema;
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
이며 확인결과 webservice 관련 모듈에서 에러입니다.
에러가 나는 jar 파일은 아래 4개 파일입니다.
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom-api</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>ws-commons</groupId>
<artifactId>axiom-impl</artifactId>
<version>1.1.1</version>
</dependency>
검색하고 여러가지를 유추 결과 기존 웹서비스를 CXF 라이브러리로 서비스 중이었으며 신규로 추가되는 라이브러리가 AXIS2 로 두개가 같이 올려지면서 에러가 나는걸로 추정합니다.
서비스제공한쪽에서는 라이브러리 로딩 순서를 바꿔보라고 하는데 어떤방법으로 가능한가요?
1. Maven pom.xml 에 dependency 순서를 바꾸는 방법이 될련지?
(바꿔서 해봤는데 안되네요. ㅠㅜ)
2. Class Path 에서 순서를 주어야 하는지?
3. Maven 을 사용하지 않고 lib 폴더에 직접 복사하여 사용해야 하는지?
최종 해결 목적은 CXF, AXIS2 라이브러가 같이 구동되는게 목적입니다.
어떤 좋은 방법이 있을까요?
A
안녕하세요.. 홍승관님..
우선.. maven의 순서나.. library 로딩 순서로는 해결하실 수 없으실 것 같습니다. (lib에 직접 복사하셔도 ...)
하나가 먼저 로딩되면.. 나머지는 로딩되지 못하기 때문에 .. 둘 중 하나가 정상이라면.. 나머지는 오류가 발생할 수 밖에 없습니다...
이 경우는 2개의 기능을 web application으로 분리 하시는 방법뿐이 없으실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
우선.. maven의 순서나.. library 로딩 순서로는 해결하실 수 없으실 것 같습니다. (lib에 직접 복사하셔도 ...)
하나가 먼저 로딩되면.. 나머지는 로딩되지 못하기 때문에 .. 둘 중 하나가 정상이라면.. 나머지는 오류가 발생할 수 밖에 없습니다...
이 경우는 2개의 기능을 web application으로 분리 하시는 방법뿐이 없으실 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.