小弟为单位开发了一个平台,主要功能是对初始单据进行多层审核,每层审核都有不同的用户来进行;
我对tomcat没什么了解,jsp也才是刚刚起步,平台倒是可以运行了,但正是运行1个月左右,发现tomcat不运行了,重启tomcat后就好了,之后变成两周就得起一次tomcat,有时单单起tomcat还没用,必须重启服务器,然后必须一周就得起一次,最近变成4-5天就得重启tomcat或服务器,在状态上它总是在运行的,可是就是不连接数据库,我用的是tomcat是5.5的,服务器系统是windows2003,数据库为Oracle9i;
我之前对tomcat没有进行任何配置,有人说是因为数据量越来越大,导致tomcat的进程出现了问题,请指点下!!
在线等
我对tomcat没什么了解,jsp也才是刚刚起步,平台倒是可以运行了,但正是运行1个月左右,发现tomcat不运行了,重启tomcat后就好了,之后变成两周就得起一次tomcat,有时单单起tomcat还没用,必须重启服务器,然后必须一周就得起一次,最近变成4-5天就得重启tomcat或服务器,在状态上它总是在运行的,可是就是不连接数据库,我用的是tomcat是5.5的,服务器系统是windows2003,数据库为Oracle9i;
我之前对tomcat没有进行任何配置,有人说是因为数据量越来越大,导致tomcat的进程出现了问题,请指点下!!
在线等
解决方案 »
- 【急】修改正则表达式增加新功能
- html乱码问题
- jsp 编写的table,每行第一列都用checkbox,用来表示该行是否被选中。如果选中多行后,把这些行删除,如果没有两行相连(就是上下挨着),则删除没有问题,如果相连,则只能删除最上面一个,请问该如何解决?谢谢
- 在应用服务器板块发的一个帖子,请兄弟们去看看,一起结贴
- 请帮忙给传一个oracle9i(9.2.0.4)的JDBC驱动!多谢!([email protected])
- 要确保javabeans能正常运行,在windows2000下安装jsp环境时要注意哪些?
- 关于servlet里重新定向target的问题,,急~~~
- 请教一下做过论坛的高手
- 请问大家JAVA怎么重命名目录名称
- 如何使用JDBC访问mysql ?
- 帮忙看看!为什么checkbox为null呢?
- 求个界面简洁的论坛静态页面及数据库(sql2005)
提高tomcat的内存大小,和连接池,可用连接数
连接池配置了吗,配置的地方有个 size参数,放大点。 内存吗,设置启动的那个 -xmx 511M xmi 256M 那一串呀。
finally{
ConDB.closeRs(rs);
ConDB.closeStm(stm);
ConDB.closeCon(con);
}再就是tomcat加大内存 看看
链接数据库的javabean吗?
数据库连接没有释放.
同意10楼的看法.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class sql_data {
String sDBDriver = "oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@127.0.0.1:1521:ora9";
//String url="jdbc:oracle:thin:@10.211.236.5:1521:ora9";
String user="batman";
String password="baggio";
Connection conn= null;
Statement stmt = null;
ResultSet rs = null;
public sql_data()
{
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("sql_data(): " + e.getMessage());
}
}
public void executeInsert(String sql)
{
try {
conn = DriverManager.getConnection(url,user,password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex) {
System.err.println("sql_data.executeUpdate:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
try {
conn = DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("sql_data.executeQuery:"+ex.getMessage());
}
return rs;
}
public void executeUpdate(String sql)
{
try {
conn = DriverManager.getConnection(url,user,password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}
public void executeDelete(String sql)
{
try {
conn = DriverManager.getConnection(url,user,password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex){
System.err.println("sql_data.executeDelete:"+ex.getMessage());
}
}
public void closeStmt(){
try{
stmt.close();
}
catch(SQLException e){
e.printStackTrace();
}
} public void closeConn(){
try{
conn.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}
下面这段代码。public ResultSet executeQuery(String sql)
{
try {
conn = DriverManager.getConnection(url,user,password);
stmt=conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("sql_data.executeQuery:"+ex.getMessage());
}
return rs;
}connection怎么关闭??
算是古董了吧,呵呵db访问一定要用连接池的lz去参考一下tomcat下配置吧
给lz个参考。http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.htmlgood luck
配置tomcat6的context.xml在Context加入以下内容, <Resource name="jdbc/mengshan"
auth="Container"
type="javax.sql.DataSource"
maxActive="20"
maxIdel="10"
maxWait="1000"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/test"
>
</Resource>
简单测试<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%@ page import="java.sql.*"%>
<%
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env"); //从Context中lookup数据源
ds = (DataSource)envCtx.lookup("jdbc/mengshan"); if(ds!=null) {
out.println("已经获得DataSource!");
out.println("<br>");Connection conn = ds.getConnection();
Statement stmt=conn.createStatement();ResultSet rst=stmt.executeQuery("select * from usertable");
out.println("以下是从数据库中读取出来的数据");
while(rst.next()){
out.println("bookName:"+rst.getString(1));
out.println("<br>"); }}else out.println("连接失败!"); }
catch(Exception ne){out.println(ne);}
%>
用连接池是解决数据库性能问题的,不能解决连接泄漏的问题。虽然有的连接池有自动回收空闲连接的功能,我们还是要手工显示的去调用连接的关闭方法,不能依赖连接池的回收功能,因为你设置的一分钟回收的话,用户操作多的话,一分钟之内连接就有可能会满
不是在bean里面关的 给你个例子
public ArrayList findAllFligth(){
ArrayList fligthList =new ArrayList();
Connection con=ConDB.getConnection();
String sql="select * from T_flight a,T_corporation b where a.corporation_Id=b.corporation_Id";
System.out.println(sql);
Statement stm=null;
ResultSet rs=null;
try {
stm=con.createStatement();
rs=stm.executeQuery(sql);
while(rs.next()){
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
ConDB.closeRs(rs);
ConDB.closeStm(stm);
ConDB.closeCon(con);
}
return fligthList;
}
你的数据库连接已经满了。
可能的原因:
1。程序中部分代码没有关闭连接。
2。数据库的允许最大连接数设的过小,导致一部分连接请求在排队。实在访问量太大了,因为你的是直连用完关的方式,所以排队咯。
3。你的代码有问题,你应该在finally里面关连接,否则前面出错抛异常了,你的close执行不到连接也不会关。
4。某些地方数据库死锁。就能想到这些了。顶下