linux vm options,Linux/Windows 部署 Tomcat 配置用户环境变量 VM Options

  • Post author:
  • Post category:linux


文章目录

1. IDEA 配置 VM Options

1.1 IDEA 配置 VM Options

1.2 spring 项目注入用户环境变量

2. Tomcat 部署配置用户环境变量

2.1 Windows: standard environment variables

2.2 Linux: user defined CLASSPATH variables

1. IDEA 配置 VM Options

1.1 IDEA 配置 VM Options

此处以维护用户环境变量 DES_SECRET 用于配置文件加密的秘钥为例;spring 项目可通过 org.springframework.core.env.Environment 获取变量的 value

SpringMVC 项目

可以配置 VM Options 项

d6b4ec0879444331bf28eda1cacefef7.png

SpringBoot 项目

可以配置 Environment variables 项或者 VM Options

f7184cbc55c49ca46d10f07aeaabef38.png

1.2 spring 项目注入用户环境变量

配置后用户环境变量后,项目可通过 PropertiesUtil.getProperty(“DES_SECRET”) 获取配置的 value。

项目打包后放入 tomcat_home/webapps 路径下,运行 startup.bat/startup.sh 可以正常启动 tomcat 服务即可,若未配置用户环境变量,项目初始化动作需要该变量时,则启动会报错。

环境变量加载及获取关键代码演示

PropertiesUtil.java

import org.springframework.core.env.Environment;

/**

* @description: 配置文件属性读取

**/

public class PropertiesUtil {

public static Environment env;

/**

* 根据属性KEY取得属性值

*/

public static String getProperty(String name) {

return env.getProperty(name);

}

}

Configuration.java

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.support.ReloadableResourceBundleMessageSource;

import org.springframework.core.env.Environment;

import org.springframework.scheduling.annotation.EnableAsync;

import org.springframework.web.context.request.RequestContextListener;

/**

* @description: spring配置

*/

@org.springframework.context.annotation.Configuration

@EnableAsync

public class Configuration {

/**

* 注入上下文环境

* @param env

*/

@Autowired

public void set(Environment env) {

PropertiesUtil.env = env;

}

/**

* 设置spring security提示为中文

* @return ReloadableResourceBundleMessageSource

*/

@Bean

public ReloadableResourceBundleMessageSource setLocalization() {

ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource();

reloadableResourceBundleMessageSource.setBasenames(“classpath:messages”);

reloadableResourceBundleMessageSource.setUseCodeAsDefaultMessage(true);

reloadableResourceBundleMessageSource.setDefaultEncoding(“UTF-8”);

return reloadableResourceBundleMessageSource;

}

/**

* 注入spring请求上下文监听

* @return spring请求上下文监听

*/

@Bean

public RequestContextListener requestContextListener() {

return new RequestContextListener();

}

}

2. Tomcat 部署配置用户环境变量

此处是通过 tomcat/bin 下的配置文件永久修改,不是通过命令行命令来设置的。

2.1 Windows: standard environment variables

可通过创建 setenv.bat 文件,单独配置标准环境变量;

查看 tomcat_home/bin/catalina.cat 包含以下配置信息,如果我们想添加标准环境变量可以通过 setenv.sh 实现;

下载的 tomcat 一般默认不包含 setenv.bat 文件;此处我们可以新建 setenv.bat,编辑标准环境变量保存后,运行 shutdown.bat 关闭 tomcat 服务,重新运行 start.bat 启动即可。

rem Get standard environment variables

if not exist “%CATALINA_BASE%\bin\setenv.bat” goto checkSetenvHome

call “%CATALINA_BASE%\bin\setenv.bat”

goto setenvDone

:checkSetenvHome

if exist “%CATALINA_HOME%\bin\setenv.bat” call “%CATALINA_HOME%\bin\setenv.bat”

:setenvDone

新建文件 setenv.bat 配置环境变量 DES_SECRET

set JAVA_OPTS=-DDES_SECRET=123654

2.2 Linux: user defined CLASSPATH variables

相同的,可以通过创建 setenv.sh 文件配置标准环境变量;以下是 catalina.sh 部分配置

# Ensure that any user defined CLASSPATH variables are not used on startup,

# but allow them to be specified in setenv.sh, in rare case when it is needed.

CLASSPATH=

if [ -r “$CATALINA_BASE/bin/setenv.sh” ]; then

. “$CATALINA_BASE/bin/setenv.sh”

elif [ -r “$CATALINA_HOME/bin/setenv.sh” ]; then

. “$CATALINA_HOME/bin/setenv.sh”

fi

新建 setenv.sh,配置自定义的环境变量,shutdown.sh 停止服务,重新运行 startup.sh 即可。

export JAVA_OPTS=”$JAVA_OPTS -DDES_SECRET=123654″

Power By niaonao, The End