Apache 配置 SSL(HTTPS) 并整合 Tomcat

我们在 Tomcat 中可以开启 SSL,用 HTTPS 来访问,见前一篇 快速启用 Tomcat 的 HTTPS 协议访问,不过更接近实际的应用是 Tomcat 只担当 Servlet 容器,HTTPS 协议部份,甚至是静态页面是交给 Apache 的处理,Apache 与 Tomcat 之间有一个通道。当然前端用 F5 那类负载均衡设备就另当别论了。

这里实践一下怎么开启 Apache 的 HTTPS,并与 Tomcat 进行整合的操作。平台是 Mac OS X, Apache2, Tomat8,其他平台或不同版本的应用软件配置类似。

第一步: 生成自签署证书

安全加密的东西都得证书,我们需要用到 openssl,没有就先安装它,命令是:

openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key

上面命令可以指定生成 server.crt 和 server.key 文件的目录,默认产生在当前目录下,假设这两个文件生成在 /etc/apache2 目录下。 阅读全文 >>

快速启用 Tomcat 的 HTTPS 协议访问

有时候安全考虑会要开启 Tomcat 的 https 协议访问,最快速的配置,两步

1. 创建 keystore 文件

执行 JDK 带的命令

keytool -genkey -alias tomcat -keyalg RSA

按命令提示各个信息即可,最后在用户主目录下创建了一个 .keystore 文件

2. 配置 Tomcat 使用 keystore 文件

打开 server.xml 找到下面被注释的这段

阅读全文 >>

切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题

Tomcat 下日志文件 catalina.out 过大,几百兆或几个G,进而造成再也无法写入更多的日志内容,至使 Tomcat 无法处理请求。需然你可以在 $TOMCAT_HOME/logs 目录下看到有 catalina.2012-09-16.log 这样分日期的归档,但是主文件 catalina.out 却一直在膨胀。

你可以每次手工或定时(crontab/计划任务)清理 catalina.out 文件,或是规划好日志输出(终究也会有满的时候)。再就是有两种较好的解决方案去真正的切分 catalina.out 文件,让 catalina.out 只存有最新的日志。

一. 改用 Log4J 来输出 Tomcat 日志,借助 Log4J 的各种日志切分的功能。详情可参考: http://baalwolf.iteye.com/blog/1464093http://tomcat.apache.org/tomcat-6.0-doc/logging.html

二. Linux 下使用 cronolog 工具来切分 catalina.out

这里重点介绍这种方法,具体步骤如下: 阅读全文 >>

Tomcat 7 启动时出现 java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

在 Eclipse WTP 3.1.1 中换成了使用 Tomcat 7,当然选择的仍然是 Tomcat 6,只是指向的目录是 Tomcat 7 的,一启动便立马出现错误:

java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Exception in thread "main" 阅读全文 >>

用 jreloader 动态重新加载改变的类而不用重启 JVM

在 Tomcat 中可以配置 reloadable="true" 做到类改变后,Tomcat 重新加载。其实这个过程大约也是当 Tomcat 发现有改变的类会重新启动一个新的应用程序重新加载所有的类来服务于新的请求,只是不需要你手动的去执行 shutdown.sh(.bat),再 startup.sh(.bat)。这种方式对于古老的 jsp 程序完全能从容以对,因为 web.xml 里几乎没什么随应用一起启动且耗时长代码;但当下是框架横行,web.xml 中随应用一起启动的程度可谓是争先恐后的,所以仅仅依赖 reloadable="true" 是满足不了需求的。每改一个类(无论是改动了方法体中的代码还是变动了类的结构,准确的说是动了 WEB-INF/classes 目录中的任何文件) 你都可能就会在

Jan 28, 2011 7:19:42 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext 阅读全文 >>

Tomcat 7的七大特性:新特性与增强功能

Tomcat 7 在加强原有功能的同时也增加了一些新特性。有些文章列举了Tomcat 7的新特性,但大多数都没有对它们进行详细地解释、评价并给出可执行的示例。除了列举出新特性,这篇文章还对Tomcat 7的七个最值得注意的特性与增强部分进行分类、评定以及演示可执行代码以使你能够对每个特性/加强有个更好的理解。

我将下面列举的这些分类为“Tomcat 7 新特色:创新性改变”和“Tomcat 7 加强:进化性改变”:

Tomcat 7 新特性:创新性改变

  1. 使用随机数令牌(nonce)防止跨站请求伪造(cross-site request forgery—CSRF)攻击
  2. 验证时改变 jsessionid 以防止固定会话攻击
  3. 内存泄露检测及预防
  4. 使用别名在war文件外存储静态内容 阅读全文 >>

Tomcat 使用 Log4j 输出详细系统日志信息,快速诊断启动故障

Tomcat 启动时的系统日志默认是由 JdkLog14Logger 打印出来的,如

2008-7-7 11:19:34 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.0.28
2008-7-7 11:19:34 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-7-7 11:19:34 org.apache.catalina.core.StandardHost getDeployer
信息: Create Host deployer for direct deployment ( non-jmx )

那我们能不能用 Log4J 来输出这种系统日志呢?我们知道像 Apache 那样的大部分开源框架、组件都是用通用日志组件 (commons-logging) 来输出日志的,因此如果把 commons-logging 和 log4j 搭配使用就能输出十分详尽的日志信息。 阅读全文 >>

Tomcat 5.0.28中的dwr出TransformerFactoryImpl not found错的处理办法

环境:dwr 1.1.4 + Tomcat 5.0.28 + jdk 1.6.0_03
配置了最基本的 web.xml,加了一个 web.xml 和 RemoteBean,部署后通过网址

http://localhost:8080/testdwr/dwr 访问

页面出现错误

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
uk.ltd.getahead.dwr.convert.DOMConverter.<init>(DOMConverter.java:157) 阅读全文 >>

Tomcat 和 OpenLDAP, 从配置到应用[翻译]

Tomcat 和 OpenLDAP, 从配置到应用

by Darren Duke
05/31/2005

几乎所有的 Java Web 应用都需要某种类型的安全性的控制, 并且这通常会借助于 Lightweight Directory Access Protocol (LDAP) 目录服务来实现.  作为一个开发者,很有必要在本地安装一个 OpenLDAP 和 Web 容器来提高开发效率. 配置 Tomcat 连接到 OpenLDAP 的过程假如你能理解的话,还是很直白的. 这篇文章详细描述了这一配置过程,并用 Apache Jakarta 项目下的标签库 (taglib) 来演示简单的方式去测试这一安全机制.

内容

  1. 什么是 LDAP?
  2. OpenLDAP 的安装和配置
  3. JXplorer: 可视化 LDAP
  4. Tomcat 为 OpenLDAP 的配置
  5. Tomcat 服务器配置
  6. Web 应用配置
  7. Jakarta 相应标签库
  8. 小结
  9. 资源 阅读全文 >>

结合Apache和Tomcat实现集群和负载均衡


本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵。

因原文中有较多的贴图,如若各位读者一时不想亲自动手而直想看到配置效果,可查看原文。

 

一:软件环境
   1. Apache: apache 2.0.55 (由http://httpd.apache.org/进入下载)(点击下载apache 2.0.55)
   2. Tomcat: Tomcat 5.5.25 (由http://tomcat.apache.org/进入下载)(点击下载Tomcat 5.5.25 zip版)
   3. mod_jk: 在页面 http://tomcat.apache.org/   Download 标题下找到 Tomcat Connectors 链接进入( 点击下载mod_jk-apache-2.0.55.so),看起来像是个Unix/Linux下的动态库,实际应是个Win32 的 DLL 动态库,大概是为保持不同平台配置的一致性,才用了这个扩展名。 阅读全文 >>