Weblogic数据源连接

问题描述 投票:0回答:1

我正在尝试使用以下代码通过Java客户端访问数据源连接:

Connection conn;
Statement stmt;
ResultSet rs;

try {
Properties prop = new Properties();
prop.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
prop.put(javax.naming.Context.PROVIDER_URL, "t3://localhost:7001");
Context ctx = new InitialContext(prop);
Object obj = ctx.lookup("test/datasource");
System.out.println("Data Source Found….");

DataSource ds = (DataSource) obj;
conn = ds.getConnection();
System.out.println("Data Source User Name::"+conn.getMetaData().getUserName());
stmt = conn.createStatement();

String query = "select 1 from dual";
System.out.println("Query " + query);
rs = stmt.executeQuery(query);
if (rs != null) {
    System.out.println("Some Data Found in Query");
} else {
    System.out.println("No Data Found in Query");
}
ctx.close();
} catch (Exception e) {
        e.printStackTrace();
}

但我得到了以下堆栈跟踪。我无法弄清楚发生了什么。有人知道吗?

找到数据源...

2012年2月13日下午4:07:28 GMT-03:00信息JDBC BEA-001155发生以下异常:

位于weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:202)的weblogic.utils.wrapper.WrapperFactory.getCachedWrapperClass(WrapperFactory.java:55)中的java.lang.NullPointerException,位于weblogic.utils.wrapper.WrapperFactory.getWrapperClass( WrapperFactory.java:190)at weblogic.udbs.wrapper.WrapperFactory.createWrapper(WrapperFactory.java:175)at weblogic.jdbc.wrapper.JDBCWrapperFactory.getWrapper(JDBCWrapperFactory.java:197)at weblogic.jdbc.rmi.SerialConnection.readResolve (SerialConnection.java:140)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at at java.lang.ref中的java.lang.reflect.Method.invoke(Method.java:597)java.io.Object.Start.advokeReadResolve(ObjectStreamClass.java:1061)java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762) .ObjectInputStream.readObject 0(ObjectInputStream.java:1329)位于weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream)的weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:197)中的java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) .loga:564)at weblogic.rmi.inm上的weblogic.umi。内部。事件处于一个网站上的weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)中的weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:193)(ResponseImpl。 java:240)at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)at weblogic.jdbc.common.internal.RmiDataSource_1031_WLStub.getConnection (未知来源)

提前致谢。

java database oracle11g weblogic datasource
1个回答
0
投票

如果您使用的是Weblogic 10.3及以上最好的万无一失的解决方案(这不会让您头脑发热)是:

仅包含$ {wlserver_10.3_installation_home} \ server \ lib文件夹中的wlfullclient.jar

在你的类路径(lib)中。这样您就不需要weblogic.jar了

如果找不到wlfullclient.jar,那么构建它。以下是如何构建它:

http://docs.oracle.com/cd/E12840_01/wls/docs103/client/jarbuilder.html

然后写下这段代码:

//Some Code

weblogic.jndi.Environment env = new weblogic.jndi.Environment();
env.setInitialContextFactory(Environment.DEFAULT_INITIAL_CONTEXT_FACTORY);
env.setProviderUrl("t3://${weblogic_host_ip}:${weblogic_port_number}");
env.setSecurityPrincipal(${DB_USER});
env.setSecurityCredentials(${DB_PASSWORD});
java.lang.Object obj = null;
try {
            javax.naming.Context ctx = env.getInitialContext();
        obj = ctx.lookup(${JNDI_NAME_OF_DATA_SOURCE});
        javax.sql.DataSource ds = (javax.sql.DataSource) obj;
        java.sql.Connection conn = ds.getConnection();
        java.sql.Statement stmt = conn.createStatement();
        java.sql.ResultSet rs = stmt.executeQuery("select '5' from dual");
        if(rs != null){
        rs.next();
        System.out.println(rs.getString(1));
    }

    } catch (javax.naming.NamingException e) {
        e.printStackTrace();
    }

//Other Code ....
© www.soinside.com 2019 - 2024. All rights reserved.