Re: JPA Integration tests with Maven

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Thu Aug 10 2006 - 16:04:59 EDT

  • Next message: Andrus Adamchik: "Re: Alternative ROP?"

    Ok, looks like I found the problem - all Cayenne jars and all
    dependencies (such as jpa spec, commons-logging, etc., etc.) have to
    be added to the "-bootclasspath" of the forked unit test (in addition
    to "-javaagent"). A small problem remains - Maven2 doesn't seem to
    have a way to expose a combined dependency classpath in the POM as a
    property. Sucks...

    Andrus

    On Aug 9, 2006, at 11:38 AM, Andrus Adamchik wrote:

    > Hi Craig,
    >
    > I certainly realize the benefits of the enhancer in case of pseudo-
    > POJO JPA-style persistence, and I agree with your design points
    > (the same that you made during your presentation in Dublin).
    >
    > Unfortunately in practice it causes lots of pain, and I expect more
    > to come. Oh well, I'll keep banging my head against this particular
    > wall...
    >
    > Andrus
    >
    >
    > On Aug 9, 2006, at 11:30 AM, Craig L Russell wrote:
    >
    >> Hi Andrus,
    >>
    >> I think you will find the enhancer to be a very valuable tool to
    >> use to improve performance and the usability of Cayenne for JPA.
    >> All of the players in JPA use the enhancement concept to advantage.
    >>
    >> It's probably worthwhile working through these issues. With Java
    >> SE 5 supporting agents, it is much more portable than with
    >> previous releases.
    >>
    >> Surefire plugin will might need to be adapted to use the agent
    >> with forked jvm. I don't understand why it would be necessary if
    >> you're running in the same vm. The agent applies to all but the
    >> system class loader IIRC.
    >>
    >> By the way, you might post to open-jpa-dev alias because they use
    >> surefire for testing and they apparently have made it work ok.
    >>
    >>> We can probably keep the enhancer as an optional extension for
    >>> "Cayenne-like" behavior, including such "insignificant" things
    >>> like lazy relationship loading.
    >>
    >> I think JPA users will expect lazy loading to work correctly. And
    >> it's not just for relationships. Any expensive field (e.g.
    >> relationship, LOB) will benefit from lazy loading semantics.
    >>
    >> Craig
    >>
    >> On Aug 9, 2006, at 6:43 AM, Andrus Adamchik wrote:
    >>
    >>> Can confirm what IIRC Bill has mentioned before - using "-
    >>> javaagent" option during integration testing with Maven breaks
    >>> miserably. I created a separate Maven project with a piece of
    >>> configuration like that:
    >>>
    >>> <plugin>
    >>> <groupId>org.apache.maven.plugins</groupId>
    >>> <artifactId>maven-surefire-plugin</artifactId>
    >>> <configuration>
    >>> <forkMode>(tried all of them)</forkMode>
    >>> <childDelegation>(tried true and false)</childDelegation>
    >>> <argLine>-javaagent:...</argLine>
    >>> </configuration>
    >>> </plugin>
    >>>
    >>> The configuration above would load the agent, but since Maven
    >>> Surefire plugin installs its own ClassLoader for the unit tests,
    >>> the agent doesn't work (I saw a number of errors depending on the
    >>> combination of parameters). Will probably have to do it with Ant.
    >>>
    >>> Also this almost make me want to rewrite the JPA context to
    >>> support true POJO's without an enhancer, as I suspect we'll be
    >>> plagued by enhancer related problems in various environments. We
    >>> can probably keep the enhancer as an optional extension for
    >>> "Cayenne-like" behavior, including such "insignificant" things
    >>> like lazy relationship loading.
    >>>
    >>> Andrus
    >>>
    >>
    >> Craig Russell
    >> Architect, Sun Java Enterprise System http://java.sun.com/products/
    >> jdo
    >> 408 276-5638 mailto:Craig.Russel..un.com
    >> P.S. A good JDO? O, Gasp!
    >>
    >
    >



    This archive was generated by hypermail 2.0.0 : Thu Aug 10 2006 - 16:05:42 EDT