DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22159>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22159 Getting following error => java.sql.SQLException: Logical handle no longer valid Summary: Getting following error => java.sql.SQLException: Logical handle no longer valid Product: Tomcat 4 Version: 4.1.24 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Blocker Priority: Other Component: Catalina AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] When trying to run the following JSP with Tomcat I am getting the logical handle error. This error is not generated when I run the same code as a Java application. Also I am able to run this jsp successfully with iPlanet servers. Please change the oracle server, username,password in the jsp code below to values appropriate to your installations. <[EMAIL PROTECTED] language="java" session="false" %> <%@ page import="java.sql.CallableStatement"%> <%@ page import="java.sql.Connection"%> <%@ page import="java.sql.ResultSet"%> <%@ page import="java.sql.ResultSetMetaData"%> <%@ page import="java.sql.SQLException"%> <%@ page import="java.sql.Statement"%> <%@ page import="java.sql.Types"%> <%@ page import="java.sql.Date"%> <%@ page import="oracle.jdbc.pool.OracleConnectionCache"%> <%@ page import="oracle.jdbc.pool.OracleConnectionCacheImpl"%> <%@ page import="oracle.jdbc.pool.OracleConnectionPoolDataSource"%> <%@ page import="oracle.sql.STRUCT"%> <%@ page import="oracle.sql.StructDescriptor"%> <%@ page import="oracle.sql.ARRAY"%> <%@ page import="oracle.sql.ArrayDescriptor"%> <%@ page import="java.util.StringTokenizer"%> <html> <head><title>Connection test</title> </head> <body> <h1>Connection test</h1> <%! private static OracleConnectionCache connCache = null; private static Connection getConnFromCache (String url, String user, String passwd) throws SQLException { Connection conn; OracleConnectionPoolDataSource ocpds = null; OracleConnectionCacheImpl conn_cache = null; if (connCache == null) { ocpds = new OracleConnectionPoolDataSource (); ocpds.setURL (url); ocpds.setUser (user); ocpds.setPassword (passwd); conn_cache = new OracleConnectionCacheImpl (); conn_cache.setConnectionPoolDataSource (ocpds); conn_cache.setURL (url); conn_cache.setUser (user); conn_cache.setPassword (passwd); conn_cache.setCacheScheme (OracleConnectionCacheImpl.DYNAMIC_SCHEME); conn_cache.setMaxLimit (10); conn_cache.setMinLimit (1); connCache = conn_cache; } conn = connCache.getConnection (user, passwd); return conn; } public static oracle.sql.STRUCT get_mystruct_instance (String sValue, Object[] oaString, Float oFloat, String sDate, Connection oConn) throws SQLException{ StructDescriptor oStDesc = StructDescriptor.createDescriptor ("EMP_REC1", oConn); Object oaStructAttrs [] = new Object [4]; ArrayDescriptor oArrDesc = ArrayDescriptor.createDescriptor ("STRARRAY", oConn); ARRAY oArray = new ARRAY (oArrDesc, oConn, oaString); oaStructAttrs[0] = sValue; oaStructAttrs[1] = oArray; oaStructAttrs[2] = oFloat; oaStructAttrs[3] = Date.valueOf (sDate); STRUCT mystruct_inst = new STRUCT (oStDesc, oConn, oaStructAttrs); return mystruct_inst; } public void main (String [] args) throws SQLException { if (args.length < 3){ System.out.println ("Usage: java MyApplication <DB url> <DB username> <DB password>"); System.exit (1); } Connection myConn = null; Statement myStmt = null; try{ myConn = getConnFromCache (args [0], args [1], args [2]); myStmt = myConn.createStatement (); /* DB Schema Creation */ try{ myStmt.executeUpdate("Drop table emp_list1"); myStmt.executeUpdate ("create or replace type strarray is array(10) of varchar2(30)"); myStmt.executeUpdate ("create or replace type emp_rec1 as object (empname varchar2(30), addr_list strarray,salary float,join_date date)"); }catch(Exception e){;} // ignore if objects already exists myStmt.executeUpdate ("create table emp_list1 (empno integer primary key, emprec emp_rec1 )"); myStmt.executeUpdate ("create or replace procedure insert_emp_rec1(in1 in Integer, in2 in emp_rec1) as begin insert into emp_list1 values(in1, in2); end;"); myStmt.executeUpdate ("create or replace procedure get_emp_rec1 (in1 in Integer, in2 out emp_rec1) as begin select emprec into in2 from emp_list1 where empno = in1; end;"); myStmt.close (); /*Insert data into the emp_list1 table by calling the stored proc insert_emp_rec1*/ Object oaString[] = new Object[2]; oaString[0] = new String("196 Florence"); oaString[1] = new String("Arden Hills"); STRUCT mystruct_inst = get_mystruct_instance ("Subhash", oaString, new Float(150000.50),"1999-07-19", myConn); CallableStatement myCstmt = myConn.prepareCall ("{call insert_emp_rec1(?, ?)}"); myCstmt.setObject (1, new Integer(1), Types.INTEGER); myCstmt.setObject (2, mystruct_inst, Types.STRUCT); myCstmt.execute (); myCstmt.close (); myConn.close (); /*Obtain a fresh connection and fetch the data inserted in the previous execute statement.*/ myConn = getConnFromCache (args [0], args [1], args [2]); CallableStatement stmt; stmt = myConn.prepareCall ("{call get_emp_rec1(?, ?)}"); Object oObject = new Integer(1); stmt.setObject(1, oObject, Types.INTEGER); stmt.registerOutParameter (2, Types.STRUCT, "EMP_REC1"); stmt.execute (); Object value = stmt.getObject(2); if ( value instanceof java.sql.Struct ) { Object[] values = (Object[])((java.sql.Struct) value).getAttributes (); for (int j = 0; j < values.length; ++j) System.out.println ("values [" + j + "] = " + values [j]); } stmt.close(); myConn.close (); } catch (SQLException sqle){ sqle.printStackTrace(); System.out.println ("Exception message: " + sqle.getMessage ()); try{ myStmt.close ();myConn.close (); }catch(Exception e){;} throw sqle; } } %> <% String[] arg = {"jdbc:oracle:thin:@atharna:1521:wind62","rajoshi","rajoshi"}; try{ main(arg); }catch(SQLException e){ out.print(e); } %> </body> </html> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]