【问题标题】:Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Could not open connection线程“主”org.hibernate.exception.JDBCConnectionException 中的异常:无法打开连接
【发布时间】:2017-04-08 17:31:37
【问题描述】:

由连接重置引起

我正在尝试通过休眠将我的 java 程序连接到 sql server 20008 r2 但我收到 错误

主类如下

package com.prizm;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class SecondPractice {
    public static void main(String args[]){
        Configuration configuration = new
            Configuration().configure("hibernate.cfg.xml");
        ServiceRegistryBuilder registry = new ServiceRegistryBuilder();
        registry.applySettings(configuration.getProperties());
        ServiceRegistry serviceRegistry = registry.buildServiceRegistry();
        SessionFactorysessionFactory=configuration.buildSessionFactory(serviceRegistry);
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        Student lecturer = new Student();
        lecturer.setFirstname("raj");
        lecturer.setLastname("kumar");
        session.save(lecturer);
        session.getTransaction().commit();
        session.close();
    }
}

那么我在哪里犯了错误,我需要知道关于这个错误的什么,如何解决它 提前致谢

在这里我编辑了我的问题并发布了与上述不同的代码,因为我对 log4J 属性不满意,所以我尝试通过 JDBC 将我的 java 代码连接到数据库,连接完成但是当涉及到创建任何表或与数据传输相关的任何其他事情时,它会给我带来与我提到的相同的错误。

这是 JDBC 的代码以及 java 的 Logger api (java.util.Logger)

package com.prizm;
import java.sql.*; 
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.FileHandler;
import java.util.logging.SimpleFormatter;
public class JKL {
public static Logger logger=Logger.getLogger(JKL.class.getName());
public static FileHandler fh=null;
public static void init(){
try{
fh=new FileHandler("logger.log",false);
}catch(Exception e){}
fh.setFormatter(new SimpleFormatter());
Logger l=Logger.getLogger("");
l.addHandler(fh);
Connection con=null;
try{
DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
con=DriverManager.getConnection("jdbc:sqlserver://167.01.09.12;IntegratedSecurity=true");
if(con!=null){
    System.out.println("done");
}
Statement st=con.createStatement();
st.executeUpdate("create table hi(id int,name varchar(50))");
}catch(SQLException e){l.log(Level.SEVERE,"Here is your error",e);}
}
public static void main(String args[]){
JKL.init();
}
}

我得到的日志记录是这样的

]

所以我应该从中了解什么,我需要对 microsoft sql server 2008 r2 的配置做些什么,因为我有 sp1 版本,这段代码在我朋友的电脑上运行良好。

【问题讨论】:

  • 配置 log4j.properties 以便获取调试日志。我们可以诊断的帖子
  • 我有 SecondPractice.class 类,所以如何将 log4j.properties 配置到我的文件中,我的库中有 log4j.jar 文件,我对 log4j.jar 了解不多,你能发布吗代码。
  • 请将异常堆栈跟踪发布为文本,而不是屏幕截图。

标签: java sql-server hibernate jdbc sql-server-2008-r2


【解决方案1】:

在 java 6u29 中,oracle 引入了一个错误,错误 ID 为 7103725,它将 SSL 连接 限制为 SQL Server 2008,除了 java 版本 1.6.0_24 之外,它会给出上述错误,以解决这个问题我们必须将以下属性和值传递给java

-Djsse.enableCBCProtection=false

由于我使用的是eclipse,步骤如下

RunAs>>RunConfiguration>>VMArgument 和块内部,复制这个属性和值,更多细节请关注link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2016-02-02
    • 1970-01-01
    相关资源
    最近更新 更多