OK I understand....
I think you looking for an application server or maybe a shared resource....

Have a look at yet another approach.... JNDI Resources... Resource Factories
http://tomcat.apache.org/tomcat-4.1-doc/jndi-resources-howto.html
You may be able to bring the unique apps in thru a custom resource factory....

But I really think what you looking at is an application server... and there are 2 issues, a huge Super-Can learning curve and... they become inseparable, that is the application once ported to the Super-Can, depends on the super can, and is no longer POJO... It has to live in Spring or Jboss...maybe thats ok.

I really dont like the idea of seperate web apps with a shared user session... I think you will break or make any future clustering hellish complicated. Rather, join the applications via an application server... in a servlet... and use the servlet to display the required JSP pages.

Then if this servlet gets busy.... do clustering of that Web-App say behind apache, and at least the session management will be something a load balancer understands and can deal with... I'm worried that if you mess around with sessions yourself toooo much, next thing you will be asking is how to write a cluster controller that understands how your users move between different web-apps.... mission impossible.

Ok... so if you go for joining applications in a web servlet you need an application server.

Now maybe I can help you... but you need to test my applications carefully before commiting to anything. I dont like the way applications servers force your code to live inside the application server.... or another way of putting it, is I dont like the fact that its impossible to test your code as POJO outside of the application server... so I made a POJO container... maybe it will help you.

Briefly... you write a normal POJO application.... you drop it into my application server (HARBOR) and then you can run the classes in the server or remotely.

If I want to run a class on another machine... code looks like this
Class msgTest = vessel.getRemoteClass("harbor.classContainer.MsgTest");//load a class from the harbor I_MsgTest i_MsgTest = (I_MsgTest)vessel.newInst(msgTest);//can have many instances of a single class (its just like new)

If I want to run the class IN the server...... code looks like this

I_serialContainer i_serialContainer = (I_serialContainer)vessel.loadRemoteClassInst (I_serialContainer.class,"harbor.classContainer.serialContainer",true);//load a class instance ON the harbor

I tried to keep it simple....
And yes you can share classes.... and the applications can be on different machines to the servlet.

HARBOR itself is just a Servlet... so Tomcat is all you need

Ok just wanted to give you an idea.... you can get Harbor at http://coolese.100free.com

Another possibility is Resin... its a servlet with an EJB container... so it may do what you need. I based Harbor on one of their protocols... hessian.

So... what I would do is .... join applications in a servlet... which calls jsp to display output... no logic in the jsp other than display. I would take the seperate applications... dump them into Harbor and call them as needed in the servlet.
If it gets big.... use normal clustering.

You could do the same thing... but port your applications to JBoss... so you dont depend on my technology... I program for fun, and I might take up golf...ha ha.

In my solution.... its one WAR file and the Jar file of each app.
In Jboss it would probably be an EAR file for each app and a WAR file...

Then you have what you want.... a container for your web app, and a container for your unique applications.

Or you could do it one of the other million ways discussed.... no one can ever blame java for not having enough frameworks ;)

It all gets very confusing, but at the base of all these technologies... its just a classloader, for example JNDI Resources at its core is just exposing a common classloader. HARBOR my app is also just class loaders, with the ability to call methods remotely, JBOSS just another amalgamation of classloaders, and so is tomcat... simplistic view, but thats what I think you and many others are really asking... find me a cool way to load up classes and run them... and every idea is another framework ;)

Good luck

----- Original Message ----- From: "Dominique Jocal" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <users@tomcat.apache.org>
Sent: Monday, April 09, 2007 6:17 PM
Subject: Re: sharing same session across multiple webapp


Thank you to you both, I understand now at what think at when you indicate using a "shared context"; it can help to exchange data between 2 webapps, and so, after some implementation, to have this session sharing. It's however requiring some implementation, to "map" the 2 sessions and to manage all other stuff (session timeout, etc). As you Johnny, can be very messy.

To answert to you again, Johnny, my business need is to separate the functionalities of a real UNIQUE application for a functional point of view in 2 or + development artefacts, in order to facilitate modularity. Let me precise: development modularity; we're ok for having 1 unique application at run time; because basically, this is it; all modules "work together". Jars are ok for the java code, we're missing another type of artefact for the presentation code (jsp). A possible target is to have multiple webapps, and to share a user's session across all of them. But another possible solution is to "merge" all the development artefacts in 1 final JEE webapp at build-time; because basically, separation is not required at run time but at development time only.

So to say it simpler, the need is to be able to "package" JSP in different 'artefacts' (wars ? jars ?) and however to allow them to work with the same user information in the HTTP session. Do you other solutions than 1) 2 webapps sharing session 2) merging webapps?

I'll give a look to Spring facilities if it covers this kind of thing.

see you - Dominique.

Johnny Kewl a écrit :
Always a big question... search the web and you find many different approaches

Here is an article how to do it using servlet contexts...
http://www.fwd.at/tomcat/sharing-session-data-howto.html

But maybe clustering is what you looking for
Have a look at tomcat clustering and session replication.

Other popular approach is Apache JK_mod clustering and sticky sessions.... my favorite

And then maybe what you really looking for is an application server...
Spring framework or something like Jboss.... something that lets you share a bean.
Granted... they huge fat frameworks if thats all you want to do..

I think you need to qualify the question a little...
Are you just trying to share a session in a cluster... ie identicle webapps -> Clustering

Or are you trying to share a bean across different webapps -> App server

Or are you trying to share a shared status across different webapps -> App server singleton

Servlet contexts... can kinda do all of the above... but its kludgy... think it can get very messy.

Good luck


----- Original Message ----- From: "Dominique
To: <users@tomcat.apache.org>
Sent: Sunday, April 08, 2007 11:09 PM
Subject: sharing same session across multiple webapp


Hi,

we'd like to make modular web development, not with merging in 1 deployable webapp separate web sources, but with making run 2 webapps sharing the same user's session.

We all know JEE standard does not specify such thing for the moment, but servers start to enable it a proprietary way (see weblogic 9 for instance)

Is there a way in Tomcat to share the same user's session across multiple webapps, for this purpose of modular development ?

Thank to any suggestion,

Dominique.


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to