Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/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-通过JNDI的JDBC数据源导致从WebLogic.JDBC.rm.SerialConnection.prepareStatement(字符串)返回null PreparedStatement_Java_Oracle_Jdbc_Weblogic_Datasource - Fatal编程技术网

Java WebLogic-通过JNDI的JDBC数据源导致从WebLogic.JDBC.rm.SerialConnection.prepareStatement(字符串)返回null PreparedStatement

Java WebLogic-通过JNDI的JDBC数据源导致从WebLogic.JDBC.rm.SerialConnection.prepareStatement(字符串)返回null PreparedStatement,java,oracle,jdbc,weblogic,datasource,Java,Oracle,Jdbc,Weblogic,Datasource,你好,谢谢你的帮助 我正在使用Weblogic 10.3.0.0,其JDBC数据源配置为使用oracle.JDBC.OracleDriver中的精简驱动程序。驱动程序库是ojdbc6.jar,驱动程序版本是11.1.0.6.0-Production。在我的本地客户端上,我使用的是11.2.0.3.0版本,但我也尝试了与服务器相同的版本,但没有效果 问题的症状以两种NullPointerException的形式出现: java.lang.NullPointerException at weblog

你好,谢谢你的帮助

我正在使用Weblogic 10.3.0.0,其JDBC数据源配置为使用oracle.JDBC.OracleDriver中的精简驱动程序。驱动程序库是ojdbc6.jar,驱动程序版本是11.1.0.6.0-Production。在我的本地客户端上,我使用的是11.2.0.3.0版本,但我也尝试了与服务器相同的版本,但没有效果

问题的症状以两种NullPointerException的形式出现:

java.lang.NullPointerException
at weblogic.utils.wrapper.WrapperFactory.getCachedWrapperClass(WrapperFactory.java:44)
at weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:195)
at weblogic.utils.wrapper.WrapperFactory.getWrapperClass(WrapperFactory.java:183)
at weblogic.utils.wrapper.WrapperFactory.createWrapper(WrapperFactory.java:168)
at weblogic.jdbc.wrapper.JDBCWrapperFactory.getWrapper(JDBCWrapperFactory.java:186)
at weblogic.jdbc.rmi.internal.PreparedStatementStub.readResolve(PreparedStatementStub.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1104)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1805)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:197)
at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:564)
at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:193)
at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:240)
at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:223)
at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_oracle_jdbc_driver_T4CConnection_1030_WLStub.prepareStatement(Unknown Source)
at weblogic.jdbc.rmi.SerialConnection.prepareStatement(SerialConnection.java:228)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67)

在weblogic.jdbc.rmi.SerialConnection.prepareStatement之前,我已经完成了所有工作,因为该源代码不是公共的。问题似乎是,这将返回一个null PreparedStatement,然后将其传递给引发NPE的两个方法

数据源被声明为Spring bean URL,为了安全起见,凭据已被删除:

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>jdbc/DS</value>
    </property>
    <property name="resourceRef">
        <value>true</value>
    </property>
    <property name="jndiEnvironment">
        <props>
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            <prop key="java.naming.provider.url">t3://000.00.00.000:15031/</prop>
            <prop key="java.naming.security.principal">principal</prop>
            <prop key="java.naming.security.credentials">credentials</prop>
        </props>
    </property>
</bean>
我还在本地运行的WebLogic实例的JNDI树中设置了相同的精确数据源,该数据源运行良好,没有异常。请务必注意,我的本地WebLogic版本是10.3.2:

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>jdbc/DS</value>
    </property>
    <property name="resourceRef">
        <value>true</value>
    </property>
    <property name="jndiEnvironment">
        <props>
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            <prop key="java.naming.provider.url">t3://localhost:7001/</prop>
            <prop key="java.naming.security.principal">principal</prop>
            <prop key="java.naming.security.credentials">credentials</prop>
        </props>
    </property>
</bean>
最后,通过在Springbean中直接声明数据源而不引用JNDI,我还使它工作得很好:

<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
    <property name="username" value="username" />
    <property name="password" value="password" />
    <property name="url" value="jdbc:oracle:thin:@username.com.com:1530:service_name" />
</bean>

非常感谢您的帮助,如有必要,我非常乐意提供更多细节。谢谢你抽出时间

我通过Junit代码面临同样的问题。你还记得你是否能够解决这个问题吗?6年前?提前谢谢。
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
    <property name="username" value="username" />
    <property name="password" value="password" />
    <property name="url" value="jdbc:oracle:thin:@username.com.com:1530:service_name" />
</bean>