Tomcat 源码环境构建
- 下载 src 源码
源码路径下新建 pom 文件
<?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</artifactId><name>tomcat8</name><version>8.0</version><build><finalName>tomcat8</finalName><sourceDirectory>java</sourceDirectory><!--<testSourceDirectory>test</testSourceDirectory> test--><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>3.5.1</version><configuration><encoding>UTF-8</encoding><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.6</version></plugin></plugins></build><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>ant</groupId><artifactId>ant</artifactId><version>1.7.0</version></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>3.4</version></dependency><!-- soap 协议处理工具包 --><dependency><groupId>javax.xml.soap</groupId><artifactId>javax.xml.soap-api</artifactId><version>1.4.0</version></dependency><!-- 解析 webservice --><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>
导入 IDEA
- IDEA 配置启动类
org.apache.catalina.startup.Bootstrap

增加 JVM 参数
-Dcatalina.home=F:\workspaces\opensource\tomcat-Dcatalina.base=F:\workspaces\opensource\tomcat-Djava.io.tmpdir=F:\workspaces\opensource\tomcat\temp-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file=F:\workspaces\opensource\tomcat\conf\logging.properties-Dfile.encoding=UTF-8
修改下 ContextConfig ```java protected synchronized void configureStart() {
// Called from StandardContext.start()if (log.isDebugEnabled()) {log.debug(sm.getString("contextConfig.start"));}if (log.isDebugEnabled()) {log.debug(sm.getString("contextConfig.xmlSettings",context.getName(),Boolean.valueOf(context.getXmlValidation()),Boolean.valueOf(context.getXmlNamespaceAware())));}webConfig();// 初始化 jsp 解析引擎 <----- 增加这行代码,初始化 jsp 解析引擎context.addServletContainerInitializer(new JasperInitializer(), null);// .....
}
IDEA 控制台乱码
Tomcat 开启远程 Debug
Tomcat 配置
修改 catalina.sh
- Tomcat 安装在: /usr/local/tomcat
- Tomcat 的执行程序: /usr/local/tomcat/bin/catalina.sh
- 编辑 Tomcat 执行程序:
vim /usr/local/tomcat/bin/catalina.sh- 查找Tomcat的debug端口:
/JPDA_ADDRESS=
- 默认的debug端口是8000,这里是配成了5005
- 在bin目录下执行命令
sh catalina.sh jpda start,可以启动tomcat并开启远程调试的端口
- 查找Tomcat的debug端口:
**export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
address 这里最好配置成 ip:port
修改 startup.sh
CATALINA_OPTS 和 JAVA_OPTS
用于保存Tomcat运行所需的各种参数。
他们在文件中的注释如下:
(可选)Java 执行”start”,”stop”或”run”命令时用到的运行时参数; [JAVA_OPTS]
(可选)Java 执行”start”或”run”命令时用到的运行时参数; [CATALINA_OPTS]
那么,为什么有两个不同的变量?他们有什么区别?
首先,定义在这两个变量中的参数都会被传递到启动Tomcat的命令:”start”和”run”,只有定义在JAVA_OPTS中的参数会被传递到”stop”命令。
所以将参数定义到哪个变量中并不影响Tomcat的启动和运行,而只影响到了Tomcat的运行结束。
第二种区别更加微妙。其他应用程序也可以使用JAVA_OPTS,但Tomcat只会用到CATALINA_OPTS。所以如果你只使用了Tomcat,在设置环境变量时,你最好使用CATALINA_OPTS,而如果你同时也用到了其他java应用程序,如JBoss,在设置环境变量时你应该使用JAVA_OPTS。
IDEA 配置


