2015-06-15 3 views
0

Используя RAD v7 с WebSphere AS v6.1, я получаю следующее:Apache axis2/axiom NoSuchMethodError

java.lang.NoSuchMethodError: org/apache/axiom/om/OMAbstractFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

Другие ответы (here и here) показали, что это происходит из-за конфликтующих банки. Я установил последний исправленный пакет RAD/WS, убедился, что использую только одну версию axis2 (v1.6.2) & axiom-api (v1.2.13), очищенный & несколько раз создал мое рабочее пространство и убедился, что правильные банки развертывается. Я также попытался установить политику загрузчика класса WAS на «parent last».

Мой вопрос: Есть ли какие-либо причины, кроме противоречивых версий jar, которые могут вызвать эту проблему?

Longer ошибка:

WebApp E [Servlet Error]-[EOEServlet]: java.lang.NoSuchMethodError: org/apache/axiom/om/OMAbstractFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory; at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:150) at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:133) at org.apache.axiom.om.OMXMLBuilderFactory.createOMBuilder(OMXMLBuilderFactory.java:104) at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:590) at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:575) at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:90) at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:857) at org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:116) at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64) at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:210) at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:151) at org.apache.axis2.client.ServiceClient.(ServiceClient.java:144)

+0

Это происходит в профиле WebSphere, в котором установлен пакет функций веб-служб? –

+0

@ Andreas Veithen, Он делает. WebServices Feature Pack v6.1.0.9 – martieva

+0

Я никогда не мог решить эту проблему конкретно, но я считаю, что предоставленные ответы являются исчерпывающими для всех, у кого есть подобные проблемы. – martieva

ответ

1

Axis2 и Axiom являются частью среды выполнения WebSphere в версии 7.0 и выше, а также в версии 6.1 с установленным пакетом функций веб-сервисов. Они обеспечивают реализацию JAX-WS в WebSphere, и их классы видны приложениям. Это вызывает конфликты с приложениями, которые упаковывают свои собственные версии этих библиотек. Чтобы решить эту проблему, вам необходимо переключить политику загрузчика классов на родительскую.

Обратите внимание, что в некоторых случаях это может быть не достаточно, и вы должны сделать некоторые дополнительные изменения, как описано здесь:

https://axis.apache.org/axis2/java/core/docs/app_server.html

1

Для все, что стоит, Axiom v1.2.13 действительно правильный вариант для использования с Axis2 v1.6.2.

У меня WAS 8.5 (по сравнению с вашим 6.1), и я давно прекратил использовать RAD Developer (я обычно могу делать все, что хочу/нуждаюсь в Eclipse).

Но вы можете захотеть взглянуть на WAS загрузчика классов зрителя, чтобы определить, является ли ваше приложение на самом деле загружается правильно .jars:

http://weblogic-wonders.com/weblogic/2012/12/18/troubleshooting-classloader-issues-with-websphere/

+0

Спасибо @ paulsm4, это приятно знать. Я проверил свой каталог installedApps и проверил, что разворачиваются правильные банки. – martieva

+0

Другие предложения: 1) проверить политику загрузчика класса WAS для вашего приложения; установите его в «parent last», 2) Остается ли проблема с WAS-only (если вы выберете RAD-разработчика из уравнения)? – paulsm4

+0

К сожалению, пока я не могу перейти в другое рабочее пространство. Я попытался установить «parent last». Я уточню вопрос с этими деталями. – martieva

0

Как отмечалось в других ответах, он конфликтует с библиотеками оси веб-сферы , Создайте совместно используемую библиотеку с банками Axis2 и свяжите их с EAR для меня. Steps for creating shared library

0

Согласен с большинством сообщений здесь. Мы сделали это, добавив ядро ​​axis2 (1.6.2) явно в нашу библиотеку и перераспределив. Это определило проблему.

Смежные вопросы