2014-01-24 5 views
1

WebMethods 내에서 Axis2 기반 소비자를 Java 서비스로 사용해야하는 시나리오가 있습니다. 나는 그것이 작동하는지 바로 볼 수 넷빈즈에 먼저 WS 소비자를 구현했습니다 때문에 내가 필요한거야 단지의 최소 금액은 다음과 같은 것을 발견 : 나는 아래이 jar 파일을 업로드 한WebMethod8.2의 Axis2 WS 소비자

[ xmlschema-1.4.7.jar, apache-mime4j-core-0.7.2.jar, axiom-api-1.2.13.jar, axiom-impl-1.2.13.jar, axis2-adb-1.6.2.jar, axis2-kernel-1.6.2.jar, axis2-transport-http-1.6.2.jar, axis2-transport-local-1.6.2.jar, commons-codec-1.3.jar, commons-httpclient-3.1.jar, commons-logging-1.1.1.jar, httpcore-4.0.jar, mail-1.4.jar, neethi-3.0.2.jar, wsdl4j-1.6.2.jar ]

IS/packages/{package_name}/code/jars 폴더에 있습니다. 나는 실제 오류 메시지는 다음과 같다 것을 발견 IS 오류 로그 파일에서

java.lang.reflect.InvocationTargetException: org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

: 나는 요청을 보낼 것입니다 자바 서비스를 실행하고 나는 다음과 같은 예외가 응답을 처리하려고 할 때마다

org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory; Caused by: java.lang.reflect.InvocationTargetException: null Caused by: java.lang.NoSuchMethodError:org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

플랫폼은 Linux 환경에서 WebMethods 8.2입니다. JDK 버전은 1.6.0_32이고 WebMethods 아래의 응용 프로그램 서버는 Jetty입니다.

+0

netbeans에서 코드 컴파일이 전개 환경과 다른 공리 항아리를 사용하는 것처럼 보입니다. 따라서 클래스 경로에서 deploy env와 netbeans가 동일한 지 확인하십시오. – jayalalk

답변

1

사실이 문제의 해결 방법은 약간 까다 롭습니다. 우선 수동으로 IS 서버의 패키지 매니페스트 파일을 패키지 abnd에 제공된 jars를 사용하도록 구성해야 했으므로 IS 자체에서 사용하는 Axis와 충돌하지 않습니다. 반면 WebMethods는 JAR 파일의 META-INF 기반 정보를 사용할 수 없으므로 수동으로 ClassLoader를 추가해야했습니다. 이 문제를 해결하려면 다음을 사용하십시오.

System.setProperty("org.apache.axiom.om.OMMetaFactory", "org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory"); 

그러면 모든 문제가 해결됩니다.