Tomcat 安装使用&源码构建

简介: Tomcat 安装使用&源码构建

tomcat安装使用

  1. 下载

shell

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz
  1. 解压

shell

tar -xf apache-tomcat-8.5.57.tar.gz
  1. 配置jdk环境
  • 将jdk配置到环境变量,tomcat启动时若jdk未配置将自动寻找环境变量

shell

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
:wq
#更新
source /ect/profile
  • 在tomcat启动脚本中配置
  1. 将web服务与tomcat分离

shell

mkdir test-web
cp -r /usr/local/tomcat/conf /usr/local/test-web/
cd test-web
mkdir logs webapps
#编写启动脚本
vim tomcat.sh
#!/bin/bash 
export JAVA_OPTS="-Xms100m -Xmx200m"
export JAVA_HOME=/usr/local/jdk1.8/
export CATALINA_HOME=/usr/local/tomcat
cd `dirname $0`
export CATALINA_BASE="`pwd`"
case $1 in
        start)
        $CATALINA_HOME/bin/catalina.sh start
                echo start success!!
        ;;
        stop)
                $CATALINA_HOME/bin/catalina.sh stop
                echo stop success!!
        ;;
        restart)
        $CATALINA_HOME/bin/catalina.sh stop
                echo stop success!!
                sleep 3
        $CATALINA_HOME/bin/catalina.sh start
        echo start success!!
        ;;
        version)
        $CATALINA_HOME/bin/catalina.sh version
        ;;
        configtest)
        $CATALINA_HOME/bin/catalina.sh configtest
        ;;
        esac
exit 0
:wq
#赋予执行权限
chmod +x tomcat.sh
  1. 在webapps目录下建立服务

shell

cd webapps
mkdir ROOT
echo 'hello tomcat!' > ROOT/index.html

6.启动并访问

shell

/usr/local/test-web/tomcat.sh start

tomcat 源码构建

xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>Tomcat8.0</artifactId>
  <name>Tomcat8.0</name>
  <version>8.0</version>
  <build>
      <finalName>Tomcat8.0</finalName>
      <sourceDirectory>java</sourceDirectory>
      <testSourceDirectory>test</testSourceDirectory>
      <resources>
          <resource>
              <directory>java</directory>
          </resource>
      </resources>
      <testResources>
          <testResource>
              <directory>test</directory>
          </testResource>
      </testResources>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>2.3</version>
              <configuration>
                  <encoding>UTF-8</encoding>
                  <source>1.8</source>
                  <target>1.8</target>
              </configuration>
          </plugin>
      </plugins>
  </build>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
      </dependency>
      <dependency>
          <groupId>org.easymock</groupId>
          <artifactId>easymock</artifactId>
          <version>3.4</version>
      </dependency>
      <dependency>
          <groupId>ant</groupId>
          <artifactId>ant</artifactId>
          <version>1.7.0</version>
      </dependency>
      <dependency>
          <groupId>wsdl4j</groupId>
          <artifactId>wsdl4j</artifactId>
          <version>1.6.2</version>
      </dependency>
      <dependency>
          <groupId>javax.xml</groupId>
          <artifactId>jaxrpc</artifactId>
          <version>1.1</version>
      </dependency>
      <dependency>
          <groupId>org.eclipse.jdt.core.compiler</groupId>
          <artifactId>ecj</artifactId>
          <version>4.5.1</version>
      </dependency>
  </dependencies>
</project>
  • apache-tomcat-8.5.57-src 同级目录新建catalina-home并保证目录下面文件如下
  • bin 从apache-tomcat-8.5.57-src拷入
  • conf 从apache-tomcat-8.5.57-src拷入
  • lib 自建空文件夹
  • logs 自建空文件夹
  • temp 自建空文件夹
  • webapps 从apache-tomcat-8.5.57-src拷入
  • work 自建空文件夹
  • idea中打开,open apache-tomcat-8.5.57-src
  • 配置启动(Edit Configurations),选择一个Application启动程序
  • MainClass: org.apache.catalina.startup.Bootstrap
  • Vm Options: -Dcatalina.home= 你存放tomcat的目录\apache-tomcat-8.5.57-src\catalina-home
  • 启动 Tomcat

问题解决

  • 启动报错 TestCookieFilter 报错找不到这个类CookieFilter
  • 解决方法:删除TestCookieFilter类
  • 启动后,访问localhost:8080 报错 org.apache.jasper.JasperException: java.lang.NullPointerException
  • 解决方案:
    org.apache.catalina.startup.Bootstrap 静态代码块中添加

java

{
  JasperInitializer initializer = new JasperInitializer();
}

  • 启动乱码
  • VM Options 添加参数:-Duser.language=en-Duser.region=US

目录
相关文章
|
6月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
3月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
4月前
|
Java 应用服务中间件 Shell
|
6月前
|
前端开发 Java 应用服务中间件
架构篇:Tomcat 高层组件构建一个商业帝国
架构篇:Tomcat 高层组件构建一个商业帝国
331 6
|
6月前
|
设计模式 算法 前端开发
Tomcat的源码剖析, 启动过程你会吗?
基于JMX Tomcat会为每个组件进行注册过程,通过Registry管理起来,而Registry是基于JMX来实现的,因此在看组件的init和start过程实际上就是初始化MBean和触发MBean的start方法,会大量看到形如: Registry.getRegistry(null, null).invoke(mbeans, "init", false); Registry.getRegistry(null, null).invoke(mbeans, "start", false); 这样的代码,这实际上就是通过JMX管理各种组件的行为和生命期。
36 0
|
Java 应用服务中间件 Maven
最通俗易懂的 - Tomcat 核心源码仿写 第二版代码
Tomcat 核心源码仿写的第二版代码,升级为Maven项目,并将单线程改为多线程
72 0
|
Java 应用服务中间件 数据格式
Tomcat 核心源码解析 及 仿写
介绍Tomcat的核心功能原理,并仿写Tomcat核心功能源码 包括: 1、如何生成Servlet实例对象并管理 2、如何与浏览器建立连接并获取http报文,解析报文获取请求,并响应 最后有效果演示和源码gitee地址
118 0
|
Java 应用服务中间件 Docker
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
Docker从入门到精通——实战Dockerfile构建Tomcat镜像
349 0
|
Java 应用服务中间件
TOMCAT 源码分析 -- 构建环境
TOMCAT 源码分析 -- 构建环境
96 0
|
缓存 网络协议 应用服务中间件
手写Tomcat源码简易篇
手写Tomcat源码简易篇