【发布时间】:2012-02-13 19:19:12
【问题描述】:
我正在尝试使用此代码通过 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 在 weblogic.utils.wrapper.WrapperFactory.getCachedWrapperClass(WrapperFactory.java:55) 在 weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:202) 在 weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:190) 在 weblogic.utils.wrapper.WrapperFactory.createWrapper(WrapperFactory.java:175) 在 weblogic.jdbc.wrapper.JDBCWrapperFactory.getWrapper(JDBCWrapperFactory.java:197) 在 weblogic.jdbc.rmi.SerialConnection.readResolve(SerialConnection.java:140) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 在 weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:197) 在 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.RmiDataSource_1031_WLStub.getConnection(未知来源)
提前致谢。
【问题讨论】:
-
您是否打开了 WebLogic 控制台并验证了您的 DataSource 是否一切正常?是否可以从 Web 控制台进行测试?
-
这是否出现在系统输出中?
System.out.println("Data Source Found…."); -
谢谢大家。我已经解决了这个问题。我只是将 weblogic 控制台上的连接字符串更改为 jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=OCDB) 之类的格式)(INSTANCE_NAME=OCDB_1)))。这很奇怪,但有效!
标签: java database oracle11g weblogic datasource