2009-09-18 5 views
2

Axis2 웹 서비스를 OC4J 10.1.3 어플리케이션 서버에 배치하려고합니다.axis2 및 OC4J 라이브러리 충돌 해결

필자는 이전에 1.4 축을 사용하고 있었고 방금 모든 파일이 포함 된 공유 라이브러리를 만들었습니다. 1.4와 함께 1.5로 패치 된 문제점이 있었으므로 이제는 사용하고 있지만 모든 라이브러리를 포함하지는 않습니다. 이번에는 axis2.war을 OC4J 서버에 배포하고 axis2 admin 페이지를 사용하여 웹 서비스를 배치하려고했습니다.

axis2를 통해 웹 서비스를 배포하면 java.lang.NoSuchMethodError: javax.jws.WebMethod.exclude()Z이 표시되지만 충돌하는 라이브러리를 찾을 수 없습니다. Axis2에는 새로운 jax-ws 라이브러리가 있지만 OC4J 앱 서버에 문제가 있다고 생각합니다. 나는 xml.jar을 배제했다 (이전 JAXB 1.0 라이브러리를 가지고 있기 때문에). 이것은 로컬 컴퓨터에서 문제를 해결하지만 리눅스에서는 문제를 해결하지 못한다.

먼저 로컬 폴더를 검색하기 위해 배포 계획을 편집하려고 시도했지만이 서비스를 배포 할 수 있지만 WSDL에 액세스하려고하면 클래스 캐스트 예외 및 JXDocumentBuilderFactory에 관한 오류가 발생합니다. 이 순간 정확한 오류가 없음).

리눅스 상자의 공유 라이브러리를 내 로컬 컴퓨터의 공유 라이브러리와 비교하고 각각에 동일한 라이브러리를 사용했습니다 (각 항아리의 버전을 확인하지는 못했습니다). axis2가 OC4J에 배포되고 서비스를 axis2에 배치하면 axis2 라이브러리 (jax-ws 등)를 상속받지 못합니까?

+0

예외에 대한 전체 스택 추적이 있습니까? 유죄 선고를 확인하는 데 도움이 될 수 있습니다. –

+0

어떤 버전의 OC4J를 사용하고 있습니까? 10.1.3을 언급했지만 10.1.3.1 또는 10.1.3.3 등 또는 최근에 릴리스 된 10.1.3.5를 의미 했습니까? –

+0

죄송합니다. 지금은 전체 스택 트레이스가 없지만 버전은 10.1.3.1.0입니다. 내가 필요한 것은 xmlparserv2였다.jar는 공유 라이브러리에 있지만 내 웹 서비스 (다른 lib와 충돌 할 수 있음)에 액세스하려고 시도 할 때 발견되지 않았습니다. 웹 응용 프로그램 라이브러리를 검색 할 수 있도록 확인란을 선택하고 웹 응용 프로그램 라이브러리에 xmlparserv2.jar를 포함 시켰습니다. 그래도 다른 갈등이 생길지 모르겠다. – ravun

답변

4

당신의 오리온-application.xml에이를 추가하여 충돌 상속 된 라이브러리를 제거하십시오 :

여기
<orion-application> 
    <imported-shared-libraries> 
    <remove-inherited name="PUT_HERE_THE_NAME_OF_THE_LIBRARY"/> 
    </imported-shared-libraries> 
</orion-application> 

더 : Removing and/or Replacing an Oracle Shared Library Imported by Default

편집 :
내가 검색 한 공유 라이브러리 및 발견 거기에없는 jws-api.jar은 부팅 할 때로드되며 쉽게 제거 할 수 없습니다.

OC4J JAX-WS 라이브러리 대체
OC4J는 JAX-WS에 대한 예비 지원을 제공하지만 불행하게도 OC4J 부트 중에 오래된 JAX-WS API를로드하고 Oracle에 의한 구현을 의미합니다. 이것은 OC4J 부트의 초기 단계에서 공유 라이브러리가 작동하기 전에 발생합니다.
부트 타임 OC4J 라이브러리는 $ ORACLE_HOME/j2ee/home/oc4j.jar 부트 스트랩 jar의 boot.xml 파일에 구성됩니다. 이 제거하려면 다음

1 복사를 jar 파일을 $ {oracle.home}에/웹 서비스/lib 디렉토리/잭스 - WS
2 풀고 OC4J.jar이
META-INF/부팅을 3 - 파일 찾기. XML
당신의 항아리와이 줄 경로를 4-교체 :

<code-source 
    path="${oracle.home}/webservices/lib/jws-api.jar" 
    if="java.specification.version == /1\.[5-6]/" 
/> 

5 리 패키지 oc4j.jar (에 대해 잊지 마세요 MANIFEST.MF - 사용 항아리 -m META-INF/MANIFEST.MF)

원본 기사 : OC4J Configuration for Web Services

+0

불행하게도 이미 실행중인 다른 서비스가 있습니다. 오래된 라이브러리, 그래서 나는 서버에서 아무것도 변경하지 않도록 노력하고있다. 또한 Oracle Enterprise Manager를 통해서만 액세스 할 수 있으며 실제 시스템 자체에 대한 액세스 권한은 없습니다. 나는 천천히 물건들을 함께 엮어 내고 있지만, 정말 고통 스러웠습니다. – ravun