Resin 自定义标记(Custom Tag) 烦人

06-04-06 barry
用过dbforms + resin就应该知道,在resin使用自定义标记与其他servlet容器的不同之处,Resin只对出现的自定义标记在整个页面生命周期内只实例化一次,如果在doFinally()方法里把标记的属性都重置为初始值,有些为null,则在重用时就会出错,但Tomcat就没有这样的问题,这是Resin的Bug吗?真是痛苦,有高手可以解决这个问题吗?

banq
2006-04-10 12:00
你可能还没有完全理解什么是J2EE或JavaEE。

首先有Web标准(可从SUN网站下载),根据Web标准,WEB软件分为Web容器(Web服务器)和Web应用系统;Web应用和Web容器交互是通过标准的JNDI或其他标准打交道。

为什么要有J2EE标准,实际就是解决可移植性问题。

所以在自己的应用中最好少掺和具体容器特征的技术(具体配置文件允许),象你这样在Jsp中加入Resin标签做法在设计上是绝对不推荐的,还有什么功能不能用通用技术和框架能实现的呢?

barry
2006-04-10 12:37
banq,sorry,可能是我描述得不清楚,我不是指在jsp是加入resin的标记,因为dbforms是按标准规范做出来的,但在resin上跑就是不行,而在tomcat上跑就可以,那这样是否说明resin不规范呢?

另外,dbforms是国外一些人开发的,在sourceforge上可以找到。我只是想用它来作一些应用的后台,但可惜一些servlet容器,如resin和tomcat在处理这些自定义标记方法上就是有些不一样,在重用标记上,resin在页生命周期里只对标记实例化一次,而tomcat则不一样。

dbforms问题就出现在doFinally方法里,所有标记的状态都在这里重置,而标记状态的初始化就是在实例化对象的时候,resin只实例化一次,导致后面重用该标记时,状态都没了,就会出错,而tomcat则不会。

猜你喜欢