在外部Tomcat容器中加载文件与Bootrun

时间:2017-04-19 17:00:28

标签: java spring tomcat spring-boot rule-engine

我正在尝试在Spring中加载文件。 该文件包含基于OpenRules引擎的规则。 问题是当我使用Spring BootRun时它正确加载。 但是当我尝试在外部Tomcat中部署相同的文件时,我收到错误FileNotFound。

我以下列方式提到属性文件中的文件路径:

rules.open.main.decision.path=file:rules/main/Decision.xls

rules文件夹直接位于Project Folder。

在Java中我正在加载文件:

public Decision getDecisionEngine(){        
    String decisionName = "CustomerPreventStrategies";
    //String fileName = "file:rules/main/Decision.xls";
    String fileName = env.getProperty("rules.open.main.decision.path");
    System.out.println("rules.open.main.decision.path:"+fileName);

    Decision decision = new Decision(decisionName,fileName);
    return decision;    
} 

当我为外部Tomcat创建WAR时,我将它保存在2个位置。但它没有帮助。

 war {
    baseName = 'MyOpenRules'
    version =  '0.1.0'
    from("rules") {
        into("WEB-INF/classes/rules")
        }
    from("rules") {
        into("rules")
        }    
}

我得到了:

Caused by: java.io.FileNotFoundException: rules\main\Decision.xls (The system cannot find the path specified)

1 个答案:

答案 0 :(得分:0)

尝试使用

rules.open.main.decision.path=file:/rules/main/Decision.xls

这使得Springs可以从位置WEB-INF / classes / rules / main / Decision.xml

中选择

使用时     rules.open.main.decision.path =文件:规则/主/ Decision.xls 该文件应该在当前目录中。当我们通过catalina.bat或startup.bat启动tomcat服务器时,它位于Tomcat_HOME / bin内,然后bin目录是该进程的当前文件夹。因此,当你将文件保存在有效的tomcat bin中时。

当你把/ spring使用相对路径来查找文件时。