这种写法是否会引起什么问题?

zjlgigi 2007-10-16 10:37:45
各位高手,
小弟在写一个分检数据系统,每天大概有2500条记录记录到系统中,20个用户左右并行使用.使用JSP+SQL2K(SP4)结构.
在我的程序里,我没有用连接池,而是直接调用的Connection对象的Open,Close和方法.TOMCAT与SQL2K安装在同一台SERVER上.

硬件: HPDL380 服务器(2G)硬盘 + 80G(RAID1)+ 1000M网卡

不知道这样会否有什么不良的影响,有什么好的需要修改的地方?
因为系统还没有上线,单用户使用没有问题,不知道如何测试多用户并发时的性能.

小弟的项目不可以有任何失误啊...否则就有可能失业的啦....高手们指点一下吧...谢谢啦
...全文
236 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
class DBM {
function A {
connection con = xxx.open();
try {
....
..
con.close();
}
catch(Exception e)
{
// ? 这里是否需要作什么处理让 connection close ??? 请指教
}
}
____________________

这种写法就不对,应该写成下面的这种形式。如果有多个 SQL 操作,还应增加事务处理。

class DBM {
function A {
connection con = xxx.open();
try {
....
..
} catch(SQLException e) {
...
} finally {
try {
rs.close();
ps.close();
con.close();
}catch(SQLException e){
}
}
}
  • 打赏
  • 举报
回复
是啊,在 Tomcat 中加上 JNDI 数据库配置一下,只不过十几行代码,
再在数据库连接部分改用从 JNDI 获得数据源的连接就可以了。使用连
接池可以大大地降低系统的开销,可以在 Windows 的控制台下使用
netstat -ano 监视一下,不使用连接池,每一次数据库连接 1433 端
口就会与客户端连接一次,如果使用连接池,可以看到 1433 端口的客户
端连接最多就是那些个连接数量。不仅仅是资源问题,使用连接池,使得
连接更快,快到再次重用连接时的时间几乎为 0。
rickhunterchen 2007-10-24
  • 打赏
  • 举报
回复
tomcat应付20个用户足够了。

为什么不用连接池呢,毕竟你的数据量还是比较大的,不是每天几十条数据量。

用户并发问题,是每个项目都需要遇到的问题。这就需要看具体问题具体分析了。

一般做法是在添加、修改、删除数据之前,再次获取相应记录,然后添加或修改,删除。然后做好判断就可以了。

因为你的用户量还是少,所以这样做就足够了。
cnyking 2007-10-24
  • 打赏
  • 举报
回复
主要还是在资源的回收上,
finally中回收相应的资源。
也就是说,处理好异常
xiyuan1999 2007-10-23
  • 打赏
  • 举报
回复
LZ的数据量不大

所以一般不会出现问题的
xiyuan1999 2007-10-23
  • 打赏
  • 举报
回复
还是应该配连接池

用JNDI最好
shili150 2007-10-17
  • 打赏
  • 举报
回复
不会……
wunan320 2007-10-17
  • 打赏
  • 举报
回复
数据量很小
zjlgigi 2007-10-17
  • 打赏
  • 举报
回复
To ProvidenceZY:
没关系,都是热心的兄弟....

其实我想了解一下用连接池到底会有多大的提升???
我记得连接池有个最大的上限,当并发的用户超过了这个值的连接时会出现什么情况???

我之前问过 C# 的弟兄们,他们也是没有用 Connection Pool 的,都是直接 open 跟 close , 他们并没有出现什么样性能上的大问题...
我用 netstat 命令检查了并发时的端口,发现从创建连接到关闭连接,端口并不是立即就会释放掉的...要等一会儿才会完全释放...
iskyshop 2007-10-17
  • 打赏
  • 举报
回复
抱歉楼主,由于网速太慢给另一个帖子的回复写到这里了
iskyshop 2007-10-17
  • 打赏
  • 举报
回复
自定义主键就是了

public class IdGenerator extends TableGenera{
//这里写一下你的主键生成策略
//按你的这个要求写很简单的,获得日期->转换成字符串,最后添加4位数字递增
//每个主键生成都先检测一下已有的主键值,最后四位递增就可以了
}

然后配置你自定义的主键策略就是了
  • 打赏
  • 举报
回复
如果可以点开 Tomcat 管理控制台的话可以在图形界面下配置,如果没有只能手工在 server.xml 中
的 Context 里配置,并不是很复杂。在 web.xml 中引用一下资源,在代码中使用 JNDI 获得连接。
zhangbin131421 2007-10-17
  • 打赏
  • 举报
回复
没有哪个人站出来,回答一下的,替你郁闷,我也在困扰这个问题,tomcat赔了好久都没成功,期待 高手的详细回答
vcokno1 2007-10-17
  • 打赏
  • 举报
回复
2500条的数据和20个用户其实不算大。
一定要使用数据缓存,数据访问速度会很快,尽量一次不提取全部数据,按页提取。
速度上应该不会有什么大问题.
建议你不要直接使用jdbc,程序维护量太大,最好使用hibernate,ibate,ejb3是最好的选择,使用POJO能直接生成数据表.
Tomcat配置不算麻烦,对一个java程序员来说算不了什么。

祝你成功。
zjlgigi 2007-10-17
  • 打赏
  • 举报
回复
另外我打算用 crystal 来完成我的报表部份,不知道有没有应该要注意的地方呢?希望各位高手都能发表一下自己的看法...
zjlgigi 2007-10-17
  • 打赏
  • 举报
回复
To vcokno1,
你好,感谢你的回答,我想问问你所指的数据 buffer , 是否像 hibernate 这样的三层结构库吗 ?
还是我的程序里可以通过一些技巧满足到这种效果 ?
比如 ArrayList 等... 谢谢 !
zjlgigi 2007-10-17
  • 打赏
  • 举报
回复
或者这样吧,因为我担心的是DB这一块会出问题...
我建立了一个比较大的DB类,用来控制整个程序的DB操作,包括写入,读取,更新,每个function我都会有相应的 open 和 close 方法.大致的写法为如下 :

class DBM {
function A {
connection con = xxx.open();
try {
....
..
con.close();
}
catch(Exception e)
{
// ? 这里是否需要作什么处理让 connection close ??? 请指教
}
}

function B {
....
}
}

其实这种写法会否引起什么比较大的问题?如果是对于性能上的问题,我能否增加什么硬件设备可以解决到?
我知道三层结构非常好,不过开发周期会明显加长....

请高手指教....
husl 2007-10-16
  • 打赏
  • 举报
回复
数据量不大
不过还是的确认你close完了吗? 可能你很确定close的很彻底,但通常都不是
系统连续运行一段时间 这些问题才回出来

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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