带有 Axis2 客户端的自定义 Mule 云连接器

Custom Mule Cloud Connector with Axis2 Client

我为 Mule 开发了一个自定义云连接器。我使用 Maven 在 IntelliJ 中开发了它。我使用 Axis2 和 XMLBeans 从第 3 方 WSDL 生成代码。我开发的测试用例在与 Web 服务交互后通过并显示了预期的结果。 "mvn clean package" 成功通过所有测试并构建站点。

我遇到的问题是在构建 Mule 项目的任何时候使用它。在启动应用程序时,我已将 Axis2 1.6.3 库添加到 Anypoint 创建的 jvm 的类路径根目录中。当我提交与我的连接器交互的请求时,出现以下错误:


Message : null (java.lang.ExceptionInInitializerError). Message payload is of type: String Type : org.mule.api.MessagingException Code : MULE_ERROR--2 JavaDoc : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html Payload : Testing ******************************************************************************** Exception stack is: 1. null (java.lang.NullPointerException) org.apache.axiom.locator.DefaultOMMetaFactoryLocator:72 (null) 2. null (java.lang.ExceptionInInitializerError) org.apache.axis2.description.AxisDescription:72 (null) 3. null (java.lang.ExceptionInInitializerError). Message payload is of type: String (org.mule.api.MessagingException)
org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor:32 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html) ******************************************************************************** Root Exception stack trace: java.lang.NullPointerException at org.apache.axiom.locator.DefaultOMMetaFactoryLocator.(DefaultOMMetaFactoryLocator.java:72)

查看 DefaultOMMetaFactoryLocator,对于 axiom-api1.2.14,我在第 72 行看到以下内容:

Enumeration e = classLoader.getResources(ImplementationFactory.DESCRIPTOR_RESOURCE);

静态引用是 axiom.xml 文件。我尝试手动添加文件,但继续出现空指针错误。生成的代码使用此代码通过客户端建立连接,但不受我的代码的直接影响。能够在 Mule ESB 的 Cloud Connector 中使用 Axis2 是否缺少某些东西?为什么它可以在 Maven 测试中工作,但在任何时候都不能?

附加信息:

Axis2 1.6.3 公理* 1.2.14 骡子 ESB 3.7

该错误表明 Axiom 是由 JVM 的 bootstrap 类加载器加载的。我怀疑这样做是否是在 Anypoint 上部署东西的推荐方式。