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
пакеты. Если вы используете этот импорт, вы должны предоставить библиотеки и убедиться, что ваши загружены.