1.看到手头的一套系统,用struts,它定义了一个基类action,使用了许多实例变量。
这是极其糟糕,错误的设计。因为struts的action内建是单一实例的,但web环境是多线程。在访问量达到一定数量时,系统将错误百出。
这种问题必须避免。
一个原则,在struts的action类里,不要定义任何的实例变量。这是必须遵守的一个规则。
之前我认为,可以将session引用保持在基类,事实证明,不能这么做。
struts的设计者认为,一个action应该是一个业务逻辑的调用者。我觉的struts应该将这一条写入文档的醒目位置。
2. Tomcat 的jndi找不到数据库驱动的原因。
如果将数据库驱动放到web应用的lib下,Tomcat将无法找到数据库驱动。这是因为Tomcat在Deploy一个web应用并初始化jndi的时候,并没有装载该web应用的lib。所以它会找到该数据库驱动程序。
所以,要使用Tomcat的jndi驱动,请将数据库驱动包放到Tomcat安装目录下的common\lib下。