亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Tomcat類路徑加載器javax.mail.Session與spring-boot

Tomcat類路徑加載器javax.mail.Session與spring-boot

SMILET 2023-03-23 14:59:23
嘗試在 Tomcat(不是嵌入式 Tomcat)上部署 Spring Boot 應用程序。我已經在 Tomcat 服務器配置上配置了一個 Java 郵件會話,并且我正在嘗試在我的應用程序中將其作為 JNDI 值進行訪問。出于某種原因,我的應用程序出錯并顯示:Caused by: java.lang.IllegalArgumentException: The local resource link [support] that refers to global resource [mail/support] was expected to return an instance of [javax.mail.Session] but returned an instance of [javax.mail.Session]        at org.apache.naming.factory.ResourceLinkFactory.getObjectInstance(ResourceLinkFactory.java:163)        at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)        at org.apache.naming.NamingContext.lookup(NamingContext.java:840)我已經包含javax.mail.jar在 Tomcat/lib文件夾中。我也spring-boot-starter-mail包括在我的pom.xml我試過javax.mail.jar從 Tomcat 的庫中刪除,但這會導致 Tomcat 啟動時出錯,因為它無法創建郵件會話。我也試過刪除 spring-boot-starter-mail,但這會干擾我的一些需要 JavaMailSender 和其他郵件組件的代碼。我試過弄亂 JNDI 導入和類似的東西,但無濟于事。我還嘗試檢查 包含的郵件 jar 的版本spring-boot-starter-mail,并更新 Tomcat 中的 jar 以匹配。我還檢查了 Maven 中的傳遞依賴項,看看是否引入了不同的郵件實現,但什么也沒有。所以我有點沒主意了。這是我在我的 web.xml 中獲取 JNDI 值的地方:<resource-ref>        <description>The mail session configured in Tomcat</description>        <res-ref-name>mail/support</res-ref-name>        <res-type>javax.mail.Session</res-type>        <res-auth>Container</res-auth>    </resource-ref>這是我在 Tomcat 中配置的內容server.xml:<GlobalNamingResources><Resource name="mail/support"              auth="Container"              type="javax.mail.Session"              mail.smtp.host="smtp.XXX.XXX"              mail.smtp.user="support"              mail.smtp.from="[email protected]" /></GlobalNamingResources>這是 context.xml 中的內容:<Context><ResourceLink global="mail/support" name="mail/support" type="javax.mail.Session" /></Context>我希望能夠使用spring-boot-starter-mail和使用全局配置的 JNDI 郵件會話。我不知道這些是否只是不相容的愿望,但我不明白為什么會這樣。
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

好的,所以解決方案確實是@Bill Shannon 建議的。我必須將com.sun.mail依賴項包含在 Mavenprovided范圍內。我的特殊問題是該項目已經在使用spring-boot-starter-mail依賴項,其中包括com.sun.mailjar。所以我不得不從我的 Maven 依賴中排除它。因此,與郵件內容相關的完整 Maven 依賴項如下所示:


<dependency>

    <groupId>com.sun.mail</groupId>

    <artifactId>javax.mail</artifactId>

    <version>1.5.6</version>

    <scope>provided</scope>

</dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-mail</artifactId>

    <exclusions>

        <exclusion>

            <groupId>com.sun.mail</groupId>

            <artifactId>javax.mail</artifactId>

        </exclusion>

    </exclusions>

</dependency>

現在看起來有點明顯了。我認為我的主要困惑來源是奇怪的 Tomcat 錯誤消息。感謝任何看過此內容的人,希望這可以解決其他人的問題!


查看完整回答
反對 回復 2023-03-23
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號