9月 282015
 

1. 修改了tomcat类文件中的一个常量,这个常量是要写到页面中的

2. 修改了view中的一些模板

3. 打war包

4. 替换war包,tomcat开始热部署

5. 部署完毕,修改完全没有生效

6. 重启tomcat,修改生效

 Posted by at 下午 4:16
8月 172015
 

问题

https  ===>  nginx(443) ===> tomcat(8080)

默认tomcat是不知道用户是通过https的访问访问的443端口的,如何让tomcat知道呢?

1.  nginx上添加http header

2. tomcat 上参考上述设置的http header

注意: protocolHeader默认是空的,必须指定哦,因为https默认端口为443,所以connector的proxyPort可以不设置

3. 如果nginx看到的domain和tomcat看到的domain不同,那么,tomcat 重定向时根据自己看到的domain来重定向就会不符合预期了,这时候,需要通过connector的proxyName来实现

 

参考资料:

https://www.91ri.org/11896.html

 Posted by at 下午 7:25
8月 072015
 
  •  war包总是很大,但是往往都是大在lib目录,lib目录中的程序基本都是第三方的,每个应用都重复加载(或者说发布)这些第三方lib是一件不愉快的事
    • 解决办法:把war包中的lib放到项目外面,在环境中配置。
    • 我们知道,tomcat会自动加载$tomcat_base/lib 中的jar文件的,但是我确实不想把应用引入的这些jar和tomcat软件自带的那些jar放在一起。怎么办?
    • 网上搜了一些,说是tomcat还会加载$tomcat_base/common/lib/*.jar  ,尝试了一下,没能成功,其实,从tomcat6开始,tomcat就只加载$tomcat_base/lib ,而不参考$tomcat_base/common了,参看: https://tomcat.apache.org/migration-6.html
    • 我用的是tomcat8,这可咋办?
    • 其实,  是否加载$tomcat_base/lib/*.jar 是在 $tomcat_base/conf/catalina.properties中定义的,那么完全可以修改该文件,让他自动加载任意目录的jar文件和class文件,如:
  • catalina.home catalina.base 区别

    • catalina.home(安装目录):指向公用信息的位置,就是binlib的父目录。

    • catalina.base(工作目录):指向每个Tomcat目录私有信息的位置,是conflogstempwebappswork的父目录。

 

深入Jetty源码之Servlet框架及实现(ServletRequest、ServletResponse)

 

Tomcat中添加IP限制

如此,则只允许1.2.3.4访问,其他不允许访问

如果要限制的IP其实是在x-forwarded-for 中,则需要在该Valve前面(后面还真不行)添加:

但是,这样做会有一个副作用,就是

中的

将不能再获取到了,而且%h 显示的也不是x-forwarded-for的IP;不过,access的valve中添加:

如下:

则, %h 就是 x-forwarded-for的IP了

 

分析:

中限制的是remoteAddr,乍一看,对x-forwarded-for 是不生效的,但是:

可以根据 x-forwarded-for 修改request中的remoteAddr的值。

 

如何将remoteIpValve.java 中的如下的log信息显示出来?

办法:

在 conf/logging.properties 中添加:

然后,在 catalina.out 中就可以看到了

 

配置文件

1. 如果配置文件中配置的docBase不存在,则tomcat无法启动,但是对于这种情况,configtest是检查不出来的

 Posted by at 下午 7:34