当前位置: 技术问答>java相关
连接池问题,大家来帮帮忙呀!!
来源: 互联网 发布时间:2015-03-31
本文导语: unix系统,websphere3.0, 程序运行时报错: Naming service exception: com.ibm.ejs.dbm.jdbcext.DataSourceImpl 6744.333 1cfacee3 ServletInstan A Servlet.available.for.service:."ConnPoolTest" Get connection, process, or close statement exception: null 程序如下...
unix系统,websphere3.0,
程序运行时报错:
Naming service exception: com.ibm.ejs.dbm.jdbcext.DataSourceImpl
6744.333 1cfacee3 ServletInstan A Servlet.available.for.service:."ConnPoolTest"
Get connection, process, or close statement exception: null
程序如下:
// *******************************************************************
// * ConnPoolTest.java-测试连接池 *
// *******************************************************************
// ********
// 步骤 1 *
// ********
// 导入 JDBC 软件包和 IBM 实现的扩展,和命名
// 服务软件包。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;
import com.ibm.ejs.dbm.jdbcext.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.spi.*;
public class ConnPoolTest extends HttpServlet
{
private static DataSource ds = null;
private static String user = null;
private static String password = null;
private static String source = null;
private static final String CONFIG_BUNDLE_NAME ="realpool";
public void init(ServletConfig config) throws ServletException
{
super.init(config);
try
{
PropertyResourceBundle configBundle = (PropertyResourceBundle)PropertyResourceBundle.getBundle(CONFIG_BUNDLE_NAME);
user = configBundle.getString("poolServlet.user");
password = configBundle.getString("poolServlet.password");
source = configBundle.getString("poolServlet.source");
System.out.println(user+" "+password+" "+source);
}
catch(Exception e)
{
System.out.println("Properties file exception: " + e.getMessage());
}
try
{
//**********
// * 步骤 2 *
//**********
// 创建初始命名上下文。
Hashtable parms = new Hashtable();
parms.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.ejs.ns.jndi.CNInitialContextFactory");
Context ctx = new InitialContext(parms);
//**********
// * 步骤 3 *
//**********
// 执行命名服务查找,以获取 DataSource 对象。
// 单个 DataSource 对象是“工厂”,它是所有
// 请求用于获取每个请求的各个连接。
// Web 管理员可提供查找参数。
// 下面的代码使用了读自外部特性文件的值。
// 通常,文本字符串源类似于 "jdbc/sample",
// 其中,"jdbc" 是要查找的上下文,
// "sample" 是要检索的 DataSource 对象的
// 逻辑名。
//************************************************************************
//************************************************************************
//就在这里报的错的,我的source为 "jdbc/sfhcpool"
//我的ejs.jar,ujc.jar文件都有,为什么报错
//这个程序在NT4.0,websphere3.5上运行通过
ds = (DataSource)ctx.lookup(source);
//************************************************************************
//************************************************************************
}
catch (Exception e)
{
System.out.println("Naming service exception: " + e.getMessage());
}
}
public void service(HttpServletRequest req, HttpServletResponse res)
{
long time1 = Long.parseLong(String.valueOf(System.currentTimeMillis()));
Connection conn = null;
Vector SQuery_result = new Vector();
int RESULT_COLUMN_COUNT=0;
try
{
//**********
// * 步骤 4*
//**********
// 使用 DataSource 工厂获取连接对象 conn。
conn = ds.getConnection(user,password);
CallableStatement cs = conn.prepareCall("{? =call sfhc.pkg_TestConnectionPool.Get_All_Rkxx(?)}");
cs.registerOutParameter(1,OracleTypes.CURSOR);
cs.setInt(2,50);
cs.execute();
//Cast CURSOR to ResultSet
ResultSet rs = (ResultSet)cs.getObject(1);
ResultSetMetaData rsm = rs.getMetaData();
RESULT_COLUMN_COUNT = rsm.getColumnCount();
while(rs.next())
{
for (int i = 1; i
程序运行时报错:
Naming service exception: com.ibm.ejs.dbm.jdbcext.DataSourceImpl
6744.333 1cfacee3 ServletInstan A Servlet.available.for.service:."ConnPoolTest"
Get connection, process, or close statement exception: null
程序如下:
// *******************************************************************
// * ConnPoolTest.java-测试连接池 *
// *******************************************************************
// ********
// 步骤 1 *
// ********
// 导入 JDBC 软件包和 IBM 实现的扩展,和命名
// 服务软件包。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.driver.*;
import com.ibm.ejs.dbm.jdbcext.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.spi.*;
public class ConnPoolTest extends HttpServlet
{
private static DataSource ds = null;
private static String user = null;
private static String password = null;
private static String source = null;
private static final String CONFIG_BUNDLE_NAME ="realpool";
public void init(ServletConfig config) throws ServletException
{
super.init(config);
try
{
PropertyResourceBundle configBundle = (PropertyResourceBundle)PropertyResourceBundle.getBundle(CONFIG_BUNDLE_NAME);
user = configBundle.getString("poolServlet.user");
password = configBundle.getString("poolServlet.password");
source = configBundle.getString("poolServlet.source");
System.out.println(user+" "+password+" "+source);
}
catch(Exception e)
{
System.out.println("Properties file exception: " + e.getMessage());
}
try
{
//**********
// * 步骤 2 *
//**********
// 创建初始命名上下文。
Hashtable parms = new Hashtable();
parms.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.ejs.ns.jndi.CNInitialContextFactory");
Context ctx = new InitialContext(parms);
//**********
// * 步骤 3 *
//**********
// 执行命名服务查找,以获取 DataSource 对象。
// 单个 DataSource 对象是“工厂”,它是所有
// 请求用于获取每个请求的各个连接。
// Web 管理员可提供查找参数。
// 下面的代码使用了读自外部特性文件的值。
// 通常,文本字符串源类似于 "jdbc/sample",
// 其中,"jdbc" 是要查找的上下文,
// "sample" 是要检索的 DataSource 对象的
// 逻辑名。
//************************************************************************
//************************************************************************
//就在这里报的错的,我的source为 "jdbc/sfhcpool"
//我的ejs.jar,ujc.jar文件都有,为什么报错
//这个程序在NT4.0,websphere3.5上运行通过
ds = (DataSource)ctx.lookup(source);
//************************************************************************
//************************************************************************
}
catch (Exception e)
{
System.out.println("Naming service exception: " + e.getMessage());
}
}
public void service(HttpServletRequest req, HttpServletResponse res)
{
long time1 = Long.parseLong(String.valueOf(System.currentTimeMillis()));
Connection conn = null;
Vector SQuery_result = new Vector();
int RESULT_COLUMN_COUNT=0;
try
{
//**********
// * 步骤 4*
//**********
// 使用 DataSource 工厂获取连接对象 conn。
conn = ds.getConnection(user,password);
CallableStatement cs = conn.prepareCall("{? =call sfhc.pkg_TestConnectionPool.Get_All_Rkxx(?)}");
cs.registerOutParameter(1,OracleTypes.CURSOR);
cs.setInt(2,50);
cs.execute();
//Cast CURSOR to ResultSet
ResultSet rs = (ResultSet)cs.getObject(1);
ResultSetMetaData rsm = rs.getMetaData();
RESULT_COLUMN_COUNT = rsm.getColumnCount();
while(rs.next())
{
for (int i = 1; i