You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Mathieu Dubois <md...@genoscope.cns.fr> on 2019/10/23 00:59:50 UTC

Basic question about application configuration

Dear Tomcat users,

I am not familiar with Tomcat or the Java world in general so I have a 
rather simple question.

Part of my job is to maintain and evolve a Java web application based on 
JBPM which as such use a (MySQL) DB. This application is independently 
deployed on a handful Tomcat servers (each instance uses a different 
DB). We use a very old version of Tomcat (5.5.17) but I don't think that 
this is related to my question.

We use maven to create the WAR file. Right now we have to create one WAR 
file per server based on different maven profiles (i.e. running `mvn 
-Pserver1 ...' then `mvn -Pserver2 ...', etc.). Those profiles contains 
the MySQL DB to use (and other configuration) which is used to configure 
Hibernate (and other libraries) at compile time for this server.

As you can imagine, there are several problems with this approach: it is 
impossible to deploy without the source code and maven, the 
configuration of each deployment has to be in the code, etc.

I have read a bit about Tomcat and if I understand correctly, the 
correct way to do is to declare a Resource in the configuration of each 
server which represents the DB to use and then adapt the code (in 
particular Hibernate configuration) to use this Resource based on it's 
name. Then the same WAR file can be deployed on any servers provided 
it's configured without maven (i.e. I just have to upload the WAR file 
and voilà).

Is that correct ?

Thanks in advance,
Mathieu Dubois

-- 
Mathieu Dubois - IR - UMR 8030 équipe LABGeM
CEA - Genoscope. 2 rue Gaston Crémieux. 91057 Evry Cedex France.
Bureau B07
+33 1 60 87 53 35


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: AW: Basic question about application configuration

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Mathieu,

On 10/24/19 14:26, Mathieu Dubois wrote:
> Dear Christopher,
> 
> Le 24/10/2019 à 00:36, Christopher Schultz a écrit :
>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
>> 
>> Mathieu,
>> 
>> On 10/23/19 17:23, Mathieu Dubois wrote:
>>> I noticed that the application also need to access to a
>>> directory to store the result of some computation usually
>>> outside the location of tomcat (the results can be rather
>>> large). As for the DB this depends on each instance of the
>>> application. Is there a similar mechanism for such a case ?
>> It's not exactly clear what you are asking, but it sounds like
>> you are looking for a configuration similar to the JNDI binding
>> that can be split between conf/server.xml and
>> META-INF/context.xml for connecting to a database.
>> 
>> You have some choices, here, and the "right one" probably will
>> require you to make a decision based upon your requirements.
>> 
>> In WEB-INF/web.xml, there are some optional configuration data
>> called "context parameters". They look something like this:
>> 
>> <?xml version="1.0"?> <web-app
>> xmlns="http://java.sun.com/xml/ns/javaee" 
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
>> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" 
>> metadata-complete="true"> <context-param> <description> You can
>> put whatever you want in here. It's just documentation for human
>> readers. </description> 
>> <param-name>my-configuration-property-name</param-name> 
>> <param-value>my value</param-value> </context-param> ... 
>> </web-app>
>> 
>> If you want to put, for example, a directory path in here for
>> storing temporary files, you could do it like this:
>> 
>> <web-app> <context-param> <description>Path to the temporary file
>> directory where we write filed.</description> 
>> <param-name>fr.cns.genoscope.appname.tmpfiledir</param-name> 
>> <param-value>/tmp/app/temp-files</param-value> </context-param> 
>> ... </web-app>
>> 
>> In order to use these configuration values, your code needs to
>> read them explicitly, so you'll need to make some code changes in
>> order to put your configuration into WEB-INF/web.xml. Something
>> like this in your servlet:
>> 
>> String tmpDir = 
>> getServletContext().getInitParam("fr.cns.genoscope.appname.tmpfiledir
");
>>
>> 
// ... use the tmpDir for all your file-writing needs
>> 
>> Now, WEB-INF/web.xml is bundled inside your WAR file and, as
>> you've mentioned, it's not very flexible with your builds. So,
>> here's what you can do:
>> 
>> The file META-INF/context.xml (also bundled within your
>> application's WAR file -- hold that thought for a minute) can be
>> used to override the values of your context-param values, like
>> this:
>> 
>> <?xml version="1.0"?> <Context> <Parameter
>> name="fr.cns.genoscope.appname.tmpfiledir" 
>> value="/usr/local/other/location/for/client/X" override="true"/> 
>> ... </Context>
>> 
>> More info can be found at: 
>> http://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Context_P
ara
>>
>> 
meters
>> 
>> So, you could put the right value into WEB-INF/web.xml (which is 
>> inconvenient) or into META-INF/context.xml (which is also 
>> inconvenient) or -- and here's where things get a little
>> interesting - -- you can copy the file META-INF/context.xml from
>> the WAR file and put it into Tomcat's configuration directory
>> structure like this:
>> 
>> conf/[enginename]/[hostname]/[appname].xml
>> 
>> ...and it will *override* the file supplied by the WAR file in 
>> META-INF/context.xml. So you get to use the same WAR file
>> everywhere and customize those XML files on a per-client basis.
>> 
>> Above, the [enginename] is almost always "Catalina" and matches
>> the "name" attribute of the <Engine> in your conf/server.xml
>> file. By default, it's name="Catalina" and pretty much nobody
>> ever changes it. Your [hostname] comes from the "name" attribute
>> of the <Host> in which your context/webapp is defined, and is
>> often just "localhost" although it would be anything depending
>> upon your environment. The [appname] is whatever you want it to
>> be: the [appname] sets the context-path of the application. But
>> the [appname].xml must match your [appname].war file name.
>> 
>> So if you don't mind modifying your code a little, this can get
>> your a lot of flexibility.
>> 
>> This feature goes back to Tomcat 5.5, so you should be able to
>> use it. I'd of course encourage you to look at upgrading to at
>> least Tomcat 8.5 in the near-term. You may find that you can just
>> drop-in the latest Tomcat 8.5.x in place of your Tomcat 5.5 and
>> everything still works. (You will have to re-write your
>> conf/server.xml file from scratch, as those files are not
>> compatible between major releases.)
> 
> Thanks for your in-depth explanation, it really helps. If I
> summarize, I can use conf/[enginename]/[hostname]/[appname].xml to
> configure both the DB connection (with a Resource) and the
> directory where to write files (with a param). That sounds exactly
> like what we need.

You can do exactly that.

In order to use context-params, though, you will probably need to
modify your code to pick-up that configuration. Hopefully, it's not
too much trouble to do that.

If you define your data source(s) in conf/[engine]/[host]/[app].xml
then you don't even need to "map" them into your application because
they should already be mapped.

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl2yIrAACgkQHPApP6U8
pFjQcg//d+cw86NIByikbnYsCccD7e5Ca4NjBkf9IoDLbqHaxIKZf6Ci3dHhWApB
JcgzWBlL/+c51rz5xwCyz9qUxfOwPrQbxdhjrgkW5huGESAINl8tg01P5mlXtPs1
NsiecH/whevzUZhUiKEXq5bJBffoBQYsUMdgaRN3yATF8aXyyKjmfJT1kZ6aZhHA
uUTPrK7lftpufddGjkTWFGbHAVcaY5728cp+BIAc1eZ51TZrfi3WxtHWRZvn8OoK
a2B81Y7he+QN+OG25w3E5JwX8XWEVNWH10iPqSmvO+h5efZlBol46AtP9saJ0lno
BCqjIoc4uMBgFXPkKJJluvgWRQdthHK03iKK/cAVYxrBeOSqnIliRfl1iJUmj+jZ
gDzY9mNgp1Y/ICe+PGHy5zIguHGyaCTWDHn1qar6EaU7Zi67qiSORKCRFBeSTWFy
gZH0uqWo4X/Neq4z96E+iuDVhPJlM+WRYl/uH4BfkubK/DmMXIZ1LcCX7frnDXoA
Q8hDzrAKcQV3txe5JgsoCe7QrKaQsPM784lFAQta2joZ3RIwG0O0T7t6UXINgTKP
kNJ1V0dnMa+li5w3c+g7cQNDHH33aJ5I0RcwBaP1gT9qpszuJ5znaHoOKs10U25V
K73FfcDngC/Z9eh0O0P7ug/g0McJZZL2BM9DRPTJKajPT8Bk0GA=
=DeCG
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: AW: Basic question about application configuration

Posted by Mathieu Dubois <md...@genoscope.cns.fr>.
Dear Christopher,

Le 24/10/2019 à 00:36, Christopher Schultz a écrit :
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Mathieu,
>
> On 10/23/19 17:23, Mathieu Dubois wrote:
>> I noticed that the application also need to access to a directory
>> to store the result of some computation usually outside the
>> location of tomcat (the results can be rather large). As for the DB
>> this depends on each instance of the application. Is there a
>> similar mechanism for such a case ?
> It's not exactly clear what you are asking, but it sounds like you are
> looking for a configuration similar to the JNDI binding that can be
> split between conf/server.xml and META-INF/context.xml for connecting
> to a database.
>
> You have some choices, here, and the "right one" probably will require
> you to make a decision based upon your requirements.
>
> In WEB-INF/web.xml, there are some optional configuration data called
> "context parameters". They look something like this:
>
> <?xml version="1.0"?>
> <web-app xmlns="http://java.sun.com/xml/ns/javaee"
>           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
>           version="3.0"
>           metadata-complete="true">
>    <context-param>
>      <description>
>        You can put whatever you want in here. It's just documentation
>        for human readers.
>      </description>
>      <param-name>my-configuration-property-name</param-name>
>      <param-value>my value</param-value>
>    </context-param>
>    ...
> </web-app>
>
> If you want to put, for example, a directory path in here for storing
> temporary files, you could do it like this:
>
> <web-app>
>    <context-param>
>      <description>Path to the temporary file directory where we write
> filed.</description>
>      <param-name>fr.cns.genoscope.appname.tmpfiledir</param-name>
>      <param-value>/tmp/app/temp-files</param-value>
>    </context-param>
>    ...
> </web-app>
>
> In order to use these configuration values, your code needs to read
> them explicitly, so you'll need to make some code changes in order to
> put your configuration into WEB-INF/web.xml. Something like this in
> your servlet:
>
>      String tmpDir =
> getServletContext().getInitParam("fr.cns.genoscope.appname.tmpfiledir");
>      // ... use the tmpDir for all your file-writing needs
>
> Now, WEB-INF/web.xml is bundled inside your WAR file and, as you've
> mentioned, it's not very flexible with your builds. So, here's what
> you can do:
>
> The file META-INF/context.xml (also bundled within your application's
> WAR file -- hold that thought for a minute) can be used to override
> the values of your context-param values, like this:
>
> <?xml version="1.0"?>
> <Context>
>    <Parameter name="fr.cns.genoscope.appname.tmpfiledir"
> value="/usr/local/other/location/for/client/X"
>           override="true"/>
>   ...
> </Context>
>
> More info can be found at:
> http://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Context_Para
> meters
>
> So, you could put the right value into WEB-INF/web.xml (which is
> inconvenient) or into META-INF/context.xml (which is also
> inconvenient) or -- and here's where things get a little interesting
> - -- you can copy the file META-INF/context.xml from the WAR file and
> put it into Tomcat's configuration directory structure like this:
>
> conf/[enginename]/[hostname]/[appname].xml
>
> ...and it will *override* the file supplied by the WAR file in
> META-INF/context.xml. So you get to use the same WAR file everywhere
> and customize those XML files on a per-client basis.
>
> Above, the [enginename] is almost always "Catalina" and matches the
> "name" attribute of the <Engine> in your conf/server.xml file. By
> default, it's name="Catalina" and pretty much nobody ever changes it.
> Your [hostname] comes from the "name" attribute of the <Host> in which
> your context/webapp is defined, and is often just "localhost" although
> it would be anything depending upon your environment. The [appname] is
> whatever you want it to be: the [appname] sets the context-path of the
> application. But the [appname].xml must match your [appname].war file
> name.
>
> So if you don't mind modifying your code a little, this can get your a
> lot of flexibility.
>
> This feature goes back to Tomcat 5.5, so you should be able to use it.
> I'd of course encourage you to look at upgrading to at least Tomcat
> 8.5 in the near-term. You may find that you can just drop-in the
> latest Tomcat 8.5.x in place of your Tomcat 5.5 and everything still
> works. (You will have to re-write your conf/server.xml file from
> scratch, as those files are not compatible between major releases.)

Thanks for your in-depth explanation, it really helps. If I summarize, I 
can use conf/[enginename]/[hostname]/[appname].xml to configure bith the 
DB connection (with a Resource) and the directory where to write files 
(with a param). That sounds exactly like what we need.

Thanks again,
Mathieu

-- 
Mathieu Dubois - IR - UMR 8030 équipe LABGeM
CEA - Genoscope. 2 rue Gaston Crémieux. 91057 Evry Cedex France.
Bureau B07
+33 1 60 87 53 35


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: AW: Basic question about application configuration

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Mathieu,

On 10/23/19 17:23, Mathieu Dubois wrote:
> I noticed that the application also need to access to a directory
> to store the result of some computation usually outside the
> location of tomcat (the results can be rather large). As for the DB
> this depends on each instance of the application. Is there a
> similar mechanism for such a case ?

It's not exactly clear what you are asking, but it sounds like you are
looking for a configuration similar to the JNDI binding that can be
split between conf/server.xml and META-INF/context.xml for connecting
to a database.

You have some choices, here, and the "right one" probably will require
you to make a decision based upon your requirements.

In WEB-INF/web.xml, there are some optional configuration data called
"context parameters". They look something like this:

<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0"
         metadata-complete="true">
  <context-param>
    <description>
      You can put whatever you want in here. It's just documentation
      for human readers.
    </description>
    <param-name>my-configuration-property-name</param-name>
    <param-value>my value</param-value>
  </context-param>
  ...
</web-app>

If you want to put, for example, a directory path in here for storing
temporary files, you could do it like this:

<web-app>
  <context-param>
    <description>Path to the temporary file directory where we write
filed.</description>
    <param-name>fr.cns.genoscope.appname.tmpfiledir</param-name>
    <param-value>/tmp/app/temp-files</param-value>
  </context-param>
  ...
</web-app>

In order to use these configuration values, your code needs to read
them explicitly, so you'll need to make some code changes in order to
put your configuration into WEB-INF/web.xml. Something like this in
your servlet:

    String tmpDir =
getServletContext().getInitParam("fr.cns.genoscope.appname.tmpfiledir");
    // ... use the tmpDir for all your file-writing needs

Now, WEB-INF/web.xml is bundled inside your WAR file and, as you've
mentioned, it's not very flexible with your builds. So, here's what
you can do:

The file META-INF/context.xml (also bundled within your application's
WAR file -- hold that thought for a minute) can be used to override
the values of your context-param values, like this:

<?xml version="1.0"?>
<Context>
  <Parameter name="fr.cns.genoscope.appname.tmpfiledir"
value="/usr/local/other/location/for/client/X"
         override="true"/>
 ...
</Context>

More info can be found at:
http://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Context_Para
meters

So, you could put the right value into WEB-INF/web.xml (which is
inconvenient) or into META-INF/context.xml (which is also
inconvenient) or -- and here's where things get a little interesting
- -- you can copy the file META-INF/context.xml from the WAR file and
put it into Tomcat's configuration directory structure like this:

conf/[enginename]/[hostname]/[appname].xml

...and it will *override* the file supplied by the WAR file in
META-INF/context.xml. So you get to use the same WAR file everywhere
and customize those XML files on a per-client basis.

Above, the [enginename] is almost always "Catalina" and matches the
"name" attribute of the <Engine> in your conf/server.xml file. By
default, it's name="Catalina" and pretty much nobody ever changes it.
Your [hostname] comes from the "name" attribute of the <Host> in which
your context/webapp is defined, and is often just "localhost" although
it would be anything depending upon your environment. The [appname] is
whatever you want it to be: the [appname] sets the context-path of the
application. But the [appname].xml must match your [appname].war file
name.

So if you don't mind modifying your code a little, this can get your a
lot of flexibility.

This feature goes back to Tomcat 5.5, so you should be able to use it.
I'd of course encourage you to look at upgrading to at least Tomcat
8.5 in the near-term. You may find that you can just drop-in the
latest Tomcat 8.5.x in place of your Tomcat 5.5 and everything still
works. (You will have to re-write your conf/server.xml file from
scratch, as those files are not compatible between major releases.)

Hope that helps,
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl2w1gAACgkQHPApP6U8
pFit/g/9EXtTvtvhpbnPxZnObyg+sUjhoFuZI7/Dmczhq03ZzLi+H51KoplM9F3Q
8xDLtunDZrkGQfb2g95Uh7fI4K0rthRzE2UQ6uS7jkodDKNwHuH+dKibUADIDEoF
1DYqHhEzN7v5yZg9ohERs9fI0hzqNutcNqmfquFdnZ7sN9LWh3SOxdkUa1dYooZj
xRNbkZ7/xjULyYEHTEljzQ4n541UDE05qNYQPf+UKCduUcUeTlaS3sJIp8YNa+uT
lnFASUZnsH6CDWU99cYmPdi8GB0Bntt/Ib6QpYeZter6nYKOU/2Hc6Ga6pD5dCTo
DW+kJ008OWzYsROj137Orr9MaSPbvRD7kpCTieADaY9fzUEL2pyQmaY5l0h6uQTN
2sHTE4CIAwL/osKBRkUSZcsEwWMitPxCRiJhIwLn0ae97w3Fd0h9wIag2bzTuf+X
k3CdjhMSSWauhMdlCG9R3kWNfa4ZM5Xn2yVQnCpcR6GfRwwNY7I+EHQVwVi5fl45
QrCDlDyOxJ+FHaedlczrVdCDqAdyieOdsuSlirwbRrYlCClzD+LMAofTRGxvDNvs
lSvl6ove3yhsFGdyNz9C+YDnDyIG9c5QK+Wy0R2LCki9UZ1ynA5WCwuQWw44kTRh
rFeCK3zvQNLcytWIshhK09a3ZeDsMKZnGx+n3lmuA18dOprJ6jg=
=MT/7
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: AW: Basic question about application configuration

Posted by Mathieu Dubois <md...@genoscope.cns.fr>.
Hi again,

I noticed that the application also need to access to a directory to 
store the result of some computation usually outside the location of 
tomcat (the results can be rather large). As for the DB this depends on 
each instance of the application. Is there a similar mechanism for such 
a case ?

Thanks in advance,
Mathieu

-- 
Mathieu Dubois - IR - UMR 8030 équipe LABGeM
CEA - Genoscope. 2 rue Gaston Crémieux. 91057 Evry Cedex France.
Bureau B07
+33 1 60 87 53 35


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: AW: Basic question about application configuration

Posted by Mathieu Dubois <md...@genoscope.cns.fr>.
Hi Bernd,

Le 23/10/2019 à 06:55, bernd.schatz@daimler.com a écrit :
> Hi Mathieu,
>
>> -----Ursprüngliche Nachricht-----
>> Von: Mathieu Dubois <md...@genoscope.cns.fr>
>> Gesendet: Mittwoch, 23. Oktober 2019 03:00
>> An: users@tomcat.apache.org
> [SNIP]
>> I have read a bit about Tomcat and if I understand correctly, the
>> correct way to do is to declare a Resource in the configuration of each
>> server which represents the DB to use and then adapt the code (in
>> particular Hibernate configuration) to use this Resource based on it's
>> name. Then the same WAR file can be deployed on any servers provided
>> it's configured without maven (i.e. I just have to upload the WAR file
>> and voilà).
>>
>> Is that correct ?
> Yes, it is a common approach in the Java Application world called jndi.
> So your app would also work on a different application server like Wildfly or Liberty.
>
> But the way you define it in your application server differs,
> So see here for comparison:
> https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html
> https://developer.jboss.org/thread/279940

Thank you very much for your insight. It will sure help us to 
restructure the project.

Namaste,
Mathieu

-- 
Mathieu Dubois - IR - UMR 8030 équipe LABGeM
CEA - Genoscope. 2 rue Gaston Crémieux. 91057 Evry Cedex France.
Bureau B07
+33 1 60 87 53 35


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


AW: Basic question about application configuration

Posted by be...@daimler.com.
Hi Mathieu,

> -----Ursprüngliche Nachricht-----
> Von: Mathieu Dubois <md...@genoscope.cns.fr>
> Gesendet: Mittwoch, 23. Oktober 2019 03:00
> An: users@tomcat.apache.org

[SNIP]
> I have read a bit about Tomcat and if I understand correctly, the
> correct way to do is to declare a Resource in the configuration of each
> server which represents the DB to use and then adapt the code (in
> particular Hibernate configuration) to use this Resource based on it's
> name. Then the same WAR file can be deployed on any servers provided
> it's configured without maven (i.e. I just have to upload the WAR file
> and voilà).
>
> Is that correct ?

Yes, it is a common approach in the Java Application world called jndi.
So your app would also work on a different application server like Wildfly or Liberty.

But the way you define it in your application server differs,
So see here for comparison:
https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html
https://developer.jboss.org/thread/279940


--
Mit freundlichen Grüßen / Kind Regards/ नमस्ते(Namaste)
Bernd Schatz
ITT/FT - Java Free and Open Source Software (JFoSS)
HPC Z252
Gebäude VDZ Ost 1.OG
Plieninger Str. 150
70567 Stuttgart

Bernd Schatz
Büro: +49 711 17 41463
Mobile: +49 151 5862 6591
FAX: +49 711 17 7904 1252
mailto:bernd.schatz@daimler.com
https://git.daimler.com/jfoss
https://matter.i.daimler.com
https://matter.i.daimler.com/daimler-ag/channels/jfoss




If you are not the addressee, please inform us immediately that you have received this e-mail by mistake, and delete it. We thank you for your support.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org