是否可以在tomcat7中的context.xml中设置值和访问权限,如JNDI?

SAR*_*SAR 4 java tomcat servlets jndi jakarta-mail

我想在context.xml文件中设置一些值,并从我的Servlet访问相同的内容,就像我们在JNDI中访问一样:

mail.smtp.host=smtp.gmail.com
mail.smtp.port=465
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?

mpr*_*hat 5

是的,绝对可能

<Environment name="testEnvEntry" value="Got It"
         type="java.lang.String" override="false"/>
Run Code Online (Sandbox Code Playgroud)

然后访问如下:

Object lookedUp = null;
try {
    InitialContext initialContext = new InitialContext();
    lookedUp = initialContext.lookup("java:/comp/env/testEnvEntry");
} catch (NamingException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

它类似于你添加<env-entry>的方式web.xml.

你可以在这里阅读官方文档Environment


use*_*421 5

是的,请参阅上文,您可以做得更好:您可以将整个邮件会话放入context.xml:

  <Resource
      name="mail/xyz"
      type="javax.mail.Session"
      auth="Container"
      mail.pop3.connectiontimeout="60000"
      mail.pop3.host="pop.hhhh.net"
      mail.pop3.port="110"
      mail.pop3.timeout="60000"
      mail.smtp.auth="true"
      mail.smtp.connectiontimeout="60000"
      mail.smtp.host="smtpout.hhhh.net"
      mail.smtp.port="3535"
      mail.smtp.sendpartial="true"
      mail.smtp.timeout="60000"
      mail.store.maildir.autocreatedir="true"
      mail.store.protocol="pop3"
      mail.transport.protocol="smtp"
      mail.from="abc@xyz.com"
      mail.user="xyz"
      mail.host="xyz.com"
      mail.debug="false"
      password="xyz"
      />
Run Code Online (Sandbox Code Playgroud)

然后只需查看它java:comp/env/mail/xyz,它就是一个javax.mail.Session.

请注意,如果您提供该password属性,Tomcat也将为您安装Authenticator.