Linux上的Spring环境变量

时间:2016-06-20 19:32:14

标签: java linux spring

我有一个带有JSF 2.2和Spring 4.2的java web应用程序。 我的目标是在glassfish 4.1.1上部署我的web应用程序,操作系统是ubuntu服务器16.04。

我尝试使用以下命令部署我的网络应用程序

asadmin deploy myWebApp.war

但是在我填写userName和密码后,我发现了一个错误,告诉我我的应用程序没有看到环境变量。

生成错误的配置如下

@Autowired
private Environment env;

@Bean
public PropertiesFactoryBean myExternalProperties() {
    PropertiesFactoryBean res = new PropertiesFactoryBean();
    res.setFileEncoding("UTF-8");
    res.setLocation(new FileSystemResource(env.resolvePlaceholders("${MY_ENV_VAR}") + "external.properties"));
    return res;
}

但是如果从命令行我启动以下命令

printenv MY_ENV_VAR

变量已正确填充。

我尝试过两种不同的方式

  1. 将环境变量放在/home/myUser/.bashrc中,添加行导出MY_ENV_VAR = myPath

  2. 将环境变量放在/etc/profile.d/myShFile.sh中添加行导出MY_ENV_VAR = myPath

  3. 但没有运气。你能帮助我吗? 在Windows上,应用程序正在运行,我想在设置环境变量时我做错了。

    谢谢

2 个答案:

答案 0 :(得分:0)

这可能是错的,但值得一试。 我的理解是,一旦linux进程启动它就无法读取新定义或更新的环境变量。 因此,重新启动服务器应解决您的问题。

答案 1 :(得分:0)

我已经解决了以下字符串

的问题
ID|From Date  |To Date
1 |01/01/2014 |12/31/2016
/ etc / environment文件中的