以下是工具类HibernateUtils:public class HibernateUtils { private static SessionFactory factory;

static {
try {
Configuration cfg = new Configuration().configure();
factory = cfg.buildSessionFactory();
}
catch(Exception e) {
e.printStackTrace();
}
}

/**
 * 获取会话工厂
 * @return SessionFactory
 */
public static SessionFactory getSessionFactory() {
return factory;
}

/**
 * 开启一个会话并返回
 * @return Session
 */
public static Session getSession() {
return factory.openSession();
}

/**
 * 关闭会话
 * @param session
 */
public static void closeSession(Session session){
if(session != null)
if(session.isOpen()){
session.close();
ProxoolFacade.shutdown(0);//关闭连接池
}
}
}
以下是业务类LycheeManagerImpl中的查找和更新方法:/**
 * 根据指定的id查找荔枝
 * @param id
 * @return Lychee
 */
public Lychee getLychee(int id) { Session session = null;
Lychee lychee = null; try {
session = HibernateUtils.getSession();
session.beginTransaction(); lychee = (Lychee) session.get(Lychee.class, id); session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
} return lychee;
}/**
 * 更新荔枝
 * @param lychee
 */
public void updateLychee(Lychee lychee) { Session session = null; try {
session = HibernateUtils.getSession();
session.beginTransaction();//单元测试执行到此句时抛异常,事务无法开启 session.update(lychee); session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
HibernateUtils.closeSession(session);
}
}以下是单元测试:public void testUpdateLychee(){

                private LycheeManager lm = new LycheeManagerImpl();
Lychee lychee = lm.getLychee(2);
lychee.setPrice(10);
lm.updateLychee(lychee);
}
经过单元测试,发现当执行到业务类LycheeManagerImpl里的updateLycehee()方法的session.beginTransaction();时就抛出异常:
2219 [main] ERROR proxool.ProxoolDriver  - Problem
org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'DBPool'
at org.logicalcobwebs.proxool.ConnectionPoolDefinition.doChange(ConnectionPoolDefinition.java:237)
at org.logicalcobwebs.proxool.ConnectionPoolDefinition.<init>(ConnectionPoolDefinition.java:134)
at org.logicalcobwebs.proxool.ProxoolFacade.registerConnectionPool(ProxoolFacade.java:87)
at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:77)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at org.hibernate.connection.ProxoolConnectionProvider.getConnection(ProxoolConnectionProvider.java:53)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1327)
at edu.scau.lychee.dbmanager.impl.LycheeManagerImpl.updateLychee(LycheeManagerImpl.java:53)
at edu.scau.lychee.test.HibernateTest.testUpdateLychee(HibernateTest.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
2219 [main] WARN util.JDBCExceptionReporter  - SQL Error: 0, SQLState: null
2219 [main] ERROR util.JDBCExceptionReporter  - org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'DBPool'
org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1327)
at edu.scau.lychee.dbmanager.impl.LycheeManagerImpl.updateLychee(LycheeManagerImpl.java:53)
at edu.scau.lychee.test.HibernateTest.testUpdateLychee(HibernateTest.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: org.logicalcobwebs.proxool.ProxoolException: Attempt to refer to a unregistered pool by its alias 'DBPool'
at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:108)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
at org.hibernate.connection.ProxoolConnectionProvider.getConnection(ProxoolConnectionProvider.java:53)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
... 22 more请问各位朋友有没有这样的经验和解决方法,谢谢。