Yes you can.  You can deploy 2 separate tomcat's each with their own ports,
contexts, etc.  This will allow you to run your apps in 2 separate VMs, so
they can use different versions of classes etc.

This was in Tomcat 3.23-3.3.  I think 4 should work the same way with this?

jchuang

----- Original Message -----
From: "Martin v. Boehlen" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, January 08, 2002 2:04 PM
Subject: class loading tc 3.3 & virtual hosts


> Greetings Users,
>
> is it possible to use two completely separate virtual hosts
> with tomcat ?
> What I want to do is using two virtual hosts on the same box.
> One for real web serving and one for development.
>
> My problems so far are:
> 1. Class loading -
> Can I configure tomcat in a way that classes don't
> interfere between virtual hosts ?
> 2. Context scope -
> Can I use JkMount with a single path for all
> applications ?
> 3. Host aliases
> Can I do an 'AutoWebApp' for an 'Alias' and
>   a full host name at the same time ?
>
> Please note, that:
> The application name is 'jRolodex', but I used the 'numguess.jsp'
> example for testing.
> 'www' is the web host and
> 'javadex' is the development host.
>
> A 'build.sh all' copies the application files to host 'javadex'
> i.e. the 'docBase' directory of virtual host
> 'javadex.tiade-voboe.de'.
>
> A 'build.sh dist' produces a 'jRolodex.war' and a 'jRoldex.jar'
> in the 'docBase' directory of host 'www.tiade-voboe.de'.
>
> Before I plunge into the details, please look at the partial
> config files, stack and SW version at the end of this mail.
>
> Now the gory details:
>
> ad 1.  When i change some code in the application and afterwards do a
> 'build.sh all' for application 'jRolodex' without doing a
> 'build.sh dist', the first virtual server I hit works fine!
> No matter wether it is 'www' or 'javadex'.
> The second server always gets an 'Error 500' (see error stack at
> end of mail).
> It seems to me, that tomcat does not load the appropriate class
>         definitions.
>
> ad 2.  I tried to use '/wapps' as the context path (with and without a
>         'prefix' in 'AutoWebApp') because I wanted something like
>         'JkMount /wapps' in 'httpd.conf'. It didn't work. So I have
> to mount every application explicitly.
>
> ad 3.  I tried to use the 'Alias' definition in 'AutoWebApp'. I.e.:
>         <AutoWebApp dir="/usr/local/httpd/webapps/javadex"
> prefix="/wapps"
> host="javadex" />
> It worked fine but it didn't work for 'javadex.tiade-voboe.de' (and
> vice versa).
>
>
> <!-- --------------- httpd.conf
START ---------------------------------- -->
> # ----- The Waltons, Daltons, everyone
> <VirtualHost www.tiade-voboe.de:80>
>     ServerAdmin [EMAIL PROTECTED]
>     ServerName  www.tiade-voboe.de
>     DocumentRoot "/usr/local/httpd/htdocs/www"
>     ServerAlias www       www.tiade-voboe.de
>
>     <Directory "/usr/local/httpd/htdocs/www" >
> Options Indexes -FollowSymLinks -Includes +MultiViews
> Order deny,allow
> Allow from all
>     </Directory>
>
>     JkMount /*.jsp ajp13
>     JkMount /wapps/jRolodex ajp13
>     JkMount /wapps/jRolodex/* ajp13
> </VirtualHost>
>
> # ----- Tomcat developer
> <VirtualHost javadex.tiade-voboe.de:80>
>     ServerAdmin [EMAIL PROTECTED]
>     ServerName javadex.tiade-voboe.de
>     DocumentRoot "/usr/local/httpd/htdocs/javadex"
>     ServerAlias javadex   javadex.tiade-voboe.de
>
>     # ----- Here comes the directory accessible by all users of the local
> network
>     <Directory "/usr/local/httpd/htdocs/javadex" >
> Options Indexes +FollowSymLinks -Includes +MultiViews
> Order allow,deny
> Allow from 192.168.17.0/255.255.255.0
>     </Directory>
>
>     JkMount /*.jsp ajp13
>     JkMount /wapps/jRolodex ajp13
>     JkMount /wapps/jRolodex/* ajp13
> </VirtualHost>
> <!-- --------------- httpd.conf
END ------------------------------------ -->
>
> <!-- --------------- apps-vhosts.xml
START ----------------------------- -->
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <Server>
>
>
>     <Host name="www.tiade-voboe.de">
>         <Alias name="www" />
>         <Context path=""
>             docBase="/usr/local/httpd/webapps/www"
>             debug="0"
>     reloadable="False" >
>               <SimpleRealm filename="conf/users/example-users.xml" />
>               <LogSetter name="www_tc.log"
> path="/var/log/tomcat/www_tc.log"
> verbosityLevel="ERROR"/>
>               <LogSetter name="www_servlet_log"
> path="/var/log/tomcat/www_servlet.log"
> servletLogger="true"
> verbosityLevel = "ERROR"/>
>         <AutoDeploy source="/usr/local/httpd/webapps/www"
> target="/usr/local/httpd/webapps/www" />
>         <AutoWebApp dir="/usr/local/httpd/webapps/www"
> prefix="/wapps"
> host="www.tiade-voboe.de" />
>         </Context>
>     </Host>
>
>
>     <Host name="javadex.tiade-voboe.de">
>         <Alias name="javadex" />
>         <Context path=""
>             docBase="/usr/local/httpd/webapps/javadex"
>             debug="99"
>     reloadable="True"
>               <SimpleRealm filename="conf/users/example-users.xml" />
>               <LogSetter name="javadex_tc.log"
> path="/var/log/tomcat/javadex_tc.log"
> verbosityLevel = "DEBUG"/>
>               <LogSetter name="javadex_servlet_log"
> path="/var/log/tomcat/javadex_servlet.log"
> servletLogger="DEBUG"/>
>         <AutoWebApp dir="/usr/local/httpd/webapps/javadex"
> prefix="/wapps"
> host="javadex.tiade-voboe.de" />
>         </Context>
>     </Host>
>
>
> </Server>
>
> <!-- --------------- apps-vhosts.xml
END ------------------------------- -->
>
>
> <!-- --------------- Error stack
START - ------------------------------- -->
> Error: 500Location: /wapps/jRolodex/numguess.jspInternal Servlet Error:
> org.apache.jasper.JasperException: object is not an instance of declaring
> class
>         at
> org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(Unknown
Source)
>         at org.apache.jasper.runtime.JspRuntimeLibrary.introspect(Unknown
> Source)
>         at numguess_1._jspService(numguess_1.java:84)
>         at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java)
>         at org.apache.tomcat.facade.ServletHandler.doService(Unknown
Source)
>         at org.apache.tomcat.core.Handler.invoke(Unknown Source)
>         at org.apache.tomcat.core.Handler.service(Unknown Source)
>         at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)
>         at org.apache.tomcat.core.ContextManager.internalService(Unknown
> Source)
>         at org.apache.tomcat.core.ContextManager.service(Unknown Source)
>         at
>
org.apache.tomcat.modules.server.Ajp13Interceptor.processConnection(Unknown
> Source)
>         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown
Source)
>         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown
Source)
>         at java.lang.Thread.run(Thread.java:539)
> Root cause:
> java.lang.IllegalArgumentException: object is not an instance of declaring
> class
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:42
)
>         at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:28)
>         at java.lang.reflect.Method.invoke(Method.java:327)
>         at
> org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(Unknown
Source)
>         at org.apache.jasper.runtime.JspRuntimeLibrary.introspect(Unknown
> Source)
>         at numguess_1._jspService(numguess_1.java:84)
>         at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java)
>         at org.apache.tomcat.facade.ServletHandler.doService(Unknown
Source)
>         at org.apache.tomcat.core.Handler.invoke(Unknown Source)
>         at org.apache.tomcat.core.Handler.service(Unknown Source)
>         at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)
>         at org.apache.tomcat.core.ContextManager.internalService(Unknown
> Source)
>         at org.apache.tomcat.core.ContextManager.service(Unknown Source)
>         at
>
org.apache.tomcat.modules.server.Ajp13Interceptor.processConnection(Unknown
> Source)
>         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown
Source)
>         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(Unknown
Source)
>         at java.lang.Thread.run(Thread.java:539)
> <!-- --------------- Error stack END------------------------------- -->
>
>
> <!-- --------------- Software versions START ---------------------- -->
> <!-- ---- Server side -->
> srv01:~ # uname -a
> Linux srv01.tiade-voboe.de 2.4.16 #38 SMP Fri Dec 28 20:37:27 CET 2001
i686
> unknown
> srv01:~ # java -version
> java version "1.4.0-beta3"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta3-b84)
> Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed mode)
> srv01:~ # file /usr/local/httpd/tomcat
> /usr/local/httpd/tomcat: symbolic link to jakarta-tomcat-3.3
>
> <!-- ---- Client side -->
> martin@maptop:~ > java -version
> java version "1.3.1_02"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_02-b02)
> Java HotSpot(TM) Client VM (build 1.3.1_02-b02, mixed mode)
> martin@maptop:~ >konqueror --version
> Qt: 2.3.0
> KDE: 2.1.2
> Konqueror: 2.1.1
> <!-- --------------- Software versions END ------------------------ -->
>
> --
> To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> For additional commands: <mailto:[EMAIL PROTECTED]>
> Troubles with the list: <mailto:[EMAIL PROTECTED]>
>


--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to