当前位置: 首页 > 面试题库 >

JDBC连接挂起,SQL Server 2008 r2没有响应

和和煦
2023-03-14
问题内容

当连接到SQL Server
2008(在本地表示完整的服务器,在生产环境中使用完整的服务器)时,在本地计算机上进行开发时对我来说效果很好,但是此问题仅在生产环境中挂起。

这是代码:

package oata;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import sun.applet.Main;

public class Sql {

    public static final String SQLDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    protected Connection conn = null;
    private String ip = "";
    private int port = 0;
    private String databaseName = "";
    private String db_userid = "";
    private String db_password = "";

    public void callDb(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
        System.out.println("Initialising variables");
        ip = args[0];
        port =  Integer.parseInt(args[1]);
        databaseName = args[2];
        db_userid = args[3];
        db_password = args[4];
        try{
        Log logger = LogFactory.getLog(Main.class);
        System.out.println("Opening logger...");
        logger.debug("opening driver " + SQLDRIVER);
        System.out.println("Creating connection instance...");
        Class.forName(SQLDRIVER).newInstance();
        System.out.println("Driver Manager.getConnection...");
        conn = DriverManager.getConnection(getDBURL(), db_userid, db_password);
        System.out.println("Connection prepare statement...");
        PreparedStatement ps = conn.prepareStatement("select * from nstupersonal");
        System.out.println("Executing query...");
        ResultSet rs = ps.executeQuery();
        while(rs.next()){
            System.out.println(rs.getString("StudentId"));
        }
        }catch(Exception e){
            System.out.println(e.getMessage());
        }

        conn.close();
    }


    private String getDBURL(){
                String url = "";
                try {
                    url = "jdbc:sqlserver://" + ip
                    +":" + port +";databaseName="+
                     databaseName + ";user=" + db_userid + ";password="+db_password;
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }   
                return url;
            }

}

那就是运行的代码。在控制台中,它实际上只是挂在生产环境中。它似乎总是挂在SQL Server
2008上,但在我的所有其他客户的生产环境中都能正常工作。与…同时运行

在SQL Server的1433上启用了TCP / IP,并在管理控制台中将允许远程连接设置为true。

java -jar ipaddress端口dbname用户密码

有任何想法吗?SQL驱动程序是否错误?我正在使用sqljdbc4.jar

结果命令提示符为…

初始化变量打开记录器…驱动程序Manager.getConnection …

没有异常被抛出

谢谢,

d


问题答案:

如果生产在Java 6 Update 29上运行,则可以升级到Java 6 Update 30或降级到Java 6 Update 27(?)。Update
29包含一个错误,其中SSL无法正常运行,并且与SQL
Server的连接挂起。



 类似资料:
  • 我对CloseableHttpClient管理的连接有问题。Spring服务管理纽约连接: 当执行不成功时,我的setPayment方法最多调用3次。有时在第一次执行后,我的方法挂起而没有响应。欢迎任何建议。

  • 我正在尝试使用docker-compose来设置气流实例,如官方文档中所述,我被困在气流初始化部分。看起来容器之间没有连接,但我不知道如何解决它。 我使用与文档中描述的相同的。可以在这里下载:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml 目前,我在我的外壳中看到了这一点: 医生说我应该看到这样的东

  • 问题内容: 在我的应用程序中,Spring管理用于数据库访问的连接池。Hibernate将这些连接用于其查询。乍一看,我对池没有任何问题:它可以与并发客户端和只有一个连接的池一起正常使用。我可以执行很多查询,所以我认为我(或Spring)不会留下开放的连接。 一段时间不活动后(有时30分钟,有时超过2小时),我的问题出现了。然后,当Hibernate进行搜索时,它会持续很长时间。将log4j级别设

  • 我使用jTDS使ssl连接到SQL服务器2008数据库在我的java应用程序,这是运行在JRE 1.8. 当我在连接URL中配置ssl=request属性时,连接只是挂起在JRE 1.8中。然而,同样的事情在JRE 1.7中也可以很好地工作。 我试着用带有encrypt=true属性的MicrosoftJDBC驱动程序做同样的事情,它在JRE 1.7和1.8中都运行得非常好。 知道为什么会这样吗?

  • 在我的帐户页面/视图订阅中,在操作段落中,我有一个取消按钮,但没有挂起按钮。你知道这是否正常吗? 我跟踪了这个函数,它只返回取消数据:wcs_get_all_user_actions_for_subscription 谢谢你的帮助