02-08-06 10:56 PM
Klaus wrote:
> I use the SQL driver with a sql server 2005 database from a Java struts
> web application. I use
> org.apache.commons.dbcp.DelegatingPreparedStatement as a delegate for
> connection.
>
> However the whole webapp works fine, as long one user is using it in a
> slow manner. But if a new sql query (stored procedure) is executed
> during the first one is still processing, the second query throws
> following exception. First query returns successfully.
>
> Part of my code:
> CallableStatement callableStatement = null;
> callableStatement = util.prepareCall(sql, parameter);
> ResultSet rs = callableStatement.executeQuery();
>
> Exception:
> java.lang.NullPointerException
> at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
> at com.microsoft.sqlserver.jdbc.IOBuffer.sendCommand(Unknown Source)
> at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown
> Source)
Hi. I suspect it's your application code (including the
dbcp stuff) that may not be threadsafe. Your JDBC objects
can't be shared by multiple threads. I suspect a connection
is being closed, or a statement is being re-executed by one
thread while another is still using it.
Joe Weinstein at BEA Systems
> at
> com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteQuery(Unknown
> Source)
> at
> com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(Unkno
wn
> Source)
> at
> org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(Delegatin
gPreparedStatement.java:92)
> at
> net.solvion.util.service.dataaccess.sql.AbstractSqlDataAccessService.execu
teQuery(AbstractSqlDataAccessService.java:117)
> at
> net.solvion.util.service.dataaccess.sql.ListSqlDataAccessService.getList(L
istSqlDataAccessService.java:59)
> at
> net.solvion.util.service.GenericListService.getList(GenericListService.jav
a:47)
> at
> net.solvion.util.web.action.ListTrackTraceAction.execute(ListTrackTraceAct
ion.java:85)
> at
> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProc
essor.java:484)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:27
4)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:252)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:173)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
java:214)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
java:178)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBa
se.java:482)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
26)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
05)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
va:107)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148
)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processCon
nection(Http11Protocol.java:738)
> at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.j
ava:526)
> at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollower
WorkerThread.java:80)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.j
ava:684)
> at java.lang.Thread.run(Thread.java:595)
>
[ Post a follow-up to this message ]
|