java+osgi+mysql数据库连接异常

qingqing0328 2012-06-15 08:47:33
java程序在首次连接数据库时成功,并读出数据后释放连接,但是在第二次连接时,数据库连接发生异常如下:
java.sql.SQLException: java.lang.IllegalAccessError: class sun.reflect.GeneratedConstructorAccessor5 cannot access its superclass sun.reflect.ConstructorAccessorImpl
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:435)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.ices.biris.ssp.service.impl.ServiceManagerImpl.getConn(ServiceManagerImpl.java:610)
at com.ices.biris.ssp.service.impl.ServiceManagerImpl.findservice(ServiceManagerImpl.java:251)
at com.ices.biris.ssp.service.impl.ServiceManagerImpl.getServiceTreeNodeList(ServiceManagerImpl.java:59)
at servlet.AccordionServlet.doPost(AccordionServlet.java:92)
at servlet.AccordionServlet.doGet(AccordionServlet.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.service(ServletManager.java:180)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:126)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:318)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:924)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)









/**
*连接数据库
* @return 创建的连接
*/
public Connection getConn(){
String driver = "com.mysql.jdbc.Driver";
//String url = "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF-8";
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = null;
try{
if(conn == null){
Class.forName(driver);
conn = DriverManager.getConnection(url,"root","root");
//conn = DriverManager.getConnection(url);
}
}catch(Exception e){
System.err.println("装载 JDBC/ODBC 驱动程序失败。");
e.printStackTrace();
System.exit(1); // terminate program
}
/*try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.1.199:1521:ices","wangwl","wangwenli");
}
catch(Exception ex){
ex.printStackTrace();
}*/
return conn;
}
/**
*释放数据库
* @param conn
*/
public void releaseConn(Connection conn){
try{
if(conn != null){
conn.close();
System.out.println("释放数据库连接完毕");
}
}catch(Exception e){
e.printStackTrace();
}
}




...全文
233 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
q867115116 2013-06-09
  • 打赏
  • 举报
回复
我也在弄啊 这个驱动包导入就可以了吗?
qingqing0328 2012-06-15
  • 打赏
  • 举报
回复
补充数据库连接和释放的代码:
/**
*连接数据库
* @return 创建的连接
*/
public Connection getConn(){
String driver = "com.mysql.jdbc.Driver";
//String url = "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF-8";
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = null;
try{
if(conn == null){
Class.forName(driver);
conn = DriverManager.getConnection(url,"root","root");
//conn = DriverManager.getConnection(url);
}
}catch(Exception e){
System.err.println("装载 JDBC/ODBC 驱动程序失败。");
e.printStackTrace();
System.exit(1); // terminate program
}
/*try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.1.199:1521:ices","wangwl","wangwenli");
}
catch(Exception ex){
ex.printStackTrace();
}*/
return conn;
}
/**
*释放数据库
* @param conn
*/
public void releaseConn(Connection conn){
try{
if(conn != null){
conn.close();
System.out.println("释放数据库连接完毕");
}
}catch(Exception e){
e.printStackTrace();
}
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧