Как правильно настроить веб-приложение, чтобы axis2 находил нужные модули? - PullRequest
2 голосов
/ 15 июля 2011

В настоящее время я сталкиваюсь с проблемой, связанной с тем, что у меня есть веб-приложение, в том числе клиент веб-службы оси 2, который должен использовать rampart для заголовка безопасности.Поэтому я адаптировал файл axis2.xml, включил все библиотеки и модуль rampart в веб-приложение.Помещение axis2.xml в путь к классам (например, /WEB-INF/classes/axis2.xml) работает нормально.Но как насчет хранилища модулей?Я пробовал разные места (WEB-INF / classes / modules, WEB-INF / modules), но он просто не работает.Каждый раз, когда я пытаюсь создать ConfigurationContext для клиента, я получаю исключение из-за невозможности найти модуль rampart.

Вот как я создаю контекст (ничего особенного ...)

ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromURIs(axis2Location, moduleLocation);

и это исключение, которое я получаю:

Caused by: org.apache.axis2.AxisFault: The system is attempting to engage a module that is not available: rampart
    at org.apache.axis2.deployment.URLBasedAxisConfigurator.getAxisConfiguration(URLBasedAxisConfigurator.java:78)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:68)
    at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromURIs(ConfigurationContextFactory.java:194)
    at com.test.webclient.Environment.create(Environment.java:88)
    ... 32 more

Так что мне любопытно - как кто-то должен указывать расположение модулей при использовании клиента axis2 внутри веб-приложения? Любая помощь приветствуется:).

Редактировать: Дополнительная информация с моей стороны:

-> AS используется JBoss 5.1GA -> Версия Axis2 1.4.1 -> Axis2 jar (s)) поставляются с моим приложением в WEB-INF / lib, их больше нет на Appserver (например, JBOSS_HOME / lib).

Также хочу отметить, что только модуль не найден.Если я не предоставлю настраиваемый axis2.xml (где определен модуль), клиент будет работать нормально.

1 Ответ

0 голосов
/ 15 июля 2011

Где у вас сами классы осей?Например, URLBasedAxisConfigurator.

Вы не говорите, на каком сервере приложений вы работаете, но некоторые серверы приложений имеют иерархию загрузчиков классов, и не весь код загрузки использует одни и те же загрузчики классов.

Так, например, если бы Axis исходил из загрузчиков классов, определенных самим сервером приложений, а не вашим приложением, то классы вашего приложения не будут видны для Axis.Следовательно, вам понадобится поместить модуль в какой-то определенный каталог сервера приложений или использовать механизмы, специфичные для сервера приложений, чтобы указать ему, где искать.

Еще более запутанно, вы можете получить копию Axis, поставляемую с вашимприложение и одно доставлено с сервером приложений, и вы, возможно, не используете тот, который вам нужен.

Используя опцию verbose classloader вашей JVM (которая будет выдавать lot информации), выможет быть в состоянии увидеть путь поиска, который пытаются найти модуль, и, следовательно, получить представление о том, где его разместить.

...