JDK 配置

JDK 功能说明与配置说明.

理论基础

JDK服务安全与启动

  • 1.官网下载JDK直接解压
  • 2.使用rpm包安装(可能影响其他用户程序使用),默认是/usr/java/目录,默认JRE_HOME环境变量是/usr/也是可以用的java可执行文件会安装到/usr/bin中 里面又是链接到/etc/alternatives/java然后继续链接,最好配置环境变量其他参数都配置上或者在tomcat内setclasspath.sh配置JDK环境避免环境冲突新安装新版本JDK导致问题。CLASSPATH环境变量可以不用配置的,默认位置没有改的话java程序是可以找得到的,当然可以根据需要添加。对于JAVA_HOME与JRE_HOME如果生产环境其实只需要JRE_HOME就可以,JRE_HOME没有javac命令。TOMCAT启动有JRE_HOME就可以启动了,但是tomcat是APP容器,它会将JSP编译成CLASS文件,需要JDK的支持才可以,jre只支持已有的.class文件,不能对.java文件或者jsp文件进行编译,所以需要用jdk。但是tomcat5.5及以下版本主要是依赖JDK去编译JSP文件生成class的。但Tomcat6.0使用了Eclipse的JDT技术,因此不再依赖JDK运行。

tomcat版本区别,独立版tomcat有window 32、64版本和unix版本 , 而embedded tomcat(嵌入式tomcat,嵌入到应用中,如springboot)没有区分操作系统。而embedded版本bug比较多,可能不支持native和APR。

配置

Linux普通用户java环境变量配置(不影响其他用户)

  1. 上传JDK安装包到服务器
  2. 解压 tar -zxvf jdk-8u181-linux-x64.tar.gz,也可以解压到(opt、user/local目录中)
  3. 配置环境变量
    • vi ~/.bash_profile
    • 在.bash_profile文件中填入如下语句:
      1
      2
      3
      4
      export PATH
      export JAVA_HOME=/home/admin/apps/jdk1.8.0_181
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    • 保存退出qw!
  4. 生效 source ~/.bash_profile
  5. 查看版本 java -version

Linux 安装多个版本JDK并设置默认版本(可能会影响现有系统其他用户使用)

  1. 上传JDK安装包到服务器,比如/usr/local
  2. tar zxcf jdk-8u181-linux-x64.tar.gz
  3. 管理员用户编辑/etc/profile:
    1
    2
    3
    4
    export JAVA_HOME=/usr/local/jdk1.8.0_181
    export JRE_HOME=/usr/local/jdk1.8.0_181/jre
    export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  4. 使生效:source /etc/profile
  5. 验证:java -version
  6. 选择使用已经安装版本:alternatives --config java
  7. 没有新安装的1.8.1版本jdk,需要使用命令将新安装的jdk放入到java bin中 alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_181/bin/java 4

在tomcat中配置环境变量

1
2
3
4
5
# vi setclasspath.sh 第二行,或者开头注释后面,添加下面配置
export JAVA_HOME=/usr/java/jdk1.8.0_181
export JRE_HOME=/usr/java/jdk1.8.0_181/jre

# windows的话是 set JAVA_HOME=D:\Program Files\jdk1.8.0_181

tomcat

tomcat工作的模式有bio, nio , apr 这三种模式,bio模式在tomcat7是默认方式,tomcat8默认使用的是nio

1
2
3
4
5
6
7
8
9
tomcat7 这个配置在protocol="HTTP/1.1",这个默认使用了bio,tomcat8默认是nio
protocol="org.apache.coyote.http11.Http11Protocol" bio模式
protocol="org.apache.coyote.http11.Http11NioProtocol" nio模式
protocol="org.apache.coyote.http11.Http11AprProtocol" apr模式,具体参考官方教程

启动的日志信息
信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8180"] # nio
信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-bio-8180"] # bio
信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8180"] # apr

配置成服务

CentOS7 systemctl如果配置错了最好新建一个服务文件尝试,不然可能系统一直识别到的是旧的有问题的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Unit]
Description=tomcat
After=syslog.target network.target
After=mysqld.service

[Service]
User=test
Type=forking
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000
Environment="JAVA_HOME=/usr/java/jdk1.8.0_181/"
ExecStart=/home/test/tomcat/bin/startup.sh
ExecStop=/home/test/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Environment与Type都可以去掉。

tomcat/bin/setenv.sh 可以增加这个文件内容如下:

1
2
3
export CATALINA_HOME=/home/test/tomcat
export CATALINA_BASE=/home/test/tomcat
export CATALINA_PID="$CATALINA_BASE/tomcat.pid"

然后再在system文件中添加PIDFile=/home/test/tomcat/tomcat.pid,WorkingDirectory=/home/test/tomcat可有可无。

注意:
修改配置需要重启不然旧的状态会一直保留systemctl stop tomcat.servicesystemctl start tomcat.service,还需要重新加载配置systemctl daemon-reload。注意如果用root权限启动了可能导致日志文件无法反问,导致无法启动。systemctl status tomcat.service可以查看进程状态信息,如果有错误也会显示。

注意

使用普通用户启动Tomcat,不要随意切换到root用户启动,如果使用的是jsp,会导致后面部分编译出来的jsp页面缓存文件切换回普通用户的时候没有相关权限。

参考