首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java WebApp和tomcat context.xml

Java WebApp和tomcat context.xml
EN

Stack Overflow用户
提问于 2015-06-23 23:46:36
回答 1查看 1.7K关注 0票数 0

我构建webApp。当我从Eclipse运行app时,一切工作正常。现在我构建WAR文件,放在tomcat的根目录中,andI想把我所有的系统属性都放在tomcat的context.xml中。然后,当app启动时,从context.xml读取值并在app中使用。问题是我不知道如何在我的get应用程序中从context.xml获取值?这是上下文:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Context path="" docBase="fileupload.war" privileged="true"    antiResourceLocking="false" antiJARLocking="false">
    <Resource 
        mail.smtp_server = "127.0.0.1"
        mail.smtp_username = "no-reply@gmail.rs"
        mail.mailTo = "test@gmail.com"
        rootFolder = "D:/project/"
        rootFolderBackup = "D:/project/Backup/"
     />

这里我想从context.xml获取一个值:

代码语言:javascript
复制
@RequestMapping(value="api/files")
public class FileController {

final static Logger logger = Logger.getLogger(FileController.class);
@Autowired
ApplicationContext applicationContext;

private String mailTo;
private String sender;
private String rootFolder = "";
private String rootFolderBackup = "";   

@PostConstruct
private void init(){

        try {
            InitialContext ic = new InitialContext();
            Context xmlContext = (Context) ic.lookup("java:comp/env"); // thats everything from the context.xml and from the global configuration
            DataSource myDatasource = (DataSource) xmlContext.lookup("rootFolder");
        } catch (NamingException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

}

这是常见的错误:

代码语言:javascript
复制
Name [rootFolder] is not bound in this Context. Unable to find [rootFolder].

我尝试了一些解决方案,我在网上找到,但不起作用…我的context.xml文件在C:\tomcat-7.0\conf\Catalina\localhost中,而war文件在C:\tomcat-7.0\webapps

EN

回答 1

Stack Overflow用户

发布于 2015-06-24 00:01:46

如果您想定义应用程序属性,您可能应该改用环境变量。例如,您可以在任何context.xml中设置变量,如下所示:

代码语言:javascript
复制
<Environment name="PROPERTIES_FILE" override="false" type="java.lang.String" value="C:/path/to/propfile.properties" />
<!--define more variables here -->

然后在您的应用程序中,您可以像这样从JNDI读取这些环境属性。

代码语言:javascript
复制
initCtx = new InitialContext();
String path = (String) initCtx.lookup("java:comp/env/PROPERTIES_FILE");
// fetch more variables here

进一步阅读:

https://tomcat.apache.org/tomcat-8.0-doc/config/context.html#Environment_Entries

https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31007491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档