Tomcat 笔记
1. web.xml中的filter链
acegi与struts的filter都在一个链中,一个包含action URI请求传到web server后,按照filter chain,先进行acegi处理,然后struts在处理action URI对应的action类,后转到对应的jsp上,这时在web server内部通过struts跳转的jsp不会去acegi做过滤处理。
通过acegi,struts等的filter源代码跟踪调试,可以判断出filter配置中定义的匹配URI是针对来自web server外部的请求。
Tomcat 5.5源代码调试环境搭建
1. 从apache 站点 下载Tomcat 5.5 源代码
2. eclipse.classpath, eclipse.project这两个文件是tomcat 5.5 在eclipse下的两个工作区文件参考内容,将这两个文件内容分别拷贝到实际工作区里对应的.classpath和.project两个文件里。使tomcat 5.5源代码工作区使用tomcat的开发环境参数。
3. 下载ant,并在eclipse里设置ANT_HOME变量值。整个tomcat 5.5源代码编译可以使用ant进行整体编译。
4. 进入根目录的build子目录,新建build.properties,将同目录下的build.properties.default文件内容拷贝到build.properties里。
打开full.dist=on参数开关,为了下载javamail和Activation两个jar
设置base.path参数,将它指向自定义的目录,该目录存放tomcat 5.5源代码所依赖的第三方jar。
5. 在根目录的build子目录中,选择build.xml,运行ant download这个ant 目标,开始执行源代码依赖包的下载。
如果tomcat 5.5源代码项目的根目录下的子目录有与当前执行ant 编译命令下的jdk 版本不一致的情况时,将子目录下原有的class文件删掉,重新运行ant。
6. 在eclipse中,以debug模式启动发布版本的tomcat时,可以将它与编译好的tomcat源代码调试环境挂接起来。
设置步骤:打开eclipse中的Servers操作面板,双击 tomcat 5.5 server 条目,在打开的服务器设置主窗口中,点击‘Overview’标签面板上的‘Open launch configuration', 在它的设置面板中,在Source标签页中将tomcat源代码工作区引入。
Question:simple error due to use of double quotes in a jsp file
Answer: 在tomcat的启动文件中的启动命令里加入如下参数:
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
[install service]service install tomcat6[start service]net start tomcat6[stop service]net stop tomcat6[remove service]service remove tomcat6
java.lang.Exception: Socket bind failed: [730013] An attempt was made to accessa socket in a way forbidden by its access permissions. at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:646)
netstat -a -b -p tcp