[英]Weblogic Datasource connection
我正在尝试使用以下代码通过 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 发生了以下异常:
java.lang.NullPointerException at weblogic.utils.wrapper.WrapperFactory.getCachedWrapperClass(WrapperFactory.java:55) at weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:202) at weblogic.utils.wrapper.WrapperFactory.getWrapperClass( WrapperFactory.java:190) at weblogic.utils.wrapper.WrapperFactory.createWrapper(WrapperFactory.java:175) at weblogic.jdbc.wrapper.JDBCWrapperFactory.getWrapper(JDBCWrapperFactory.java:197) at weblogic.jdbc.rmi.SerialConnection.readResolve (SerialConnection.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762) at java.io .ObjectInputStream.readObject 0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:197) at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream) .java:564) 在 weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:193) 在 weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62) 在 weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl. java:240) 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348) 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) 在 weblogic.jdbc.common.internal.Rmi1DataSource_W (来源不明)
提前致谢。
如果您使用的是 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 ....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.