项目从Resin迁移到Tomcat工具类库
项目组有两个老项目需要从resin迁移到tomcat,因为这两个项目的调用方比较多,所以要保证从resin迁移到tomcat过程中对调用方完全透明才行。这就需要对resin和tomcat的不同之处进行处理。
在修改过程中踩了若干坑,最终相关的Resin2Tomcat处理代码有了一个相对稳定的版本。于是把这部分相关处理代码抽成了一个maven工程,上传到公司仓库,方便以后其他同学使用。
1. 问题
目前遇到的问题主要是resin和tomcat对编码方式的不同,
- resin用gbk进行urlDecode,tomcat用utf-8进行urlDecode。
- 部分调用方的调用参数没有进行urlEncode,所以tomcat需要做iso8859-1到utf-8的转换。
- 调用方可能调用不规范,比如post请求的部分参数放在url中,部分放在body中。
2. 处理思路
做一个filter进行编码的转换,这样业务代码就不需要进行变动了,可以直接Resin切换到Tomcat。
3. 如何使用
pom.xml
中添加依赖
<dependencies>
<dependency>
<groupId>com.netease.urs</groupId>
<artifactId>resin2tomcat</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
web.xml
中添加filter
<filter>
<display-name>EncodingFilter</display-name>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.netease.urs.resin2tomcat.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
4. 其他
删除lib下的Resin.jar,因为发现这个jar在tomcat中会报错