<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>群英汇博客 &#187; Tomcat</title> <atom:link href="http://blog.ossxp.com/tag/tomcat/feed/" rel="self" type="application/rss+xml" /><link>http://blog.ossxp.com</link> <description></description> <lastBuildDate>Wed, 14 Sep 2011 03:52:03 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.9.2</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>用过滤器解决getRemoteUser()为的null的问题</title><link>http://blog.ossxp.com/2010/02/474/</link> <comments>http://blog.ossxp.com/2010/02/474/#comments</comments> <pubDate>Thu, 04 Feb 2010 11:47:56 +0000</pubDate> <dc:creator>崔 锐</dc:creator> <category><![CDATA[Java＆J2EE]]></category> <category><![CDATA[技术文章]]></category> <category><![CDATA[未分类]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[mod_jk]]></category> <category><![CDATA[REMOTE_USER]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=474</guid> <description><![CDATA[
上次在 解决getRemoteUser()为null的问题中提到从index.jsp中得到&#60;%= request.getRemoteUser() %&#62;。昨天，同事给我提议使用过滤器，于是我在上次的基础上做了修改。过滤器是请求和响应之间的一种WEB组件，它驻留在服务器端，用来截取客户端与资源之间的请求，并对这些信息进行“过滤”。我从filter中使用request.getRemoteUser(),然后使用request.getSession().setAttribute(&#8220;key&#8221;,value)保存在session中，下面是我使用的代码:
public void doFilter(ServletRequest req, ServletResponse rep,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse reponse = (HttpServletResponse) rep;
<a
href="http://blog.ossxp.com/2010/02/474/" class="more-link">阅读全部内容 &#187;</a>]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/02/474/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>解决getRemoteUser()为null的问题</title><link>http://blog.ossxp.com/2010/02/454/</link> <comments>http://blog.ossxp.com/2010/02/454/#comments</comments> <pubDate>Tue, 02 Feb 2010 12:37:25 +0000</pubDate> <dc:creator>崔 锐</dc:creator> <category><![CDATA[Java＆J2EE]]></category> <category><![CDATA[技术文章]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[mod_jk]]></category> <category><![CDATA[REMOTE_USER]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=454</guid> <description><![CDATA[
最近的项目需要Apache2+tomcat6配置Basic认证，项目后台需要得到Basic认证的用户名，但是始终request.getRemoteUser()=null。这几天通过查看 mod_jk文档 和在同事的帮助下，终于使得index.jsp页面上&#60;%= request.getRemoteUser() %&#62;不再为null。
主要过程
下面我把使用的主要配置说明一下.首先，在${TOMCAT_HOME}/conf /server.xml里面,找到AJP13对应的那个 connector节点,添加tomcatAuthentication=&#8221;false&#8221; ,这个属性默认是True,意思是使用Tomcat本身的认证,不使用外部Server传进来的认证信息。
然后，在apache的httpd.conf配置文件中，使用的JkMount和JkUnMount这两个指令是由mod_jk提供的，JkMount指令把请求转给tomcat,与之相反的是JkUnMount不转发请求。下面是我的配置:
JkEnvVar REMOTE_USER null
JkMount /*.jsp  ajp13_worker
JkMount /Test/*  ajp13_worker
JkUnMount /Test/ ajp13_workerJkEnvVar指令可以使从Apache转发环境变量给Tomcat。这些变量可以从Servlet中的request.getAttribute(attributeName)得到，但是通过JkEnvVar发送的变量名称不会出现在request.getAttributeNames()中。]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/02/454/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>剥离CruiseControl dashboard控制台到Debian安装的tomcat6上</title><link>http://blog.ossxp.com/2010/01/391/</link> <comments>http://blog.ossxp.com/2010/01/391/#comments</comments> <pubDate>Sat, 23 Jan 2010 04:52:10 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[持续集成]]></category> <category><![CDATA[CruiseControl]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=391</guid> <description><![CDATA[在前篇日志 如何剥离CruiseControl内置的Web控制台 中，我已经介绍过怎么剥离CruiseControl内置的控制台dashboard到tomcat6容器中。但那篇日志中介绍的是用下载压缩包方式安装的tomcat6，在这我向大家介绍一下如何用Debian包安装的tomcat6部署dashbaord控制台。
为什么这两种安装tomcat6的方法会给web部署带来异同呢？原因是，用Debian包安装的tomcat6默认启动了tomcat6 的SecurityManager，这时对于部署在它上面的应用代码进行权限管理，当你的web应用在/WEB-INF/lib或者/WEB-INF/classes目录下加入了第三方或个人的jar包/类库，但没有在/etc/tomcat6/policy.d目录下的安全策略文件中加入访问权限控制，那么你的web应用就不能正常启动，会出现一些意想不到的错误。可参见我的另一篇日志 Dashboard不能运行在Debian包安装的Tomcat6上？
而用解压包安装的tomcat6默认情况下是不启用SecurityManager，比如你运行
CATALIAN_ROOT/bin$ ./startup.sh
就不会启用SecurityManager。如果你想启用SecurityManager，可运行
$CATALINA_HOME/bin/catalina.sh start -security(Unix)
CATALINA_HOME%\bin\catalina start -security      (Windows)
下面就说下用Debian包安装的tomcat6部署dashbaord控制台的步骤:
1、部署dashbaord web应用
将dashbaord项目拷到 /var/lib/tomcat6/webapps目录下
2、编辑 /etc/tomcat6/policy.d/50local.policy 安全策略文件，加入以下几行
// The permissions granted to the context WEB-INF/classes directory
grant codeBase "file:${catalina.base}/webapps/dashboard/WEB-INF/classes/-" {
permission java.security.AllPermission;
};// The permissions granted to the context WEB-INF/lib directory
grant codeBase "file:${catalina.base}/webapps/dashboard/WEB-INF/lib/-" {
permission java.security.AllPermission;
};
3、修改 dashboard-config.xml配置文件，下面是修改后的文件(粗体部分是修改的内容)
&#60;dashboard&#62;
&#60;buildloop
logsdir="/PATH/TO/CC/logs"
<a
href="http://blog.ossxp.com/2010/01/391/" class="more-link">阅读全部内容 &#187;</a>]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/01/391/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Dashboard不能运行在Debian包安装的Tomcat6上？</title><link>http://blog.ossxp.com/2010/01/385/</link> <comments>http://blog.ossxp.com/2010/01/385/#comments</comments> <pubDate>Fri, 22 Jan 2010 16:01:04 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[持续集成]]></category> <category><![CDATA[CruiseControl]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=385</guid> <description><![CDATA[前面的一篇日志中我已经介绍了如何把CruiseControl的dashboard Web控制台剥离到tomcat6上。但那时介绍剥离时用的是下载tomcat6压缩包然后解压的tomcat6，并没有Debian 自己提供的tomcat6安装包。或许你会问怎么不直接用Debian提供软件包安装呢？其实不是我不想，只是我实验过用
sudo aptitude install tomcat6
直接安装tomcat6，但是无论如何就是不能成功部署dashboard。 :-?
最终只能委曲求全，“另辟蹊径”了。
但今天同事也遇到这样的问题了，看来是时候解决这个问题了。刚开始我以为是缺少了什么jar包之类的类库，于是分别比较了这两种tomcat所有到的所有类库，发现没有缺少。这时才意识到自己的判断是错误的，然后就转向跟踪tomcat6的日志文件，发现了下面信息：
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.ExceptionInInitializerError
at org.springframework.web.context.ContextLoader.&#60;init&#62;(ContextLoader.java:142)
at org.springframework.web.context.ContextLoaderListener.createContextLoader(ContextLoaderListener.java:57)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1249)
at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:612)
at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:136)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at <a
href="http://blog.ossxp.com/2010/01/385/" class="more-link">阅读全部内容 &#187;</a>]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/01/385/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>用Debian/Ubuntu提供的软件包整合apache2和tomcat6</title><link>http://blog.ossxp.com/2010/01/312/</link> <comments>http://blog.ossxp.com/2010/01/312/#comments</comments> <pubDate>Wed, 20 Jan 2010 13:57:01 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[Java＆J2EE]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[java]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=312</guid> <description><![CDATA[上篇日志写了用下载源码包的方式整合apache2和tomcat6，或许你会问：怎么不用Debian自己提供的软件包整合呢？
其实在我用下载源码包的方式成功整合apache2和tomcat6后，我就开始实验用Debian自己提供的软件包整合，可是摸索了好长时间，还是整合不成功 :-?  。今天在同事蒋鑫的帮助下，终于有了眉目 :-) 。下面是具体步骤：
1、安装 tomcat6
sudo aptitude  install tomcat6 tomcat6-docs tomcat6-admin tomcat6-examples
2、安装 apache2
sudo aptitude install apache2
3、安装apache-tomcat 连接器模组 libapache2-mod-jk
sudo aptitude install libapache2-mod-jk
4、配置jk
cd /etc/apache2/mods-available
/etc/apache2/mods-available$ sudo vi jk.conf
jk.conf的内内容如下
# 指出jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/libapache2-mod-jk/workers.properties# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log# Set the jk log level [debug/error/info]
JkLogLevel info# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"# JkOptions indicate to send SSL <a
href="http://blog.ossxp.com/2010/01/312/" class="more-link">阅读全部内容 &#187;</a>]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/01/312/feed/</wfw:commentRss> <slash:comments>18</slash:comments> </item> <item><title>Linux下Apache与Tomcat的整合</title><link>http://blog.ossxp.com/2010/01/296/</link> <comments>http://blog.ossxp.com/2010/01/296/#comments</comments> <pubDate>Tue, 19 Jan 2010 03:42:07 +0000</pubDate> <dc:creator>王胜</dc:creator> <category><![CDATA[Java＆J2EE]]></category> <category><![CDATA[Apache]]></category> <category><![CDATA[Debian]]></category> <category><![CDATA[java]]></category> <category><![CDATA[Tomcat]]></category><guid
isPermaLink="false">http://blog.ossxp.com/?p=296</guid> <description><![CDATA[背景介绍：
Apache的HTTPD是目前比较受欢迎的网站服务器软件，它不但功能强大，而且完全免费，并且支持市场上流行的各种操作系统(Windows,Linux,Mac os)。同时对于Java Servlet/JSP的支持，通常也会使用同样Apache出品的Tomcat。Tomcat除了支持Java Servlet/JSP之外，也可以当做网站服务器使用，但是在对于静态的html文件、图片文件等的解析效率上不如Apache HTTPD的执行效率高。应用tomcat的服务器如果网站的访问量较大，系统资源占用会明显升高。所以就引出Tomcat与apache的整合服务。Apache负责静态资源处理，tomcat负责jsp和java servlet等动态资源的处理。
需要的组件：
1、apache
下载地址：http://httpd.apache.org/download.cgi
2、Tomcat
下载地址：http://tomcat.apache.org/download-60.cgi
3、Apache Tomcat Connector (mod_jk)
下载地址：http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
根据你的操作系统选择适当的 jk 连接器，同时要注意你用的Apache版本，根据你的Apache版本下载合适的jk版本。
下面是apache与jk的兼容性映射mod_jk-1.2.28-httpd-2.2.X.so is for Apache 2.2.x. It has been build against version 2.2.6, but should work with Apache 2.2.0 and later. Rename to mod_jk.so before putting it in your modules directory or adjust your LoadModule statement.
mod_jk-1.2.28-httpd-2.0.X.so is for Apache 2.0.x. It has been build <a
href="http://blog.ossxp.com/2010/01/296/" class="more-link">阅读全部内容 &#187;</a>]]></description> <wfw:commentRss>http://blog.ossxp.com/2010/01/296/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (user agent is rejected)
Database Caching 9/15 queries in 0.003 seconds using disk

Served from: blog.ossxp.com @ 2012-02-09 16:52:19 -->
