← Back to team overview

dhis2-devs team mailing list archive

Re: running 11 dhis2 webapps on one tomcat

 

Just another thought.

DHIS2 is now also configured to pick up a system property (dhis2.home)
in the absence of a DHIS2_HOME environment variable.  Lars added this
feature so that I can deploy dhis2-lite without getting users to
fiddle with environment variables.

If you are deploying multiple instances of dhis2 it would be much
tidier to handcraft a context for each one in context.xml, in which
you set a dhis2.home context parameter appropriately.  As well as
other useful goodies like the webapp path.  Then you don't have to go
poking around at the hibernate.properties inside the jar files which
is pretty ugly.  Mind you I don't think DHIS2 is currently configured
to look for context parameters but it is probably a simple
modification.

Another side effect of this approach might be that you actually only
need to deploy one war, and the individual contexts would each specify
that war together with a unique path.  Something like (dreaming out
loud):

<Context path="/state1" docBase="dhis2.war">
  <Parameter name="dhis2.home" value="/etc/dhis2/state1" />
</Context>
<Context path="/state2" docBase="dhis2.war">
  <Parameter name="dhis2.home" value="/etc/dhis2/state2" />
</Context>
<Context path="/state3" docBase="dhis2.war">
  <Parameter name="dhis2.home" value="/etc/dhis2/state3" />
</Context>

Or maybe even (taking a slightly different approach):

<Context path="/state1" docBase="dhis2.war">
  <Environment name="dhis2.home" value="/etc/dhis2/state1"
type="java.lang.String" />
</Context>
<Context path="/state2" docBase="dhis2.war">
  <Environment name="dhis2.home" value="/etc/dhis2/state2"
type="java.lang.String" />
</Context>
<Context path="/state3" docBase="dhis2.war">
  <Environment name="dhis2.home" value="/etc/dhis2/state3"
type="java.lang.String" />
</Context>

In this latter case the application should be able to pick up the values with:
try
{
  InitialContext context = new InitialContext();
  Object valueO = context.lookup("java:comp/env/dhis2.home");
}
catch(javax.naming.NamingException ne)
{ /* handle gracefully */ }

Just a thought.

Meanwhile proceed with what you are doing.  I think it should work.

Cheers
Bob


2009/4/7 Bob Jolliffe <bobjolliffe@xxxxxxxxx>:
> Knut is correct.  This should work.  I'm really interested to hear.
>
> BTW on tomcat I believe you should be putting the other jars in
> shared/lib.  Good luck.
>
> Cheers
> Bob
>
> 2009/4/7 Knut Staring <knutst@xxxxxxxxx>:
>> On Tue, Apr 7, 2009 at 9:59 AM, John lewis <johnlewis.hisp@xxxxxxxxx> wrote:
>>>
>>> Bob, to run different application in the same tomcat we need to change the
>>> hibernate property file which is located in
>>> WEB-INF/lib/dhis-support-hibernate-2.0.1-SNAPSHOT.jar. IF we are moving out
>>> web-INF/lib folder then we are moving even the hibernate file also. Dont
>>> know we can solve this.
>>
>> I think you should not move dhis-support-hibernate-2.0.1-SNAPSHOT.jar, just
>> everything else.
>>
>> Knut
>>>
>>> John
>>>
>>> On Tue, Apr 7, 2009 at 1:17 PM, Bob Jolliffe <bobjolliffe@xxxxxxxxx>
>>> wrote:
>>>>
>>>> Hi John
>>>>
>>>> How are you and Saptar getting on with this challenge?
>>>>
>>>> I did a little experiment this morning.  The dhis.war is about 35M of
>>>> mostly compressed application and framework classes which is one of
>>>> the reasons why it is a herculean effort for tomcat to try and load it
>>>> multiple times into memory.
>>>> If you pull out all the WEB-INF/lib/*.jar files from the war and place
>>>> those into tomcat's lib directory you are left with a dhis.war which
>>>> is only 1.8M.  (I did it on jetty, but same should apply to tomcat).
>>>> Everything continues to run as before and I suspect you will find that
>>>> you can now load gazillions of dhis2 instances without exhausting the
>>>> PermSize.  Let me know how this works.
>>>>
>>>> Of course the downside of de-packaging is that you will hit serious
>>>> complications if you are running different dhis2 versions which might
>>>> make use of different versions of libraries.  It will be a case of
>>>> upgrade one - upgrade all.
>>>>
>>>> Cheers
>>>> Bob
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~dhis2-devs
>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>>
>>
>> --
>> Cheers,
>> Knut Staring
>>
>



Follow ups

References