jsp项目在服务器上报这样的错误(java.net.BindException: Address already in use: connect)

我有一个项目,在本机测试时好的,可是在服务器上测试,一直报java.net.BindException: Address already in use: connect
[table]
|com.mysql.jdbc.CommunicationsException:Communications link failure due to underlying exception:

|** BEGIN NESTED EXCEPTION **|
||
|java.net.SocketException|
|MESSAGE: java.net.BindException:Address already in use:connect|
||
|STACKTRACE:|
||
|java.net.SocketException: java.net.BindException:Address already in use:connect
|
[/table]
这样的错误信息,我没有用数据库连接池,每一次我都关闭了conn和rs对象的。但是为什么会报出这样的错误信息呢?前台显示没有问题,只是控制台出这样的错误信息,还有就是报出我的数据库连接失败,如果数据库连接失败为什么在前台显示页面还是好的呢?我已经被这个问题整了好几天了,希望好心的人能给点意见啊,这个是我的连接关闭数据库的类
[code="java"]public class DataBaseConnection {
private static String DBDRIVER="com.mysql.jdbc.Driver";
private static String DBURL="jdbc:mysql://localhost:3306/rsc?useUnicode=true&characterEncoding=utf-8";
private static String DBUSER="root";
private static String DBPASSWORD="hjj";
private static Connection conn;

public static Connection getConnection(){
    try {
        Class.forName(DBDRIVER);
        conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
    } catch (Exception e) {
        System.out.println("数据库连接失败!!!");
        e.printStackTrace();
        }
    return conn;

}
public static void close(){
    try {
            if(conn!=null){
                conn.close();
                conn=null;
            }
    } catch (SQLException e) {
        System.out.println("数据库关闭失败!!"+e);
        e.printStackTrace();
    }
}

}[/code]
调用的时候我这样调用,这个是我的一个dao类
[code="java"]
//根据Fid查询到相应的list
public List selectByFid(int fid) throws Exception{
List list=new ArrayList();
try{
conn=dbc.getConnection();
sql="select * from type where fid=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, fid);
rs=pstmt.executeQuery();
while(rs.next()){
vo=new Type();
vo.setId(rs.getInt(1));
vo.setType(rs.getString(2));
vo.setFid(rs.getInt(3));
vo.setOrder(rs.getInt(4));
list.add(vo);
}
}
catch(Exception e){
System.out.println("根据Fid查询到相应的list发生错误!"+e);
}
finally{
close(rs);
close(pstmt);
dbc.close();
}
return list;
}
public void close(ResultSet rs) throws Exception{
if(rs!=null){
rs.close();
rs=null;
}
}
public void close(PreparedStatement pstmt) throws Exception{
if(pstmt!=null){
pstmt.close();
pstmt=null;
}
}
[/code]
请问我这样关闭数据库连接有错吗?还是我需要注意什么,谢谢指点。。。。

conn改成非静态就好了。
现在都什么年代了,怎么还有人自己写这种jdbc连接呢?而且总是写不好。
再不济也可以用spring jdbc template吧。
楼主,请你马上花半天时间学习一下spring jdbc template,这可以让你在接下来每天省掉半天时间。

3306端口 看看是不是被占用了? 还有你部署的服务器是否可以访问你的mysql呢

1.使用cmd命令看一下端口是否被其他的程序占用

2.安装一个mysql客户端,看下是否能登录

为啥全部的方法和变量都要声明为static呢?

这个是

private static Connection conn;

造成的错误

在你本机的时候,只有你一个人测试,单线程当然没有问题。但是在服务器,确实多线程的,会很很多人做不同的工作。如果其中的一个线程打开连接之后,另一个线程却关闭连接了。就会发生上面的错误。

如果是多线程的话,最好不要有共享的资源(static的)!

现在很少用手写的jDBCutil,你还是用个连接池一类的,比如C3P0 一类的。
private static

4楼正解,鉴定完毕

4楼正解。connection连接不能定义为静态static。
建议用连接池。试一下hibernate

一定要用jdbc的人,请你们马上花半天学习一下spring jdbc template.