Получение исключения NoSuchProviderException при использовании Javamail с SOAP

Я написал программное обеспечение, которое в основном входит в учетную запись электронной почты и ищет в папке "Входящие" непрочитанные электронные письма и проверяет, является ли указанная тема темой, а затем принимает вложения (-и) и что-то с ними делает. Затем это программное обеспечение развертывается на сервере IBM Rule Execution Server и запускается через SOAP.

По этой причине я использую Javamail 1.6. Следующий фрагмент отлично работает локально:

Session session = Session.getInstance(mailProperties);

    try (Store store = session.getStore(mailProperties
        .getProperty("mail.store.protocol"))) {

        store.connect(mailProperties.getProperty("mail.imap.host"),
                mailProperties.getProperty("mail.user"),
                mailProperties.getProperty("mail.password"));

С mailProperties, которые были правильно инициализированы заранее, и так далее, и так далее. После развертывания полного кода SOAPUI выдает следующее исключение NoSuchProviderException:

Caused by: javax.mail.NoSuchProviderException: imaps
    at javax.mail.Session.getService(Session.java:842)
    at javax.mail.Session.getStore(Session.java:626)
    at javax.mail.Session.getStore(Session.java:602)

Я пытался включить провайдера как

Provider provider = new Provider(...);
store.connect(provider);

Хотя это привело к тому же исключению.

После этого я попытался полностью избежать провайдера, инициализировав хранилище как IMAPSSLStore, но это бросило java.lang.LinkageError на меня. Попытка решить эту проблему различными способами (включая установку ClassLoader другим) не помогла.

Я, честно говоря, сейчас немного теряюсь в здравом уме, как поступить с этим.

Мне кажется, что есть проблемы с поиском поставщиков, которые должны быть включены в javax.mail.jar.

2 ответа

Решение

Я нашел ответ на свой вопрос сам. Сервер Liberty, включенный в IBM, имеет FeatureManager в файле server.xml. Там вам нужно ввести:

<feature>javaMail-1.5</feature>

чтобы заставить это работать -.-

Вы, вероятно, столкнулись с этой ошибкой JDK, которая исправлена ​​в более новых версиях JDK. Какую версию JDK использует ваш сервер?

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