首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

初遇webLogic的有关问题

2012-10-25 
初遇webLogic的问题今天想通过weblogic的JDBC数据连接池,数据源对数据操作,可是遇到了问题。首先在控制台想

初遇webLogic的问题
今天想通过weblogic的JDBC数据连接池,数据源对数据操作,可是遇到了问题。
首先在控制台想测试一下是否连接成功。
下面是控制给出的提示:

在此页中,您可以在特定服务器上或部署 JDBC 连接缓冲池的所有服务器上测试此 JDBC 连接缓冲池。

连接缓冲池测试使用在 "配置" > "连接" 选项卡 "高级选项" 中配置的测试选项。必须为 "测试表名称" 指定一个值并选择 "测试保留的连接" 或 "测试释放的连接" 以测试连接缓冲池。

测试保留的连接和测试释放的连接任意选一个就可以测试了。

好,现在控制台的测试通过了。现在我又新建了一个类,通过获取上下文来获取连接源。
代码:

import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import java.sql.*;import javax.sql.DataSource;public class JDBCPoolWeblogic {// Defines the JNDI context factory.public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";// Defines the JNDI provider url.public final static String PROVIDER_URL = " t3://localhost:7001";public static void main(String[] args) throws Exception{Connection myConn = null;DataSource ds = null;Context ctx = getInstance();ds = (javax.sql.DataSource) ctx.lookup("MYPoolYLJNDI");myConn = ds.getConnection();Statement stmt = myConn.createStatement();ResultSet rs = stmt.getResultSet();rs = stmt.executeQuery("select * from AAA");if (rs.next()) {System.out.print(rs.getString("ABC"));}}public static Context getInstance() throws Exception {Properties properties = null;String url = "t3://localhost:7001";String user = "weblogic";//weblogic登陆的用户名和密码String password = "weblogic";try {properties = new Properties();properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");properties.put(Context.PROVIDER_URL, url);if (user != null) {properties.put(Context.SECURITY_PRINCIPAL, user);properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);}return new InitialContext(properties);}catch (Exception e) {throw e;}}}

问题是运行到myConn = ds.getConnection();这句话的时候出问题了
java.lang.reflect.InvocationTargetException
--------------- nested within: ------------------
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Failed to generate class for weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_oracle_jdbc_driver_T4CConnection_813_WLStub ] - with nested exception:
[java.lang.reflect.InvocationTargetException - with target exception:
[java.lang.ArrayIndexOutOfBoundsException: 211]]

找道原因了取数据源只能在容器中取,马上换成servlet+jsp访问.就可以取到。
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {Context ctx=null;DataSource ds=null;Connection conn=null;response.setContentType("text/html;charset=gbk");PrintWriter out=response.getWriter();ResultSet rs=null;Statement st=null;try {ctx=JDBCPoolWeblogic.getInstance();ds=(DataSource)ctx.lookup("MYPoolYLJNDI");conn=ds.getConnection();st=conn.createStatement();rs=st.executeQuery("select cityname from city");rs.next();String cityname=rs.getString("cityname");out.println("<html>");out.println("<body>");out.println("<h1>"+cityname+"</h1>");out.println("</body>");out.println("</html>");out.flush();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{out.close();try {rs.close();st.close();conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

热点排行