Mantis - Quercus
Viewing Issue Advanced Details
1699 minor always 04-20-07 13:46 05-01-07 04:29
stbu  
nam  
normal  
closed 3.1.0  
fixed  
none    
none 3.1.1  
0001699: NPE in com.caucho.quercus.lib.db.OracleModule.oci_error(OracleModule.java:706)
I've downloaded 'OracleEditor.php' from sourceforge.net, a single php file that should connect to an Oracle Database.

The file OracleEditor.php could be successfully displayed on the screen offering to enter username, password and (tnsnames.ora) service name.

After the 'Connect to Oracle' Button, a NullPointerException is thrown:

java.lang.NullPointerException
    at com.caucho.quercus.lib.db.OracleModule.oci_error(OracleModule.java:706)
    at com.caucho.quercus.lib.db.OracleModule.ocierror(OracleModule.java:1866)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.caucho.quercus.module.StaticFunction.invoke(StaticFunction.java:105)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:614)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:487)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:473)
    at com.caucho.quercus.env.JavaInvoker.callCopy(JavaInvoker.java:482)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:178)
    at com.caucho.quercus.expr.FunctionExpr.evalCopy(FunctionExpr.java:149)
    at com.caucho.quercus.expr.AssignExpr.eval(AssignExpr.java:77)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.Function.callImpl(Function.java:316)
    at com.caucho.quercus.program.Function.call(Function.java:264)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:180)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:125)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:75)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:239)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:61)
    at com.caucho.quercus.page.QuercusPage.executeTop(QuercusPage.java:115)
    at com.caucho.quercus.servlet.ResinQuercusServlet.service(ResinQuercusServlet.java:125)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:298)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:175)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:240)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:477)
    at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:600)
    at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:522)
    at java.lang.Thread.run(Thread.java:595)

I also the Oracle JDBC Driver JAR to WEB-INF/lib folder, but no success.

Environment:
 Windows XP 5.1 x86
 Java 1.5.0_02-b09, 32, mixed mode, Cp1252, de, Sun Microsystems Inc.
 resin.home = C:\Downloads\resin-3.1.s070402


See also "Additional Information" !
Attached is the single php file from: http://sourceforge.net/projects/oracleeditor/ [^]


Output with log level "finest" for logger "com.caucho.quercus":

 FINER com.caucho.quercus.env.Env com.caucho.quercus.QuercusException: A link to the server could not be established. java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection
    at com.caucho.quercus.env.Env.warning(Env.java:3526)
    at com.caucho.quercus.lib.db.Oracle.connectInternal(Oracle.java:111)
    at com.caucho.quercus.lib.db.Oracle.<init>(Oracle.java:63)
    at com.caucho.quercus.lib.db.OracleModule.connectInternal(OracleModule.java:2209)
    at com.caucho.quercus.lib.db.OracleModule.oci_connect(OracleModule.java:653)
    at com.caucho.quercus.lib.db.OracleModule.ocilogon(OracleModule.java:1983)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.caucho.quercus.module.StaticFunction.invoke(StaticFunction.java:105)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:614)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:487)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:473)
    at com.caucho.quercus.env.JavaInvoker.callCopy(JavaInvoker.java:482)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:178)
    at com.caucho.quercus.expr.FunctionExpr.evalCopy(FunctionExpr.java:149)
    at com.caucho.quercus.expr.AssignExpr.eval(AssignExpr.java:77)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.Function.callImpl(Function.java:316)
    at com.caucho.quercus.program.Function.call(Function.java:264)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:180)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:125)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:75)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:239)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:61)
    at com.caucho.quercus.page.QuercusPage.executeTop(QuercusPage.java:115)
    at com.caucho.quercus.servlet.ResinQuercusServlet.service(ResinQuercusServlet.java:125)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:298)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:175)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:240)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:477)
    at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:600)
    at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:522)
    at java.lang.Thread.run(Thread.java:595)

 FINE com.caucho.quercus.lib.db.Oracle java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at com.caucho.sql.DriverConfig.createDriverConnection(DriverConfig.java:591)
    at com.caucho.sql.ManagedConnectionImpl.initDriverConnection(ManagedConnectionImpl.java:247)
    at com.caucho.sql.ManagedConnectionImpl.<init>(ManagedConnectionImpl.java:136)
    at com.caucho.sql.ManagedFactoryImpl.createManagedConnection(ManagedFactoryImpl.java:126)
    at com.caucho.jca.ConnectionPool.create(ConnectionPool.java:801)
    at com.caucho.jca.ConnectionPool.allocatePool(ConnectionPool.java:670)
    at com.caucho.jca.ConnectionPool.allocate(ConnectionPool.java:629)
    at com.caucho.jca.ConnectionPool.allocateConnection(ConnectionPool.java:496)
    at com.caucho.sql.DataSourceImpl.getConnection(DataSourceImpl.java:91)
    at com.caucho.sql.DBPool.getConnection(DBPool.java:649)
    at com.caucho.quercus.env.Env.getConnection(Env.java:575)
    at com.caucho.quercus.lib.db.Oracle.connectInternal(Oracle.java:104)
    at com.caucho.quercus.lib.db.Oracle.<init>(Oracle.java:63)
    at com.caucho.quercus.lib.db.OracleModule.connectInternal(OracleModule.java:2209)
    at com.caucho.quercus.lib.db.OracleModule.oci_connect(OracleModule.java:653)
    at com.caucho.quercus.lib.db.OracleModule.ocilogon(OracleModule.java:1983)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.caucho.quercus.module.StaticFunction.invoke(StaticFunction.java:105)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:614)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:487)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:473)
    at com.caucho.quercus.env.JavaInvoker.callCopy(JavaInvoker.java:482)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:178)
    at com.caucho.quercus.expr.FunctionExpr.evalCopy(FunctionExpr.java:149)
    at com.caucho.quercus.expr.AssignExpr.eval(AssignExpr.java:77)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.Function.callImpl(Function.java:316)
    at com.caucho.quercus.program.Function.call(Function.java:264)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:180)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:125)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:75)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:239)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:61)
    at com.caucho.quercus.page.QuercusPage.executeTop(QuercusPage.java:115)
    at com.caucho.quercus.servlet.ResinQuercusServlet.service(ResinQuercusServlet.java:125)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:298)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:175)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:240)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:477)
    at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:600)
    at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:522)
    at java.lang.Thread.run(Thread.java:595)

 WARNING com.caucho.server.webapp.ErrorPageManager java.lang.NullPointerException
    at com.caucho.quercus.lib.db.OracleModule.oci_error(OracleModule.java:706)
    at com.caucho.quercus.lib.db.OracleModule.ocierror(OracleModule.java:1866)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.caucho.quercus.module.StaticFunction.invoke(StaticFunction.java:105)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:614)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:487)
    at com.caucho.quercus.env.JavaInvoker.call(JavaInvoker.java:473)
    at com.caucho.quercus.env.JavaInvoker.callCopy(JavaInvoker.java:482)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:178)
    at com.caucho.quercus.expr.FunctionExpr.evalCopy(FunctionExpr.java:149)
    at com.caucho.quercus.expr.AssignExpr.eval(AssignExpr.java:77)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.Function.callImpl(Function.java:316)
    at com.caucho.quercus.program.Function.call(Function.java:264)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:180)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:125)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:64)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:75)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:99)
    at com.caucho.quercus.program.QuercusProgram.execute(QuercusProgram.java:239)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:61)
    at com.caucho.quercus.page.QuercusPage.executeTop(QuercusPage.java:115)
    at com.caucho.quercus.servlet.ResinQuercusServlet.service(ResinQuercusServlet.java:125)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:298)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:175)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:240)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:263)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:477)
    at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:600)
    at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:522)
    at java.lang.Thread.run(Thread.java:595)


At least on this very verbose logging level, I can see the real Error:

FINE com.caucho.quercus.lib.db.Oracle java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection

However, in my hunmble opinion the method oci_error() in OracleModule.java should check if 'conn' is != null.
 C:\\Downloads\\resin-3.1.s070402\\webapps\\oracleeditor\\OracleEditor.php [^] (54,310 bytes) 04-20-07 13:46

Notes
(0001885)
nam   
05-01-07 04:29   
php/4414