You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Craig McClanahan <cr...@apache.org> on 2007/03/08 17:00:12 UTC

Re: Sharing myfaces libraries

On 3/7/07, mario.buonopane@accenture.com <ma...@accenture.com>
wrote:
>
>  I have more than one application developed with same version of
> shale/myfaces/tomahawk. Is it correct install these libraries in "Shared
> Libraries" not remove them from WEB-INF/lib of each application?
>

It depends on your situation.  Installing the libraries as shared inside the
server definitely makes your WAR files smaller and therefore likely to
deploy a little faster.  On the other hand, you will be requiring that all
of the co-installed applications use the same versions of these
dependencies, rather than potentially being able to upgrade them
individually.

One thing to watch out for -- some libraries have been known to have quirks
when installed in as a shared library, due to the fact that the class loader
hierarchy is changed.  The fundamental issue is that it's easy to write code
that assumes application classes are loaded by the same class loader that
loaded your class.  That's true if your class was in /WEB-INF/lib but not
true if you install your class in a shared library (your class loader will
be a parent of the webapp class loader).  The simplest way to find out
whether this works is to try it.

Craig




Regards
>
> Mario
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> This message is for the designated recipient only and may contain
> privileged, proprietary, or otherwise private information. If you have
> received it in error, please notify the sender immediately and delete the
> original. Any other use of the email by you is prohibited.
>

RE: Sharing myfaces libraries

Posted by ma...@accenture.com.
Is true and I have tried. As you know, servlet specification indicates
that shared libraries is based on Container Extensions (9.7.1 of Servlet
Specification 2.4). I'm using IBM WebSphere and this Application Server
has "Server Shared Libraries" and "Application Shared Libraries". Using
first one all the jars are shared  by all application deployed, using
the second one you configure a shared library and you can choices which
application use it. The classloader that loads the "Application Shared
Libraries" is the classloader of the module/application that has the
reference to the shared library (Best Practice for Using Common
Application Files
http://www-1.ibm.com/support/docview.wss?fdoc=aimwas&rs=180&uid=swg27006
159 )

The problem using shared libraries is that all tld files presents in
some jar (shale, myfaces, tomahawk, struts...) need to be copied
manually in WEB-INF directory of each application. So, in my opinion,
copy a jar or a tld file is the same :-). At the and of my tests, I have
decided to put in shared libraries all jar not tipically web oriented
(for example Jakarta-commons) and put in WEB-INF/lib jars like shale,
myfaces, tomahawk and struts. 

The reason I'm using shared libraries is that we have developed same web
application with the same framework and I want/need to be sure that all
application use the libraries I decided. 

 

Regards

Mario Buonopane

 

________________________________

From: craigmcc@gmail.com [mailto:craigmcc@gmail.com] On Behalf Of Craig
McClanahan
Sent: 8 marzo 2007 17.00
To: MyFaces Discussion
Subject: Re: Sharing myfaces libraries

 

 

On 3/7/07, mario.buonopane@accenture.com <mario.buonopane@accenture.com
> wrote:

I have more than one application developed with same version of
shale/myfaces/tomahawk. Is it correct install these libraries in "Shared
Libraries" not remove them from WEB-INF/lib of each application?


It depends on your situation.  Installing the libraries as shared inside
the server definitely makes your WAR files smaller and therefore likely
to deploy a little faster.  On the other hand, you will be requiring
that all of the co-installed applications use the same versions of these
dependencies, rather than potentially being able to upgrade them
individually. 

One thing to watch out for -- some libraries have been known to have
quirks when installed in as a shared library, due to the fact that the
class loader hierarchy is changed.  The fundamental issue is that it's
easy to write code that assumes application classes are loaded by the
same class loader that loaded your class.  That's true if your class was
in /WEB-INF/lib but not true if you install your class in a shared
library (your class loader will be a parent of the webapp class loader).
The simplest way to find out whether this works is to try it. 

Craig


 

	 

	Regards 

	Mario

	 

 

 

 

 

 

	 

	This message is for the designated recipient only and may
contain privileged, proprietary, or otherwise private information. If
you have received it in error, please notify the sender immediately and
delete the original. Any other use of the email by you is prohibited. 

 



This message is for the designated recipient only and may contain privileged, proprietary, or otherwise private information.  If you have received it in error, please notify the sender immediately and delete the original.  Any other use of the email by you is prohibited.