- 浏览: 34195 次
- 性别:
- 来自: 深圳
最新评论
-
jayz2010:
此外,如果thinkpad的音量控制键不起作用,需要做以下事情 ...
在Fedora14下面保护thinkpad笔记本电池
支持现场时发现,对于自定义标签库(tld),Tomcat/JBoss和其他一些中间件,如金蝶Apusic表现的不一样。Tomcat会把自定义标签的类实例缓存起来,为下一个用户/请求使用——更确切的说,是维护了一个标签处理器缓存池,可以减少标签类对象的new操作,在一定程度上提升性能,应用服务器代码可以参考org.apache.jasper.runtime.TagHandlerPool。这是Tomcat的缺省行为。然而,对于其他中间件,如Apusic,缺省行为则不一样,它总是为处理某个请求new一个全新的标签类对象。差别是细微的,但给用户应用的可移植性造成了影响。
例如有这样的标签类,在判断age字段为空时,向页面输出一个请求参数的信息:
简单的JSP页面如下:
以下是web.xml
有这样的hellowworld.tld在WEB-INF/tlds下:
于是,产生的结果是,在缺省的Tomcat上,age的值随着HelloWorldTag的实例被池化复用而随之“缓存”起来,jsp页面的输出随着几个链接的点击不会根据parameter的变化而变化,不是开发人员希望看到的行为,但其他应用服务器,如Apusic却可以。初看来这似乎是Tomcat的bug,但实际深入APP SERVER的源代码和实现机制分析,Tomcat不但机制更为合理(提供了提升性能的缓存),而且很灵活的可以将它的行为配置得和Apusic等应用服务器一直,即绕开TagHandlerPool,方法如下:
在$TOMCAT_HOME/conf/web.xml中,找到有
的一段配置,加入以下参数即可:
此外,根据Tomcat官方文档http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html,enablePooling这个参数似乎也有同样的功效,不幸的是,根据我的实验,单独设置enablePooling为false并不能够解决上面的问题。
对于JBoss,由于web部分基本是采用Tomcat内核,因此,修改JBoss的deploy/jboss-web.
deployer/conf/web.xml(针对版本4.2~4.3)
找到这一部分:
在<load-on-startup>3</load-on-startup>之前加入这一段:
就可以了。
例如有这样的标签类,在判断age字段为空时,向页面输出一个请求参数的信息:
package com.yd.mytag; import java.io.IOException; import javax.servlet.ServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.TagSupport; public class HelloWorldTag extends TagSupport { /** * */ private static final long serialVersionUID = -3626997868569105660L; public String age; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public HelloWorldTag(){ System.out.println("HelloWorldTag init======================="); System.out.println("AGE IS "+age); } //private static final long serialVersionUID = 3174234039143531070L; public int doStartTag() throws JspException { return EVAL_BODY_INCLUDE; } public int doEndTag() throws JspException { //String age=""; try { ServletRequest request =(ServletRequest)this.pageContext.getRequest(); System.out.println(request.getParameter("age")); if(age==null || age.equals(""))//{ // age="blank"; // }else { age = request.getParameter("age");//} pageContext.getOut().write("age is "+age); pageContext.getOut().flush(); } catch (IOException ex) { throw new JspTagException("ERROR"); } finally{ } return EVAL_PAGE; } public void release(){ //age=""; } }
简单的JSP页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %> <%@ taglib uri="/tld/helloworld" prefix="mytag" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>MyJSP</title> </head> <body> <h1>customized tag</h1><br> <mytag:helloworld></mytag:helloworld> <br> <a href="index.jsp?age=testone" >testone</a> <a href="index.jsp?age=testtwo" >testtwo</a> <a href="index.jsp?age=99999" >9999999</a> </body> </html>
以下是web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <jsp-config> <taglib> <taglib-uri>/tld/helloworld</taglib-uri> <taglib-location>/WEB-INF/tlds/helloworld.tld</taglib-location> </taglib> </jsp-config> </web-app>
有这样的hellowworld.tld在WEB-INF/tlds下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.4</jsp-version> <short-name>mytag</short-name> <tag> <name>helloworld</name> <tag-class>com.yd.mytag.HelloWorldTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
于是,产生的结果是,在缺省的Tomcat上,age的值随着HelloWorldTag的实例被池化复用而随之“缓存”起来,jsp页面的输出随着几个链接的点击不会根据parameter的变化而变化,不是开发人员希望看到的行为,但其他应用服务器,如Apusic却可以。初看来这似乎是Tomcat的bug,但实际深入APP SERVER的源代码和实现机制分析,Tomcat不但机制更为合理(提供了提升性能的缓存),而且很灵活的可以将它的行为配置得和Apusic等应用服务器一直,即绕开TagHandlerPool,方法如下:
在$TOMCAT_HOME/conf/web.xml中,找到有
<servlet-name>JSP-Compiler</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
的一段配置,加入以下参数即可:
<init-param> <param-name>tagpoolMaxSize</param-name> <param-value>0</param-value><!--0表示空,-1表示无限大--> </init-param>
此外,根据Tomcat官方文档http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html,enablePooling这个参数似乎也有同样的功效,不幸的是,根据我的实验,单独设置enablePooling为false并不能够解决上面的问题。
对于JBoss,由于web部分基本是采用Tomcat内核,因此,修改JBoss的deploy/jboss-web.
deployer/conf/web.xml(针对版本4.2~4.3)
找到这一部分:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> ..... <load-on-startup>3</load-on-startup> </servlet>
在<load-on-startup>3</load-on-startup>之前加入这一段:
<init-param> <param-name>tagpoolMaxSize</param-name> <param-value>0</param-value> </init-param>
就可以了。
发表评论
-
yjp在jboss上的on-demand attach
2011-11-19 23:35 1207根据http://www.yourkit.com/docs/1 ... -
subversion集成apache时的目录权限问题
2011-10-20 00:32 2284环境: RHEL 6.1 32位 步骤: 1. y ... -
drools的ruleflow-group, lock-on-action, agenda-group等等
2011-07-05 11:46 5377drools引擎控制规则分组,以及规则执行先后次序的方法有多种 ... -
drools的date解析问题
2011-06-28 17:34 1768在jboss-tools的drools编辑器中,以下的规则解析 ... -
在Fedora14下面保护thinkpad笔记本电池
2011-01-31 15:50 1457Linux的好处不用讲,缺点也一大堆,实在是我等懒人不太好使用 ... -
RHEL5.5下的memcachedb
2011-01-31 15:46 971由于CentOS5有一个memcached的安装包,如果要玩m ... -
JBoss5的系统参数替代和jboss.service.binding.set
2011-01-31 15:42 1948有一个想法是将jbossweb.sar中的server.xml ... -
maven的maven.skip.test和maven.test.skip属性
2011-01-31 15:41 1001maven.skip.test是跳过test phase,而m ... -
使用jbosscache mvcc作为hibernate的二级缓存提供者
2011-01-31 15:40 1225如果使用jboss5,可以很 ... -
quartz点滴
2011-01-31 15:38 706在quartz里,如果使用org.quartz.jobStor ... -
Fedora14安装经历
2011-01-31 15:37 1176这几天搞到一个高分的笔记本,试着安装了F14,介质是Fedor ... -
Fedora14下的java字体问题解决
2011-01-31 15:36 888网上找到的,供参考: su - cd /usr/jav ... -
Linux下怎么退出telnet会话
2011-01-31 15:35 1402ctrl+],然后输入quit -
让JBoss EAP5.x使用jdk的mbean server
2011-01-31 15:33 1242如果是jboss 4.x,在jvm启动参数中加入-Djboss ... -
将Tomcat添加为RHEL Linux的系统服务
2011-01-31 15:32 919据说有若干方法,我试过可行的方法是下面这一种,以Tomcat6 ... -
MissionControl监控JRockit的参数
2011-01-31 15:31 793-Xmanagement -Dcom.sun.manageme ... -
利用rsyncd/rsync, crontab实现Linux服务器间的定时备份
2011-01-31 15:28 1657Linux的强大之处,就在于可以将若干个工具像积木一样搭建以实 ... -
文件的批量改名脚本
2011-01-31 15:22 693将某目录下所有类似01jfkdjfld.pdf的文件改为01. ... -
trac运行中的subversion错误
2011-01-31 15:16 715trac0.11以下是依赖于svn才能够安装和运行的。在实际运 ... -
trac发邮件的问题
2011-01-31 15:14 2683发现配置smtp段后, 2010-06-11 17:52:2 ...
相关推荐
同一个应用在运行多个tomcat实例的时候,经常需要共享Session。利用Redis第三方缓存进行配置; 生产环境一般会使用了redis,所以主要是编译tomcat-redis-session-manager来达到tomcat利用redis进配置session共享。...
20.5.2 mbean标签实例 164 20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian中的MBean 165 20.6.1 ClassNameMBean...
20.5.2 mbean标签实例 164 20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian中的MBean 165 20.6.1 ClassNameMBean...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
打开一个网页,加载完后,如果突然断网了,那么你刷新后那页面就没了,怎么阻止这种局面的发生呢?html5的出现让我们豁然开朗,接下来将为您详细解读
3.2 struts 2控制标签详解 105 3.2.1 if/elseif/else标签详解 105 3.2.2 iterator标签详解 106 3.2.3 append标签详解 108 3.2.4 generator标签详解 110 3.2.5 merge标签详解 112 3.2.6 subset标签详解 113 ...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 .3.5 Nginx的...
在<build> 标签内加入即可,如果还是不能解决,那么请你加群(改名后)说明你的问题,有人会回答你。 5.Tomcat7以上在访问JSP页面的时候,提示JSTL错误。 这个错误是因为Tomcat7 中没有 JSTL 的jar包,现在已经在...
文件名与介绍: [Database-support-...[myDbPoolUse]C3P0连接池配置/DBCP连接池配置/Apache的DBUtils框架使用 [myFilterDemoWeb]过滤器Filter学习-设置全站编码与设置页面缓存 [myGzipWeb]全站压缩 [myJavaMainDe
[Hibernate]利用Hibernate进行一对多的级联操作-Web实例 [Java_MySQL_jar]-数据库连接支持包 [JavaMail]-收发邮件支持包 [Java_MySQL_jar]Java访问数据库需要的包 [Spring]基于Spring框架的Web应用演示(附带cglib...
+-----图文安装JDK+TOMCAT+MYSQL配置指南.doc +----jeecms +-----源码 +----JEECMS v2.3.2 Final版发布公告.txt +----readme.txt +----框架简介.txt JEECMS是JavaEE版网站管理系统(Java Enterprise Edition ...
2.6 Nginx的信号控制 2.7 Nginx的平滑升级 第2部分 进 阶 篇 第3章 Nginx的基本配置与优化 3.1 Nginx的完整配置示例 3.2 Nginx的虚拟主机配置 3.3 Nginx的日志文件配置与切割 3.4 Nginx的压缩输出配置 .3.5...
5.1 Nginx与JSP( Tomcat) 在Linux上的安装、 配置 5.2 Nginx与ASP.NET( Mono+FastCGI) 在Linux上的安装、 配置 5.3 Nginx与Perl( FastCGI) 在Linux上的安装、 配置 第6章 Nginx HTTP负载均衡和反向代理的配置...
9.实例成员和类成员 13 (四).类的继承 14 1.创建子类 14 2.this引用、super引用 16 3.最终类和抽象类 18 (五).类的多态性 18 1. 方法的重载 18 2. 方法的覆盖 18 (六).接口 20 1. 定义接口 20 2. 实现接口 21 ...
14.8.1标签(Jlabel)使用示例488 14.8.2按钮(JButton)使用示例491 14.8.3文本框(JTextField)和密码框(JPasswordField)使用示例492 14.8.4文本区(JTextArea)使用示例496 14.8.5复选框(JcheckBox)使用...
applicationContext中发布服务 bean实例绑定服务实现类 配置日志输入输出拦截 Restful风格的好处: 1.基于这种风格架构,软件编写可以更简洁 → 一个地址通过请求方式控制请求方法 2.基于HTTP协议,支持...
4.1. 3 Shell流程控制语句 62 4.1. 4 Shell脚本案例 67 4.1. 5 Shell数组编程 71 5. Linux深入篇 72 5. 1 构建Nginx WEB服务器 72 5.1. 1 Nginx WEB安装 73 5.1. 2 Nginx 虚拟主机配置 74 5.1. 3 Nginx性能优化 75 ...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...