在OpenShift中访问Context.xml Mail资源时出现问题

时间:2017-03-24 15:54:17

标签: java spring-mvc openshift javamail

请帮忙, 我在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)。

我的项目在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="XXXXXX@mailserver.com"
      mail.user="XXXXXX@mailserver.com"
      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>

1 个答案:

答案 0 :(得分: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“mail / Session”资源能够在OpenShift上运行,我必须在src / main / webapp / WEB-INF /中创建一个lib文件夹,并将javax.mail-api.jar放在里面

希望这有助于其他遇到问题的人。