Great, thanks for the very insightful replies, this info
should definitely go into the wicki (David are you gonna let us know when
it's there ;-) ).
So load balancing i feasible, but it looks like I'll run into a few issues
before it's working. I'll try and find
the time to tackle these issues. Let's see how it goes.

Again, Great responses - thanks :-)

Cheers
Tonny



On Fri, Apr 17, 2009 at 7:18 PM, Dov Rosenberg <drosenb...@inquira.com>wrote:

>  The configuration of the JK adaptor is pretty well documented. Attached
> is an image that shows the general layout. The key is to set the jvmRoute in
> the server.xml. Each Tomcat instance has a different jvmRoute. Those routes
> are added to the workers.properties file.
>
> Server.xml
>    <!-- You should set jvmRoute to support load-balancing via AJP ie : -->
>    <Engine name="Standalone" defaultHost="localhost" *jvmRoute*="*worker1*
> ">
>
> I have a document that has more details I can post.
>
> When you deploy multiple WO apps that share frameworks it is better to
> deploy each WAR with the full compliment of stuff with each WAR. For example
> our 3 apps share 3 frameworks: MyFoundation.framework, MyModel.framework,
> MyComponents.framework. Each WAR file contains its own copy like the
> following:
>
> MyApp1.war
>     WEB-INF
>         Library
>             Frameworks
>                 MyFoundation.framework
>                 MyModel.framework
>                 MyComponents.framework
>
> MyApp2.war
>     WEB-INF
>         Library
>             Frameworks
>                 MyFoundation.framework
>                 MyModel.framework
>                 MyComponents.framework
>
> The Tomcat manager application can still be used, but the java service
> wrapper will auto restart if the app falls over, captures the System.out,
> System.err, etc. Tomcat Manager still shows the stats of the Tomcat
> container, java service wrapper is used to launch and keep the apps running.
>
> To turn off session persistance in Tomcat you need to uncomment an entry in
> the $TOMCAT/conf/content.xml. That stops Tomcat from trying to persist the
> sessions.
>
>
> Dov
>
> On 4/17/09 8:51 AM, "David Avendasora" <webobje...@avendasora.com> wrote:
>
> Dov,
>
> This is really excellent! Do you mind if I put this up on the Wiki as a
> general WebObjects with Servlets informational page?
>
> With that said, I do have some questions for you about this. See below
>
> On Apr 17, 2009, at 8:20 AM, Dov Rosenberg wrote:
>
>  We have been deploying our apps out as servlets for a few years now with
> many of our larger customers having large numbers of instances. Here is some
> things we have learned over that time:
>
>
>
>    - Deploying as servlets means that you can only have 1 instance per
>    servlet container. In order to scale you need to deploy multiple servlet
>    containers. In our case for large servers with plenty of RAM and CPU we may
>    run 2 or 3 Tomcat servers on the same box all on different ports. We use 
> the
>    JK adaptor or other external load balancers to balance across all running
>    Tomcat instances.
>
> Can you provide some more detail about how to set this up? Is it similar to
> what Andrew Lindesay has documented on the Wiki already?
>
>
>    - As long as each WO app being deployed on a single Tomcat server has a
>    different context name, you can deploy multiple WO apps on a single Tomcat
>    server. For example, we deploy a management console, a web service app, and
>    a WO based JSP tag library app in the same servlet container.
>
> This is exactly the setup I have. I have 3 distinct WO apps running in one
> Tomcat 6.0 instance. I run into problems with the classloader trying to load
> frameworks that only exist in one project into another. I have to include
> all the frameworks used by all three apps in all three otherwise if the one
> that loads last doesn't have the frameworks required by one of the previous
> apps, it will fail. I'm not sure if it is a problem involving Wonder, or if
> it does it for plain WO apps too.
>
>
>    - Be aware that all WO apps running in the same servlet container share
>    the same RAM. On 32bit Windows platforms that typically is around 1.4G.
>    - Even though Tomcat is multi-threaded, the WO EOF stack is much less
>    so. It is necessary to scale by adding instances of Tomcat and your app.
>    Project Wonder has been a big help in minimizing our locking issues in 
> these
>    multi threaded environments
>    - We don’t/can’t use JavaMonitor. We use the Java Service Wrapper (
>    http://wrapper.tanukisoftware.org/doc/english/download.jsp) to launch
>    and monitor our apps. We built a custom page to display the WOStats in our
>    app.
>
> So you use this instead of using the Tomcat Manager application? Not that
> I've ever gotten it to start and stop individual WO apps anyway. I always
> have had to restart the whole container. It's a pain in the butt, but not so
> much of one that I've ever tried to figure out why.
>
>
>    - We don’t use the WO JSP tags to display WOComponents in JSP pages.
>    Seems interesting, but never tried it.
>    - We turned off session persistance in Tomcat. The persisted sessions
>    are basically unusable and only cause problems when our apps get restarted.
>
> How do you turn that off. I've never looked for it but it is annoying to
> get a bunch of errors at boot.
>
>
>    - We rely on Tomcat clustering if we need it.
>    - You will get errors like: *javax.naming.NameNotFoundException: Name
>    jdbc is not bound in this Context* when starting up if you do not use a
>    content.xml and turn off JNDI naming. The app still starts up properly and
>    runs fine, but it will throw those errors once per connection. I haven’t
>    bothered to figure out how to use JNDI with our WO apps. Mainly because we
>    only used a single ObjectStoreCoordinator per instance.
>
> I get these too, but I never used to. The only thing I can think of that
> changed is that I used to define the connections in the context.xml file. I
> quit using that file. I don't know if that is what is now causing the error
> messages, but the timing seems to be coincidental.
>
>
>    - The session time out is set in the WEB-INF/web.xml. The
>    WOServletAdaptor seems to attach itself to the Tomcat Session such that 
> they
>    share the same lifecycle.
>
> Do you let WOLips auto-generate the web.xml file for you? If so, how do you
> manually control this value? Again, I've never tried, but it's been on my
> low-priority todo list forever.
>
>
>    - The WebObjects classloader is configured in the WEB-INF/web.xml under
>    the WOCLASSPATH context parameter. It is a separate class loader than the
>    ones provided by the Tomcat server. We only put the WO related jars (from
>    the WO runtime and our frameworks and apps) in there. All of the other
>    dependent jars go in the WEB-INF/lib. We don’t bundle any extra jars inside
>    our frameworks to avoid duplicates. Tomcat provides jars like log4j, etc 
> but
>    we bundle our own so we don’t have any external dependencies. The newer WO
>    runtime files are delivered as Jars instead of Frameworks – we deploy those
>    in the WEB-INF/lib but register them in the WEB-INF/web.xml. Our Project
>    Wonder jars still need to be deployed as Frameworks.
>    - There is no built in load balancing in the WOServletAdaptor like
>    there is in the regular WOAdaptors. The machine name stuff is meaningless.
>    The sessions are sticky based on the JSESSIONID that the Tomcat container
>    provides
>    - We deploy our database drivers in the WEB-INF/lib folder of our WARs.
>    That way we control what drivers are being used.
>    - The WO apps need to run as expanded WARs in order to resolve the
>    variables in the WEB-INF/web.xml (i.e. WEBINFROOT). Not sure why, but I
>    suspect it is because the bootstrapping process needs to see the 
> environment
>    directly. WARs are typically expanded in Tomcat by default. Other 
> containers
>    such as WebLogic do not expand them by default causing issues. The J2EE 
> spec
>    says either way is acceptable but they lean toward not expanding them –
>    which causes us issues.
>    - Resource resolution is slightly different between a regular WO app
>    and a WO app deployed as a servlet. The WOContext is different
>    (WOServletContext) as well as WORequest, WOResponse.
>    - The WebObjects servlet is still in the URL i.e.
>    http://myapp.com/MyStore/WebObjects/store.woa. You can use URL
>    rewriting to remove it if you want or I think there is some functionality 
> in
>    Project Wonder to rename it.
>    - We found it easier to pass the session id in the URL in most cases.
>
> Again, this is a great list! Thanks!
>
> Dave
>
>
>    -
>
>
>  Hope that helps people. Overall I like deploying WO inside the servlet
> containers. Customers are very comfortable with servlet containers and have
> a lot less concern than deploying on a proprietary app server engine. There
> are some limitations but they are not that bad. It is a whole lot easier
> deploying a single WAR than it is sending someone a bunch of files and
> hoping they put them in the right place.
>
>  Dov Rosenberg
>
>
>  On 4/17/09 6:19 AM, "David Avendasora" <webobje...@avendasora.com> wrote:
>
>  >
>  > On Apr 17, 2009, at 3:26 AM, Tonny Staunsbrink wrote:
>  >
>  >> Hello
>  >>
>  >> A recent posting said that "war file deployment just works" (it's
>  >> not an exact quote, but that how i remember it).
>  >
>  > Yeah, I think that was me. I should have said:
>  >
>  > Simple, single instance servlet deployments just work. If you create a
>  > basic app and select the servlet options, you'll get a WAR file you
>  > can deploy to a servlet container without any additional work. It used
>  > to be quite a bit of messing around just to get a working servlet build.
>  >
>  > When you start talking more advanced things like multiple instances
>  > and such, I think it is still very much a case of lots of things need
>  > to be done. My servlet deployments are very simple so I have never
>  > gone that extra mile.
>  >
>  > Dave
>  >
>  >
>  >>
>  >> I've considered deploying WOA's in servlet containers, but there a
>  >> few issues i just can't see how they will work
>  >> if I run deploy an app to a servlet container cluster.
>  >>
>  >> 1) The default session store is memory resident, does WOSession hook
>  >> into whatever session distribution i setup
>  >> for the containers?
>  >>
>  >> 2) The instance number. As far as i can see this property becomes
>  >> meaningless when running in servlet containers.
>  >> If the session can be distributed, this may not be an issue, but i
>  >> not....
>  >>
>  >> Can help me answering these by sharing their experience with this or
>  >> link me in the right direction (before i go experiment with it)?
>  >>
>  >> Cheers
>  >> Tonny
>  >> _______________________________________________
>  >> Do not post admin requests to the list. They will be ignored.
>  >> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>  >> Help/Unsubscribe/Update your Subscription:
>  >>
> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora
>  >> .com
>  >>
>  >> This email sent to webobje...@avendasora.com
>  >
>  >  _______________________________________________
>  > Do not post admin requests to the list. They will be ignored.
>  > Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>  > Help/Unsubscribe/Update your Subscription:
>  >
> http://lists.apple.com/mailman/options/webobjects-dev/drosenberg%40inquira.com
>  >
>  > This email sent to drosenb...@inquira.com
>
>
>
>
>
>
>  _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/mezz.dk%40gmail.com
>
> This email sent to mezz...@gmail.com
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to