Eclipse не импортирует все банки Axis2, но проект все еще выполняется на Tomcat?

Когда я разрабатывал веб-сервис Axis2 на Eclipse, я заметил, что Eclipse автоматически копирует классы из папки lib Axis2 в папку lib нового проекта. Однако не все классы из папки lib Axis2 копируются. Интересно отметить, что веб-служба работает без проблем при развертывании в Tomcat через Eclipse, даже если некоторые jar-файлы из Axis2 не были скопированы. Кроме того, когда я просматривал временный файл Tomcat, Tomcat, похоже, генерировал файлы jar для перечисленных модулей в модуле modules.list веб-службы.

Может ли кто-нибудь просветить меня относительно того, что происходит на этом? Почему Eclipse не копирует все банки из Axis2? Почему веб-сервис может работать на Tomcat даже без других jar-файлов от Axis2? Для чего эти временные файлы? Когда и почему это генерируется?

Я попытался запустить тот же проект в WebSphere, и я столкнулся с исключением ClassDefNotFound из-за отсутствующих jar-файлов. Моя проблема была решена, когда я скопировал все файлы Axis2, которые не были скопированы Eclipse, в мой проект. Но мне не нравится мое решение, потому что Tomcat может запустить мой проект даже без этих банок. Мое решение действительно правильное решение? Или я пропускаю настройку конфигурации?

Это только для пояснения:

Мой веб-сервис уже запущен в Axis2. Моя политика загрузки классов установлена ​​на PARENT_LAST. Я знаю, что, поскольку WebSphere имеет свою собственную конфигурацию Axis2, политика загрузки классов должна быть установлена ​​на PARENT_LAST, чтобы WebSphere использовал Axis2 из самого проекта. Помимо настройки политики загрузки классов, я сделал что-то, чтобы мой веб-сервис работал в WebSphere. Я опишу то, что я сделал выше. У меня вопрос, почему такой метод должен быть принят?

1 ответ

WebSphere имеет собственную конфигурацию axis2 как часть спецификации сервера Java EE для JAX-WS. Измените политику загрузки классов на PARENT_LAST и проверьте, решает ли это вашу проблему.

Редактировать: Как уже говорилось в оригинальном сообщении: WebSphere - это сервер Java EE, в зависимости от версии он поддерживает свои стандартные веб-сервисы Java JAX-WS. На самом деле веб-сервисы стали частью стандарта JDK.

Если вы используете JAX-WS, как упомянуто в разделе Введение в JAX-WS, или для создания веб-служб, вам не нужно добавлять какую-либо стороннюю библиотеку для запуска ваших веб-служб. Как только вы используете не JDK-реализацию, такую ​​как axis2, вы должны упаковать ее в свое приложение.

IBM не просто упаковала axis2 в свой WAS/JDK, они изменили его. Я не уверен, что обеспечивает Tomcat, однако, пока вы используете JAX-WS, это не должно иметь значения. С JAX-WS у вас нет прямого импорта org.apache.axis пакеты. Если вы используете этот импорт, вы должны предоставить библиотеки и убедиться, что ваши загружены.

Другие вопросы по тегам