我做了个后台,使用的是JNDI数据库连接池.平时正常打开页面没有问题,数据库链接正常,也不报错.但是登陆后台后,出现错误:
从数据池取得数据库连接时出错;
错误为:javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root exception is java.lang.ClassNotFoundException: org/apache/naming/java/javaURLContextFactory]
_______________________________________________________________________________________
后台报了错误,但是数据库链接仍然是正常的,网页访问没有问题,请问是怎么回事了.我的代码如下
_________________________________________________________________________________________
/**
* 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接
* 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.
*/
public class DBConnectionManager
{
static private DBConnectionManager instance; // 唯一实例
static private int clients;
static private Connection conn=null;
private PreparedStatement prepareStatement =null;
private Statement stmt = null;
private ResultSet rs=null; /**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return DBConnectionManager 唯一实例
*/
static synchronized public DBConnectionManager getInstance()
{
{
instance = new DBConnectionManager();
}
clients++;
return instance;
} public static Connection getConns(String jndiName) throws SQLException,NamingException
{
try
{
Context initCtx = new InitialContext();
//创建一个命名对
Context Ctx = (Context)initCtx.lookup("java:comp/env");
if( Ctx == null ) {
System.out.println("fail to access url context!");
} //获取连接池对象
DataSource ds =(DataSource)Ctx.lookup(jndiName);
conn =ds.getConnection();
//获取数据库连接
}
catch(SecurityException se)
{
throw se;
}
return conn;
}
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
调用代码如下:
ublic class DataBase
{
Connection conn = null;
private Statement stmt = null;
private PreparedStatement pstm = null;
private ResultSet rs = null;
private boolean connected = false;
private DBConnectionManager dbconn=null;
void Init() throws SQLException,NamingException
{
try
{
dbconn= DBConnectionManager.getInstance();
conn= dbconn.getConns("jdbc/uupodata");
}
catch(NamingException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
catch(SQLException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
}
从数据池取得数据库连接时出错;
错误为:javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root exception is java.lang.ClassNotFoundException: org/apache/naming/java/javaURLContextFactory]
_______________________________________________________________________________________
后台报了错误,但是数据库链接仍然是正常的,网页访问没有问题,请问是怎么回事了.我的代码如下
_________________________________________________________________________________________
/**
* 管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接
* 池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.
*/
public class DBConnectionManager
{
static private DBConnectionManager instance; // 唯一实例
static private int clients;
static private Connection conn=null;
private PreparedStatement prepareStatement =null;
private Statement stmt = null;
private ResultSet rs=null; /**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return DBConnectionManager 唯一实例
*/
static synchronized public DBConnectionManager getInstance()
{
{
instance = new DBConnectionManager();
}
clients++;
return instance;
} public static Connection getConns(String jndiName) throws SQLException,NamingException
{
try
{
Context initCtx = new InitialContext();
//创建一个命名对
Context Ctx = (Context)initCtx.lookup("java:comp/env");
if( Ctx == null ) {
System.out.println("fail to access url context!");
} //获取连接池对象
DataSource ds =(DataSource)Ctx.lookup(jndiName);
conn =ds.getConnection();
//获取数据库连接
}
catch(SecurityException se)
{
throw se;
}
return conn;
}
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
调用代码如下:
ublic class DataBase
{
Connection conn = null;
private Statement stmt = null;
private PreparedStatement pstm = null;
private ResultSet rs = null;
private boolean connected = false;
private DBConnectionManager dbconn=null;
void Init() throws SQLException,NamingException
{
try
{
dbconn= DBConnectionManager.getInstance();
conn= dbconn.getConns("jdbc/uupodata");
}
catch(NamingException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
catch(SQLException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
}
解决方案 »
- 关于在struts2中如何将.action加入到web.xml中的<welcome-file-list>下 急!在线等!!!!
- 求servlet教学视频
- ajax 省市联动
- 【100分】Java中如何获取一个URL地址的网页的Html代码
- 页面中有上传文件操作,请问怎样控制上传文件的类型只能为jpg、gif啊?
- 微软的ie支不支持swing?
- servlet单独测试通过了,但jsp调用servlet不成功!附源代码!
- Struts 错误处理
- 我的第一个bean,有错误,大家帮我看看。(在线)
- 紧急求助!!!
- 在Eclipse里开发jsp,建立多个Servlet文件后,是否需要在Web.xml建立映射,如何建立
- 在页面中怎样传递链表(用session除外)?
catch(NamingException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
catch(SQLException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
抓了2个异常,不应该打印相同的错误提示,这样不便于你调试。 编码风格问题
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
jdbc/uupodata
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>2.context.xml<!-- The contents of this file will be loaded for each web application -->
<Context> <!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/uupodata" auth="Container" type="javax.sql.DataSource" username="sa" password="790920" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=UupoData" maxActive="200" maxIdle="4" maxWait="10000"/>
<parameter>
<name>factory</name>
<value>org.apache.naming.java.javaURLContextFactory</value>
</parameter>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
--></Context>