尝试执行axis2服务客户端时获取异常

时间:2012-05-29 10:33:44

标签: axis2

我正在尝试创建一个示例axis2 ServiceClient。抛出错误

org.apache.axiom.om.OMException: No meta factory found for feature 'default'; this usually means that axiom-impl.jar is not in the classpath
    at org.apache.axiom.om.OMAbstractFactory.getMetaFactory(OMAbstractFactory.java:170)
    at org.apache.axiom.om.OMAbstractFactory.getMetaFactory(OMAbstractFactory.java:135)
    at org.apache.axiom.om.OMAbstractFactory.getOMFactory(OMAbstractFactory.java:184)
    at org.apache.axis2.description.AxisDescription.<init>(AxisDescription.java:68)
    at org.apache.axis2.engine.AxisConfiguration.<init>(AxisConfiguration.java:148)
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:639)
    at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:184)
    at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:150)
    at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:143)
    at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:244)
    at org.apache.axis2.samples.tu.client.TUrlSOAPClient.addUrl(TUrlSOAPClient.java:46)
    at org.apache.axis2.samples.tu.client.TUrlClient.actionPerformed(TUrlClient.java:69)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

axiom-impl.jar出现在类路径中。以下是代码段。在控制台中,我可以看到sysout语句“已输入”,之后在ServiceClient对象创建时抛出错误。尝试使用axiom-impl.jar(1.2.12,1.2.13,1.2.7,1.2.5)的不同版本,但仍然得到相同的错误。

     public static String testFunction(String testData) throws Exception {
     System.out.println("Entered");
    //Create a service client
    ServiceClient client = new ServiceClient();
    System.out.println("Before calling set end point");
    //Set the endpoint address
    client.getOptions().setTo(new EndpointReference(EPR));
    System.out.println("After calling set end point");
    System.out.println("getPayload(url)="+getPayload(testData));
    //Make the reqest and get the response
    OMElement resp = client.sendReceive(getPayload(testData));
    //Extract the URL and return
    return extractUrl(resp);
}

4 个答案:

答案 0 :(得分:2)

通过axiom.jar替换所有三个单独的公理罐(axiom-impl-1.2.13.jar,axiom-dom-1.2.13.jar和axiom-api-1.2.13.jar)来解决这个问题。

答案 1 :(得分:2)

我有同样的错误,但最终在经过长时间的斗争后使用axiom-api 1.2.12和axiom-impl 1.2.12解决了。

答案 2 :(得分:1)

当我使用上面的jar时,我得到了另一个错误。 java.lang.ClassCastException:java.lang.ClassCastException:org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory

我必须将版本增加到每个jar的1.2.14

答案 3 :(得分:0)

我有同样的错误。我确实用axiom.jar替换了各个公理罐(axiom-impl-1.2.13.jar,axiom-dom-1.2.13.jar和axiom-api-1.2.13.jar),但错误仍在发生。

错误的根本原因是META-INF / axiom.xml文件的位置。在我的例子中,J2EE服务器容器的XMLParser在jar文件中本地化时无法打开axion.xml文件。

我必须将META-INF / axiom.xml复制到WEB-INF / classes / META-INF / axiom.xml中。