Eclipse не импортирует все банки Axis2, но проект все еще выполняется на Tomcat? - PullRequest
1 голос
/ 21 декабря 2011

Когда я разрабатывал веб-сервис 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 Ответ

1 голос
/ 21 декабря 2011

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

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

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