While I can readily reproduce it on my application, I have so far been
unsuccessful at writing a test case that reproduces the problem.
Oh, I just tried the latest drivers - no luck - same problem.
Equally unfortunate is the fact that all database processing is heavily
abstracted in the application - so there is no method that grabs a
connection, performs the query, iterates through the ResultSet, and closes
the rs/stmt/conn. I know that I am unlikely to find help unless I can
manage to reproduce the problem on an independent program, but I was hoping
that there might be some general LO or byte stream rule that I am not
following.
The area where is breaks is shown below. The method grabs the column name
from RS metadata and calls either getObject or getBytes. When it hangs, it
occurs on the getBytes(...) line.
Once it hangs, the system is essentially useless. My test program will
freeze when it reaches the particular row that the application is trying to
access. The application hangs on to the commection until I stop Tomcat.
I'll continue trying to reproduce in a separate program.
thanks
chris
if (sqlf.getGetType().equals("byte[]")) {
try {
System.out.println("JDBCE.getbytes (before)");
byte[] bytes = rs.getBytes(columnName);
System.out.println("JDBCE.getbytes (after)");
marshaller.setObjectField(o, sqlf.getMapField(), bytes);
} catch (Exception e) {
String exStr = e.toString();
//## create SBHException here so that it is logged
SBHException sbhex = new SBHException(e);
if (exStr.indexOf("FastPath") == -1) {
System.out.println("JDBCE.lrs NONFastPath error..."+exStr);
throw e;
} else {
System.out.println("JDBCE.lrs FastPath error..."+exStr);
throw new FastPathException(e);
}
}
} else {
result = rs.getObject(columnName);
marshaller.setObjectField(o, sqlf.getMapField(), result);
}