Jetty, вынудите webapp использовать другой javax.mail из того, который включен в сервер lib/jndi
Я довольно новичок в Jetty, я использовал Tomcat много лет, я хотел бы узнать, как лучше всего заставить мое веб-приложение использовать javax.mail 1.5.5, так как оно использует javax.mail.glassfish-1.4.1.v201005082020.jar найден в /srv/jetty/lib/jndi of jetty 9.3.10.
Я не верю, что это безопасно заменить эту версию той, которую хочет мое веб-приложение, правда?
Наконец, если лучше всего обновить флягу, оставив ее там, где она есть, тогда я должен удалить эту зависимость из моего веб-приложения таким образом, чтобы в WEB-INF/lib ее не было?
Действительно спасибо заранее
3 ответа
Я не знаю много о Jetty, но вы можете просто заменить файл JAR.
Если вы хотите использовать версию JavaMail, поставляемую в комплекте с вашим приложением, а не версию в установке Jetty, возможно, есть способ сообщить Jetty, что вы предпочитаете вашу версию.
Обратите внимание, что текущая версия JavaMail - 1.5.6, поэтому я не знаю, почему вы захотите использовать 1.5.5.
Я получил помощь от пользователей пристани, где мой вкладчик Ян Бартель сказал мне:
Я бы, вероятно, сделал новый jndi.mod, который называется, например, my-jndi.mod, который скопирован из $JETTY_HOME/modules/jndi.mod и поместил его в $JETTY_BASE/modules. Затем я изменил бы последнюю строку, чтобы ссылаться на другую библиотеку, например, lib / my-jndi. Таким образом, модуль будет выглядеть так:
[имя] myjndi
[зависеть] сервер
[lib] lib/jetty-jndi-${jetty.version}.jar lib/my-jndi/*.jar Поместите javax.mail jar и любые другие необходимые файлы в $JETTY_BASE/lib/my-jndi. Тогда все, что вам нужно сделать, это активировать его с помощью java -jar ../start.jar --add-to-start=my-jndi, и все готово. Преимущество этого подхода в том, что он переносим через любые обновления к различным версиям Jetty.
Кроме того, был открыт вопрос
Насколько мне известно, нет механизма, заставляющего контейнер сервлетов, например, причал, использовать прилагаемый почтовый кувшин из вашего военного файла.
Если вам не нужна функция причала jndi - mail -, документированная здесь, просто избавьтесь от банки.
Интересно, что Java Mail FAQ указывает на это в отношении tomcat:
Вопрос: Как настроить Tomcat, чтобы разрешить мне использовать JavaMail в моем веб-приложении? A: Чтобы запустить веб-приложение с использованием JavaMail, вы можете добавить файл JavaMail javax.mail.jar и, если вы не используете JDK 1.6 или более позднюю версию, файл JavaBeans Activation Framework javax.activation.jar в каталог lib, расположенный под каталог, в который вы установили Tomcat. Это заставит Tomcat автоматически включать эти файлы jar в свой путь к классам. Подробности см. В разделе HOW-TO ресурсов JNDI в документации Tomcat. В качестве альтернативы вы можете упаковать файл mail.jar и файлы activ.jar в каталог lib вашего пакета веб-приложений (файл war).
Так что Java Mail неверно указывает, что вам просто нужно связать его с вашим файлом войны.
Также из FAQ
Если вы работаете на веб-сервере или сервере приложений, он может предоставлять свою собственную версию mail.jar в одном из своих каталогов. У вас должна быть только одна версия mail.jar для вашего приложения.