Getting Exception while trying to execute axis2 service client

匿名 (未验证) 提交于 2019-12-03 09:06:55

问题:

I am trying to create a sample axis2 ServiceClient. It is throwing below error

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)

The axiom-impl.jar is present in the classpath. Below is the code snippet. In the console I can see that sysout statement "Entered" is displayed, after that its throwing error at ServiceClient object creation. Have tried using different versions of the axiom-impl.jar (1.2.12, 1.2.13, 1.2.7, 1.2.5) but still getting the same error.

     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); }

回答1:

Solved this by replacing all the three individual axiom jars( axiom-impl-1.2.13.jar, axiom-dom-1.2.13.jar and axiom-api-1.2.13.jar) by just axiom.jar.



回答2:

when I use above jar I got another error. java.lang.ClassCastException: java.lang.ClassCastException: org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory

I had to increase version to 1.2.14 of each jar



回答3:

I had the same error but finally got solved by using axiom-api 1.2.12 and axiom-impl 1.2.12 after long struggle.



回答4:

I had the same error. I did replace the individual axiom jars( axiom-impl-1.2.13.jar, axiom-dom-1.2.13.jar and axiom-api-1.2.13.jar) by just axiom.jar, but the error still happening.

The root cause of the error was the location of META-INF/axiom.xml file. In my case, the XMLParser of the J2EE server container can not open the axion.xml file when it be localized within a jar file.

I had to copy META-INF/axiom.xml into WEB-INF/classes/META-INF/axiom.xml .



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!