2017-03-24 84 views
0

請幫忙, 我在OpenShift上有一個Java Spring MVC應用程序(Tomcat 7),它試圖在Context.xml中使用資源查找。當它嘗試創建會話session = (Session) envContext.lookup("mail/Session");時,我總是收到500個錯誤(請參閱下面的代碼)。 app-root/logs/jbossews.log中的日誌中沒有例外,e.printStackTrace();不會在catch塊中打印任何內容。也許異常會被記錄到其他地方?我習慣了在apache/tomcat中使用access.log和error.log,jbossews.log沒有看到告訴我任何東西(僅供參考,我沒有使用RHC工具,我只是通過ssh登錄日誌)。訪問OpenShift中的Context.xml郵件資源的問題

我的項目在eclipse中的本地系統上運行良好,沒有問題。 請幫幫忙,謝謝

Session session = null; 

Context initalContext = new InitialContext(); 
Context envContext = (Context) initalContext.lookup("java:comp/env"); 


try{ 
    // Blows up here with a 500 error 
    session = (Session) envContext.lookup("mail/Session"); 
} 
catch (Exception e) { 
    // No StackTrace printed 
    e.printStackTrace(); 
} 

這裏是我的資源位於jbossews/conf/context.xml文件

<Resource 
     name="mail/Session" 
     type="javax.mail.Session" 
     auth="Container" 
     mail.smtp.host="smtp.gmail.com" 
     mail.smtp.socketFactory.port="465" 
     mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory" 
     mail.smtp.auth="true" 
     mail.smtp.port="465" 
     mail.from="[email protected]" 
     mail.user="[email protected]" 
     password="XXXXXX" 
     /> 

我嘗試添加以下到我的web.xml中看看是否能夠修復問題(沒有)。

<resource-ref> 
    <description>Resource reference to a factory for javax.mail.Session instances that may be used for sending electronic mail messages, preconfigured to connect to the appropriate SMTP server.</description> 
    <res-ref-name>mail/Session</res-ref-name> 
    <res-type>javax.mail.Session</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
+0

與您的問題無關,但請注意,您[不應該需要設置套接字工廠](http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes)。 –

+0

謝謝比爾,我會研究一下。沒有人似乎有任何建議:( – Conor

+0

你可能有更好的運氣在JBoss論壇或郵件列表,或者如果你添加一個jboss標籤到這個職位 –

回答

0

找出我的問題是由於我的pom.xml中的問題(畢竟與訪問Context.xml無關)。煩人的異常沒有被記錄在jbossews.log,所以我不得不通過Exception exception = (Exception) httpRequest.getAttribute("javax.servlet.error.exception"); exception.printStackTrace(); (httpRequest being a HttpServletRequest Object)

在我的pom.xml的問題明確地記錄他們在這一點,我嘗試使用:

<dependency> 
    <groupId>javax.mail</groupId> 
    <artifactId>javax.mail-api</artifactId> 
    <version>1.5.1</version> 
    <scope>provided</scope> 
</dependency> 

使用解決以下依賴問題。

<dependency> 
    <groupId>com.sun.mail</groupId> 
    <artifactId>javax.mail</artifactId> 
    <version>1.5.2</version> 
</dependency> 

注:爲了使context.xml的「郵件/會議」資源對OpenShift工作,我不得不創建的src /主/ web應用/ WEB-INF /和地方javax.mail- lib文件夾裏面的api.jar。

希望這可以幫助任何人遇到問題。