You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Konstantin Kolinko <kn...@gmail.com> on 2011/07/01 01:17:27 UTC

Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

2011/7/1 Christopher Schultz <ch...@christopherschultz.net>:
>
> On 6/30/2011 11:27 AM, Konstantin Kolinko wrote:
>> 2011/6/30 Bob DeRemer <bo...@thingworx.com>:
>>>           virtualClasspath="/WEB-INF/lib/extensions/*.jar"/>
>>
>> The above should be an absolute path.
>>
>> You can use system variables, e.g.
>> ${catalina.base}/webapps/mywebapp/WEB-INF/lib/extensions/*.jar
>
> Hmm... does that mean that VirtualWebappLoader can't be used with paths
> inside WAR files? Being able to support paths relative to the webapp
> would be quite nice.

I think that should be some ${} property.

It either has
a) either to be given to the Digester when it parses the XML, so that
it expands the property,
b) or Digester will leave it unexpanded (because it is unknown) and
VirtualWebappLoader  will expand its value when starting.

Either way, there is a question of obtaining this path early and
passing this information around.


Regarding the issue that I mentioned:
https://issues.apache.org/bugzilla/show_bug.cgi?id=47939

It looks that the following (without "lib") will work:
 ${catalina.base}/webapps/mywebapp/WEB-INF/extensions/*.jar

Best regards,
Konstantin Kolinko

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


RE: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

Posted by Bob DeRemer <bo...@thingworx.com>.
Awesome, thanks!

-----Original Message-----
From: Christopher Schultz [mailto:chris@christopherschultz.net] 
Sent: Thursday, June 30, 2011 10:18 PM
To: Tomcat Users List
Subject: Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bob,

On 6/30/2011 10:07 PM, Bob DeRemer wrote:
> Thanks!  I know it's all open and online, I was just hoping someone 
> might be able to point me to some specific classes so I don't have to 
> pour through a lot of irrelevant code.

Tomcat's component for JSPs is called Jasper. Most of it can be found in the org.apache.jasper package and subpackages, bundled along with the rest of the Tomcat code.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4NLmwACgkQ9CaO5/Lv0PCQHwCdEQiiqlp6ooaR6ydHE4uTMtFe
HEsAoI2koCSUSozQT4sKJ5tTUMTZxKiU
=yAtC
-----END PGP SIGNATURE-----

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


Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

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

Bob,

On 6/30/2011 10:07 PM, Bob DeRemer wrote:
> Thanks!  I know it's all open and online, I was just hoping someone
> might be able to point me to some specific classes so I don't have to
> pour through a lot of irrelevant code.

Tomcat's component for JSPs is called Jasper. Most of it can be found in
the org.apache.jasper package and subpackages, bundled along with the
rest of the Tomcat code.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4NLmwACgkQ9CaO5/Lv0PCQHwCdEQiiqlp6ooaR6ydHE4uTMtFe
HEsAoI2koCSUSozQT4sKJ5tTUMTZxKiU
=yAtC
-----END PGP SIGNATURE-----

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


RE: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

Posted by Bob DeRemer <bo...@thingworx.com>.
Thanks!  I know it's all open and online, I was just hoping someone might be able to point me to some specific classes so I don't have to pour through a lot of irrelevant code.

-----Original Message-----
From: Christopher Schultz [mailto:chris@christopherschultz.net] 
Sent: Thursday, June 30, 2011 10:04 PM
To: Tomcat Users List
Subject: Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bob,

On 6/30/2011 9:55 PM, Bob DeRemer wrote:
> I've verified that the WEB-INF/extensions will work, too.  The key 
> issue for us is being able to hot-deploy extension JAR(s) live without 
> restarting the webapp or Tomcat.  I began by seeing if Tomcat 
> supported find JAR(s) on non-standard locations so we can separate the 
> extensions.  These extensions to our core product will typically be 
> developed by 3rd parties.
> 
> So, I now need to look at creating my own classloader [it seems] 
> because even the VWL doesn't monitor for JAR additions and 
> automatically load them.  Again - if anyone knows how to do this, I 
> would really appreciate any direction to shorten my dev time.

Tomcat has a ClassLoader used for re-loading JSPs. A quick look at that shows there is no real magic there: it does not re-load itself in any way. Instead, some other component somewhere must be monitoring the JSP files for updates and orchestrating the disposal of the old ClassLoader (and the classes and instances loaded by it) and the creation of a new one.

I believe AXIS also has such a scheme for re-loading web services without bouncing the entire webapp.

All source code is available online, so you are free to read it all ;)

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4NKxkACgkQ9CaO5/Lv0PBHdgCdEKO+q78Bg2sKCTHqo3j35Zw8
HC4An0CsvndY6prfajI/jrI45h7T2bF/
=GEfb
-----END PGP SIGNATURE-----

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


Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

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

Bob,

On 6/30/2011 9:55 PM, Bob DeRemer wrote:
> I've verified that the WEB-INF/extensions will work, too.  The key
> issue for us is being able to hot-deploy extension JAR(s) live
> without restarting the webapp or Tomcat.  I began by seeing if Tomcat
> supported find JAR(s) on non-standard locations so we can separate
> the extensions.  These extensions to our core product will typically
> be developed by 3rd parties.
> 
> So, I now need to look at creating my own classloader [it seems]
> because even the VWL doesn't monitor for JAR additions and
> automatically load them.  Again - if anyone knows how to do this, I
> would really appreciate any direction to shorten my dev time.

Tomcat has a ClassLoader used for re-loading JSPs. A quick look at that
shows there is no real magic there: it does not re-load itself in any
way. Instead, some other component somewhere must be monitoring the JSP
files for updates and orchestrating the disposal of the old ClassLoader
(and the classes and instances loaded by it) and the creation of a new one.

I believe AXIS also has such a scheme for re-loading web services
without bouncing the entire webapp.

All source code is available online, so you are free to read it all ;)

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4NKxkACgkQ9CaO5/Lv0PBHdgCdEKO+q78Bg2sKCTHqo3j35Zw8
HC4An0CsvndY6prfajI/jrI45h7T2bF/
=GEfb
-----END PGP SIGNATURE-----

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


RE: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

Posted by Bob DeRemer <bo...@thingworx.com>.
I've verified that the WEB-INF/extensions will work, too.  The key issue for us is being able to hot-deploy extension JAR(s) live without restarting the webapp or Tomcat.  I began by seeing if Tomcat supported find JAR(s) on non-standard locations so we can separate the extensions.  These extensions to our core product will typically be developed by 3rd parties.

So, I now need to look at creating my own classloader [it seems] because even the VWL doesn't monitor for JAR additions and automatically load them.  Again - if anyone knows how to do this, I would really appreciate any direction to shorten my dev time.

Thanks,
Bob

-----Original Message-----
From: Konstantin Kolinko [mailto:knst.kolinko@gmail.com] 
Sent: Thursday, June 30, 2011 7:17 PM
To: Tomcat Users List
Subject: Re: how to use VirtualWebappLoader - either in META-INF/context.xml or programmatically on startup

2011/7/1 Christopher Schultz <ch...@christopherschultz.net>:
>
> On 6/30/2011 11:27 AM, Konstantin Kolinko wrote:
>> 2011/6/30 Bob DeRemer <bo...@thingworx.com>:
>>>           virtualClasspath="/WEB-INF/lib/extensions/*.jar"/>
>>
>> The above should be an absolute path.
>>
>> You can use system variables, e.g.
>> ${catalina.base}/webapps/mywebapp/WEB-INF/lib/extensions/*.jar
>
> Hmm... does that mean that VirtualWebappLoader can't be used with 
> paths inside WAR files? Being able to support paths relative to the 
> webapp would be quite nice.

I think that should be some ${} property.

It either has
a) either to be given to the Digester when it parses the XML, so that it expands the property,
b) or Digester will leave it unexpanded (because it is unknown) and VirtualWebappLoader  will expand its value when starting.

Either way, there is a question of obtaining this path early and passing this information around.


Regarding the issue that I mentioned:
https://issues.apache.org/bugzilla/show_bug.cgi?id=47939

It looks that the following (without "lib") will work:
 ${catalina.base}/webapps/mywebapp/WEB-INF/extensions/*.jar

Best regards,
Konstantin Kolinko

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


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