2014-01-24 62 views
1

我已经进入了一个场景,我必须得到一个基于Axis2的ws消费者在WebMethods中作为java服务工作。我第一次实施了WS消费者在NetBeans只是为了看看它的工作原理,因此我发现我需要罐子最少量的有以下几种:WebMethods8.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 ]

我在上传这些jar文件IS/packages/{package_name}/code/jars文件夹。每当我试图执行Java服务,将发送请求和处理我得到下面的异常反应:

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

从我发现,实际的错误消息如下IS错误日志文件:

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中的代码编译使用了与您的部署环境不同的公理jar。所以请检查您的类路径的部署env和netbeans是相同的。 – jayalalk

回答

1

其实解决这个问题有点棘手。首先,我手动地在IS服务器上手工配置软件包的清单文件,以使用软件包abnd中提供的jar,因此它不会与IS本身使用的Axis冲突。另一方面,我不得不手动添加ClassLoader,因为WebMethods无法像使用jar文件那样使用基于META-INF的信息。要解决此问题,只需使用:

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

解决了所有问题。