线程" main"中的例外情况org.hibernate.exception.JDBCConnectionException:无法打开连接

时间:2016-11-24 12:03:20

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

连接重置导致

我试图通过hibernate将我的java程序连接到sql server 20008 r2,但我收到this错误

主要课程如下

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();
}
}

,我得到的日志记录是

this]

所以我应该从中理解,我是否需要对microsoft sql server 2008 r2的配置做一些事情,因为我有sp1版本,这段代码在我朋友的电脑上运行得非常好。

1 个答案:

答案 0 :(得分:0)

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

-Djsse.enableCBCProtection =假

当我使用eclipse时,步骤如下

RunAs>> RunConfiguration>> VMArgument并在块中复制此属性和值,有关详细信息,请按照此link进行操作。