After working with Christoper Lenz (thanks), I decided to step through the
code of the JDBCDescriptorsStore and JDBCContentStore classes and analyze
the difference between the 1.1.0 version (SLIDE_1_0 branch), and the 1.0.16
release. The problem lies in the isConnected() method of both of these
classes in the following code segment:
PreparedStatement statement =
connection.prepareStatement(getDatabaseConnectionTestStatement());
statement.executeQuery();
statement.close();
I ran a test using the Slide client and issuing a "ls" command against the
"files" directory. The "ls" command issues two PROPFIND requests against
the WebDav servet, first with a level 0 and second with a level 1 (I
believe). In my test, the "files" directory had 12 child resources (all
collections). I ran this test three consecutive times and the results are
reported below:
Current 1.1.0 Version
------------------------------
15 Sep 2002 12:03:04 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 341 ms) URI = /files/
15 Sep 2002 12:03:12 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 7150 ms) URI = /files/
15 Sep 2002 12:03:16 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 431 ms) URI = /files/
15 Sep 2002 12:03:22 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 5828 ms) URI = /files/
15 Sep 2002 12:03:30 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 450 ms) URI = /files/
15 Sep 2002 12:03:36 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 5658 ms) URI = /files/
After Commenting Out Above Code
----------------------------------------------------
16 Sep 2002 10:05:16 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:17 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 1212 ms) URI = /files/
16 Sep 2002 10:05:20 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:20 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 70 ms) URI = /files/
16 Sep 2002 10:05:21 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 10 ms) URI = /files/
16 Sep 2002 10:05:21 - org.apache.slide.webdav.WebdavServlet - INFO -
PROPFIND =
207 Multi-Status (time: 70 ms) URI = /files/
Next, I decided to see why there was such an enormous decrease in
performance so I setup output code to count the number of times that these
methods were called during the course of the PROPFIND. I only counted the
second PROPFIND request. As it turns out, each isConnected() method was
executed 794 times!!!! Thats quite a lot for one request. I am not sure
why the database needs to be "pinged" with a select statement each time the
isConnected() method gets called.
Here is my test environment:
Slide 1.1.0 (downloaded on 9/9/2002)
Tomcat 4.0.4
SQL Server 2000
Merant (DataDirect) 3.0 JDBC Drivers
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>