2015-12-07 133 views
0

我使用HSQLDBHibernate的版本4春季版本4的行家项目。 但同样我没有得到连接对象,得到以下异常。org.hsqldb.HsqlException:连接异常:连接失败:java.io.EOFException的

org.hibernate.exception.GenericJDBCException: Could not open connection 
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:52) 
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) 
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:304) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169) 
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67) 
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160) 
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1263) 
at com.mavenTest.dao.EmpDao.saveData(EmpDao.java:28) 
at com.mavenTest.service.EmpService.saveData(EmpService.java:20) 
at com.mavenTest.controller.LoginController.register(LoginController.java:48) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (connection exception: connection failure: java.io.EOFException) 
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) 
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) 
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 
at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141) 
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276) 
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) 
... 36 more 
Caused by: java.sql.SQLTransientConnectionException: connection exception: connection failure: java.io.EOFException 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) 
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) 
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) 
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) 
... 41 more 
Caused by: org.hsqldb.HsqlException: connection exception: connection failure: java.io.EOFException 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.ClientConnection.execute(Unknown Source) 
at org.hsqldb.ClientConnection.<init>(Unknown Source) 

而我得到的SesionFactory参考,但如果我试图让使用了getSessionFactory()的openSession()得到同样的错误了会议参考。

配置部分中的XML文件,如下所示:

<!-- =====================================sessionFactory==================================== --> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="packagesToScan" value="com.mavenTest.model"/> 
      <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.hbm2ddl.auto">create</prop> 
       <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="hibernate.format_sql">false</prop> 
       <prop key="hibernate.generate_statistics">true</prop> 
      </props> 
     </property> 

    </bean> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
     <property name="url" value="jdbc:hsqldb:hsql://localhost"/> <!-- jdbc:hsqldb:mem:. --> 
     <property name="username" value="sa"/> 
     <property name="password" value=""/> 
     <property name="maxActive" value="100000"/> 
     <property name="maxIdle" value="30"/> 
     <property name="maxWait" value="16000"/> 
     <property name="minIdle" value="0"/> 
</bean> 

<!-- =====================================Bean dependency==================================== --> 

<bean id="empService" class="com.mavenTest.service.EmpService" autowire="byName"/> 
<bean id="employeeDAO" class="com.mavenTest.dao.EmpDao" autowire="byName"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 

我没有得到为什么连接失败。所以请指南,在这做什么。

+0

HSQL runniing on your localhost?如果没有看到[http://hsqldb.org/doc/guide/running-chapt.html](http://hsqldb.org/doc/guide/running-chapt.html) – Mikey

+0

是在本地运行的HSQL服务器,使用命令提示符。 –

+1

它与'jdbc:hsqldb:mem:'是否正常工作。 ? – Mati

回答

0

更改xml配置后,其运行和问题即告解决。更改后的代码如下:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="org.hsqldb.jdbcDriver"/> 
     <property name="url" value="jdbc:hsqldb:mem:abc"/> <!-- jdbc:hsqldb:mem:. --> 
     <property name="username" value="sa"/> 
     <property name="password" value=""/> 
     <property name="maxActive" value="100000"/> 
     <property name="maxIdle" value="30"/> 
     <property name="maxWait" value="16000"/> 
     <property name="minIdle" value="0"/> 
</bean>