Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Weblogic数据源连接_Java_Database_Oracle11g_Weblogic_Datasource - Fatal编程技术网

Java Weblogic数据源连接

Java Weblogic数据源连接,java,database,oracle11g,weblogic,datasource,Java,Database,Oracle11g,Weblogic,Datasource,我试图通过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.PROVIDE

我试图通过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();
}
//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 ....
但我得到了以下堆栈跟踪。我不知道发生了什么事。有人知道吗

找到数据源

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(本机方法)处 位于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.InvokereAddressResolve(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(msgabbrevenputstream.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 10.3及以上版本,最好的傻瓜解决方案(不会让您抓狂)是:

只包括在中找到的wlfullclient.jar ${wlserver\U 10.3\U安装\U home}\server\lib文件夹

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

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

然后编写以下代码:

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();
}
//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 ....

您是否已打开WebLogic控制台并验证您的数据源是否一切正常?它是否可以从web控制台进行测试?是否显示在sysout中<代码>System.out.println(“找到数据源…”)