On Thu, Dec 15, 2011 at 12:27 PM, Pid <p...@pidster.com> wrote: > On 15/12/2011 00:15, hernan wrote: > > On Wed, Dec 14, 2011 at 8:17 PM, Christopher Schultz < > > ch...@christopherschultz.net> wrote: > > > >> -----BEGIN PGP SIGNED MESSAGE----- > >> Hash: SHA1 > >> > >> Hernán, > >> > >> On 12/14/11 5:45 PM, hernan wrote: > >>> I'm using Tomcat 7.0 for developing a new application. A key > >>> component in the application have to run an external not > >>> multithreaded application. > >>> > >>> Since I'm not an experienced user in Tomcat, I wonder which > >>> implementation alternatives do you recommend for running my > >>> external application. I'm trying to avoid launch a new os process > >>> from java since I need the result of that process, so in this way > >>> I've to deal communicating two processes (may be using serializable > >>> objects using sockets). > >> > >> So, is this other program a Java program? Since you said > >> "serializable" you probably are talking about running another Java > >> "program". > >> > >> What makes this "external" "program" non-multithreaded? Is it actually > >> not threadsafe? > >> > >> If you can't run it in the same process as Tomcat, then you'll have to > >> either use Runtime.exec or some type of wrapper around it -- or have > >> that process running completely separately (as a daemon) and connect > >> to it via sockets. Anything else requires native code, which you > >> definitely don't want. > > > > > > My external application is a java application that uses java wrapper > (using > > JNI) for GLPK (written in ANSI C) (http://www.gnu.org/s/glpk/), and > GLPK is > > not threadsafe. Yes, I will consider those alternatives, executing a new > > process when I receive the request (Runtime.exec) and a separated deamon > > receiving requests launching those processes. > > Can you not import the application Jars and just interact with them > directly then? Why do you have to interact with it via system process? >
If I do that, due to glpk is not threadsafe, a call to a method can crash tomcat. I can use glpk via a synchronized method, but I don't want to serialize the server requests, since I want run a fair service: "heavy" input have to wait more than a "light" one. > >>> I want to know which kind of approachs are used to deal with these > >>> type of situations. > >> > >> What about running in-process? Even if the class(es) is(are) not > >> threadsafe, you might be able to use separate instances from your > >> request processor threads. > > +1, see above. > > > > Can I configure tomcat for running a new (or different) process for each > > request? > > "configure"? Not really, you can write a Servlet to do that, if you > wanted to. (I wouldn't think that's a good idea, myself). > > > > or I have to run Apache HTTP Server and connect it to Tomcat? > > Why? How does that help? May be if there is some way to serve each http server request with a different tomcat service process (having a pool of tomcat processes). I know that is not the tomcat philosophy, but I just wonder if it is feasible via apache httpd and tomcat configurations. > > > If I have to run Apache HTTP Server which mechanism do I have to connect > it with > > tomcat? using Jk connector is the standard way? > > mod_jk, or mod_proxy_http or mod_proxy_ajp. > > > > Do you recommend me to read > > http://tomcat.apache.org/connectors-doc/reference/apache.html ? I've > found > > also http://tomcat.apache.org/connectors-doc/reference/apache.html but > it > > seems to be outdated. > > How is that related to your problem? > > > p > > > Thanks for your response! > > > > Regards, > > Hernán > > >