请问关于TOMCAT5的速度问题和MVC相关的经验!

my0707 2004-11-02 10:32:08
我用TOMCAT5做WEB服务器,写了个简单的MVC结构的B/S程序

浏览器:JSP(表单、显示数据)
控制器:Servlet(对从JSP接收的数据进行合理性验证,通过后调用相应的服务器端方法)
业务逻辑:CLASS(普通的JAVA类文件,对数据库的全部操作都在这里执行,执行结果返回给Servlet)
数据库:SQL Server 2K + JDBC

1。每次修改Servlet、业务逻辑的CLASS之后,必须重新启动TOMCAT,要不然修改的无效,这样做真的很麻烦啊!有其他办法避免频繁重新启动WEB服务器吗?

2。服务器的响应速度一直都非常慢,开发阶段和刚开始调试阶段都慢的不行,不过今天早晨的速度却很快,不知道是什么原因!

3。对数据库操作时都调用一个JAVA Bean,周期是session,操作之后使用以下代码关闭数据库连接:
rs.close();
stmt.close();
conn.close();
我想问每次数据库操作都关闭连接是否能减轻服务器的负担?是否会影响速度?
...全文
156 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqj9899 2004-11-05
  • 打赏
  • 举报
回复
开发阶段roloadable设为true有助于调试servlet和其他class文件
但这一功能会加重服务器得运行负荷,建议在发布阶段改为false
chn217 2004-11-02
  • 打赏
  • 举报
回复
1 应该是在Context标签下的reloadable,呵呵,这个你自己多try几下不就OK了么

2 第二个问题,我建议你用性能诊断工具查一下,我觉得可能是数据库的问题

3 http://jakarta.apache.org/commons/dbcp/

实际上还有很多连接池的实现,PoolMan也不错.自己多搜索吧
yuantiou 2004-11-02
  • 打赏
  • 举报
回复
1.可以进入tomcat的manage界面,手动对修改过的工程进行reload。
my0707 2004-11-02
  • 打赏
  • 举报
回复
谢谢 chn217(天涯) 的回复!

1。我的虚拟目录是在http://localhost:8080/admin里设置的,其中Context Properties下边和Loader Properties 下边都有Reloadable这个选项,都设置为:TRUE吗?在server.xml里没有发现context标签。

2。我的WEB服务器一直都在一台机器上啊!

3。关于Apache的DBCP的能不能介绍一下?
chn217 2004-11-02
  • 打赏
  • 举报
回复
一个比较好的Example,引用自Tomcat Document:
---------------------------------------------------
Connection conn = null;
Statement stmt = null; // Or PreparedStatement if needed
ResultSet rs = null;
try {
conn = ... get connection from connection pool ...
stmt = conn.createStatement("select ...");
rs = stmt.executeQuery();
... iterate through the result set ...
rs.close();
rs = null;
stmt.close();
stmt = null;
conn.close(); // Return to connection pool
conn = null; // Make sure we don't close it twice
} catch (SQLException e) {
... deal with errors ...
} finally {
// Always make sure result sets and statements are closed,
// and the connection is returned to the pool
if (rs != null) {
try { rs.close(); } catch (SQLException e) { ; }
rs = null;
}
if (stmt != null) {
try { stmt.close(); } catch (SQLException e) { ; }
stmt = null;
}
if (conn != null) {
try { conn.close(); } catch (SQLException e) { ; }
conn = null;
}
}

chn217 2004-11-02
  • 打赏
  • 举报
回复
第三个问题答案的补充:

ResultSet和Statement使用完毕后,必须关闭,否则将在数据库中形成很多sleeping状态的子进程,占用资源殆尽.
chn217 2004-11-02
  • 打赏
  • 举报
回复
第一个问题的解决方法:

1 修改TOMCAT_HOME/conf/server.xml里面对应的<context ... reloadable="true" >

2 或在浏览器里面输入http://YOUR_HOST/manager/reload?path=YOUR_CONTEXT

第二个问题的解决方法:
1 可能与数据库和操作系统有关系. 记得曾经有个项目,Tomcat在Win2K上比较慢,换到WinXP上就比较快了.用的是同一个mssql数据库.建议用性能诊断工具察看一下

第三个问题的答案:
1 如果用户数不多,这样关闭是不会出现问题的.如果用户量很大,建议使用数据库连接池, Apache的DBCP还可以. 毕竟Connection资源申请和释放的代价都是十分高昂的.

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧