I have a LiveConnect application (Enterprise Server 3.5.1 with JRUN 2.2
running on HP-UX 10.20) which I would prefer not to rewrite in its
entirety.
I need to implement some data manipulation processes that are so easy
to do in java. but which LiveConnect will not support.
I reach a point in my application where I want to do a data base lookup
(Informix 9.14.UC3), so I invoke a redirect to a servlet. That servlet
calls a second servlet (database connection pool -- shamelessly similar
to the one in Mr. Moss' terrific book) and retrieves a connection. The
first
servlet uses the connection to perform the lookup, manipulates the data,
and creates an HTML page. This all works great. I was amazed at how
easy it was --- until . . .
If I invoke two lookups at the same time, Informix gives me an error on
one
of
my connections that says there was a null pointer exception on a blob
type
column, and that the error should never occur. If the error recurs, the
message
says, contact Informix support. It does, and I did, but they don't have
an
answer yet, so I'm posting this letter hoping someone has encountered
something similar.
The process works fine with sequential requests, only simultaneous
requests fail.
I separated my servlet invocation from the LiveConnect application. In
the
original code, I sent the servlet a fairly complex SQL query as a
string,
so I just hard coded a query into the servlet and invoked it from the
URL
line of my browser. Same problem.
Since only one column in the table was a blob, I thought that might be
masking
some other issue. I stopped fetching that column. The error changed to
a
267:
"The FREE statement released the resources that are attached to the
cursor named in this statement. Before you can use the cursor, you must
again prepare the SQL statement that is associated with it. If the
cursor
was declared FOR a statement, re-execute its DECLARE statement. If it
was declared FOR a statement identifier, execute the PREPARE statement
again.
Well, gee, I wasn't even using a PreparedStatement; I was using a simple
Statement.executeQuery(myQuery). So I recoded the servlet to use a
PreparedStatement and, voila, the error went away. (I'm using the
intersolv
class 4 jdbc driver level 1.22) Then I reimplemented my fetch of the
blob
column. Continued success!
Feeling really smart, I reassembled everything to use LiveConnect again.
The error returned.
I think it sounds like a jdbc driver problem. Informix is checking into
that.
When LiveConnect does a redirect, I think LiveConnect should be out
of the picture, so I am baffled at what influence it can have on the
process.
I was under the impression that the redirect was a request for the doGet
method of the servlet which is under JRUN's control. JRUN then
interfaces
between the java process and the httpd process, but only insofar as
the httpd process serves to send the output to the correct client.
True?
False? Maybe? Help!
Mark
--
Mark R. Wurm
312-424-3766
*******************************************************************
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html