Re: Sharing DataObject Jar among web contexts

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Mar 16 2010 - 10:55:18 EDT

  • Next message: Dave Dombrosky: "Re: Order By Expression"

    Hi Tobias,

    This is just generally a bad practice to package "business" libraries
    in the container, and .war files should ideally be self-contained
    (aside from dependency on a subset of JEE APIs). So the best way of
    sharing is actually including your jar in a war. For controlled
    installations I guess you may bend the rules if you are comfortable
    with consequences. So if that works for you and you do not distribute
    your wars to the outside world this setup may be ok.

    At the practical level there may be some nasty class loading issues,
    but it looks like you have avoided them by deploying Cayenne and your
    data objects at the same container level.

    Regarding the listener... I think of it as an example of how you might
    setup Cayenne in a web app environment. There is a vast space of JEE
    configuration possibilities, so it can't fit them all. So if you don't
    need it, don't use it. I personally don't, as my context scoping is
    done via an IoC container.

    Andrus

    On Mar 15, 2010, at 3:45 PM, Tobias Schoessler wrote:

    > Hi,
    >
    > I have many web apps sharing the same cayenne/mapping objects. I
    > want to
    > share my cayenne classes among these web apps. I have packaged the
    > classes
    > successfully in a jar together with the cayenne.xml using a jndi
    > data source
    > and the Map xml file. I have put this jar in the shared lib level of
    > tomcat.
    >
    >
    > Now every web app deployed can use the mapping files without any
    > cayenne
    > reference in its local WEB-INF lib. Super!
    >
    > I can obviously even use
    >
    > DataContext dataContext = ServletUtil.getSessionContext(session);
    >
    > to bind the DataContext to the session.
    >
    > I am a bit worried now - is it really this easy?
    >
    > I have not configured a
    > org.objectstyle.cayenne.conf.WebApplicationListener
    > in the web apps web.xml.
    >
    > Is it only used for finding the cayenne.xml in the Web-INF scope? I
    > have
    > packaged the cayenne.xml with the jar in the global scope of tomcat I
    > therefore would not need this discovery feature.
    >
    > Or is this listener used to clean up the DataContexts attached to
    > the web
    > apps session? Do I need this Listener? Will the DataContexts
    > attached lto
    > the session via ServletUtil leak if I do not have the WebApplication
    > listener defined?
    >
    > Is this setup save?
    >
    > thanks a lot.
    >
    > Tobias



    This archive was generated by hypermail 2.0.0 : Tue Mar 16 2010 - 10:56:55 EDT