- From: Sanath Jayasena <sanath@math.edu>
- Date: Tue, 15 Feb 2000 14:40:48 -0600 (CST)
- To: www-jigsaw@w3.org
- cc: ylafon@w3.org
HI All, I am referring the following discussion; I also have a similar problem, which is described (in detail:-)) subsequently. <begin previous discussion> On Wed, 19 Jan 2000, Veena T wrote: > I am using jigsaw server for my web tool that uses the applet and > servlets. The servlets form the back end and they are going to connect > to the database. > For managing the transactions I am planning to use the connection > pooling concept. Will jigsaw readily support database connection > pooling? I am asking this doubt since I came to know that it is not just > enough if the server supports servlets. Only if the server is supports > the connection pooling concept then only it mey be implemented. > Please reply as soon as possible A while ago, I started to do one, it is not finished yet, and not yet in the cvs base, I can give it to you in an unfinished state, it should already work, only some limit checks are missing. Regards, /\ - Yves Lafon - World Wide Web Consortium - If this can help : as I understand, you're using servlets to connect to a database; so it might not be a Jigsaw problem but a servlet problem, for having a pool of connection to a database. ....snipped..... Regards J Brax <end of previous discussion> Here is my story. I appreciate some help/pointers or alpha/beta code done by others. NOTE: I am NOT using servlets now ! So, please advise me if servlets is the best way to go. I wanted to EXTEND jigsaw so that I could query a database with a web-browser interface. THe database is implemented in native binaries (coded in C/C++ and compiled). Re-writing these in Java is not an option for me. I subclassed from 'PostableFrame' a new java class called "DBFrame". Then I re-wrote the handle() and perform() to take care of the POST requests coming from a browser. (POST is currently sufficient for my needs). The database API provides a 'connection' abstraction API that can be used to send query requests to the DB and then to getback results. Query requests have to be sent ONE AT A TIME; until the result is returned for a request, another should NOT be sent. If one tries to interfere in the connection when the query is in progress, the connection and/or query fails. I used JNI (Java Native Interface) to integrate the database connection API into the DBFrame class I created in Jigsaw, and created a DLL (in WINdows) and a ".so" (in Linux) that provide necessary functionality as native methods. Then I mapped a URL to the new class using JigAdmin. Now the problem: when MULTIPLE browsers send POST requests SIMULATANEOUSLY I need a way to ensure a single request (thread) accesses the database (=> the connection API) at a time. I tried a simple 'busy' flag in native C code (in the DLL) as well as in the 'DBFrame' class. None worked correctly. (I am not expecting hundreds or more concurrent requests; Max is ~ 100) I tried using 'synchronized' (instance) methods in DBFrame class; didn't work either. I suspect independent threads are already created by Jigsaw, so my techniques are not really blocking these threads. ??? Is this really a Jigsaw issue or (Java/JNI + Multi-threading) issue? As the above discussion suggests, should I have to do explicit pooling and queueing of requests using some custom Queue class? (In the latter case, incoming requests will first go to this queue/pool?) I would like to see if Yves code would work for me. Could you send me the code/a pointer to the code please? Thanks. Sanath
Received on Tuesday, 15 February 2000 14:42:04 UTC