FAQ
Hello all,

I am trying to use Cayenne within Axis2. I copied the three
configuration XML files into the classes folder for Axis2:

/opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

I can create the data context object but during runtime, data
context's entity resolver cannot find the mapped class and I get the
following:

"Class is not mapped with Cayenne"

However when I run the same application as standalone, I have no errors.

Any help much appreciated.

Best,
- Ajay

Search Discussions

  • Andrus Adamchik at Jul 19, 2007 at 7:34 am
    That is strange... I assume Cayenne jars are in "axis2/WEB-INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and I get the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay
  • Ajay H. Daptardar at Jul 20, 2007 at 6:15 pm
    Hi Andrus,

    The structure of the Axis2 archive (app.aar) is as follows:

    META-INF/
    META-INF/MANIFEST.MF
    META-INF/services.xml
    lib/
    lib/bcel.jar
    lib/cayenne.jar
    lib/jibx-bind.jar
    lib/jibx-extras.jar
    lib/jibx-genbinding.jar
    lib/jibx-genschema.jar
    lib/jibx-run.jar
    lib/mysql-connector-java-5.0.6-bin.jar
    lib/qdox-1.6.1.jar
    lib/stax-api.jar
    lib/wstx-asl.jar
    lib/xmlpull_1_1_4.jar
    lib/xpp3.jar
    app/<APPLICATION CLASSES>

    Cayenne jar is in the application's lib folder not axis'. After
    stepping through the debugger, I found out that even though the
    application can load the Cayenne data context, the entity resolver,
    when it PUTS object entities in the cache, it uses the name of the
    entity and when it tries to GET the object entity, it tries to use the
    oe.getJavaClass() which throws an exception. This is not logged and
    the comment there is:

    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...

    the Util.getJavaClass() fails to load the (application) class it seems.

    Thanks,
    Best,
    - Ajay




    On 7/19/07, Andrus Adamchik wrote:
    That is strange... I assume Cayenne jars are in "axis2/WEB-INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and I get the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay

    --
    The mind is everything; what you think, you become. -- Buddha
  • Andrus Adamchik at Jul 20, 2007 at 6:40 pm
    This felt like a nested ClassLoader issue from the beginning... I am
    not familiar with the Axis2 archive details, but is it possible to
    put Cayenne jar at the same level as the application classes?

    Alternatively you can try upgrading to 3.0M1 (you can grab an
    *unofficial* build from here: http://people.apache.org/~aadamchik/
    release/3.0M1/). 3.0 uses String class names as keys and should
    hopefully be free from this problem. Please let me know if that
    worked - we will definitely need to fix it if it is still broken in 3.0.
    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...
    Good catch. This is also obsolete in 3.0 - we can use commons
    logging. Let me clean it up.

    Andrus


    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...


    On Jul 20, 2007, at 9:15 PM, Ajay H. Daptardar wrote:

    Hi Andrus,

    The structure of the Axis2 archive (app.aar) is as follows:

    META-INF/
    META-INF/MANIFEST.MF
    META-INF/services.xml
    lib/
    lib/bcel.jar
    lib/cayenne.jar
    lib/jibx-bind.jar
    lib/jibx-extras.jar
    lib/jibx-genbinding.jar
    lib/jibx-genschema.jar
    lib/jibx-run.jar
    lib/mysql-connector-java-5.0.6-bin.jar
    lib/qdox-1.6.1.jar
    lib/stax-api.jar
    lib/wstx-asl.jar
    lib/xmlpull_1_1_4.jar
    lib/xpp3.jar
    app/<APPLICATION CLASSES>

    Cayenne jar is in the application's lib folder not axis'. After
    stepping through the debugger, I found out that even though the
    application can load the Cayenne data context, the entity resolver,
    when it PUTS object entities in the cache, it uses the name of the
    entity and when it tries to GET the object entity, it tries to use the
    oe.getJavaClass() which throws an exception. This is not logged and
    the comment there is:

    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...

    the Util.getJavaClass() fails to load the (application) class it
    seems.

    Thanks,
    Best,
    - Ajay




    On 7/19/07, Andrus Adamchik wrote:
    That is strange... I assume Cayenne jars are in "axis2/WEB-INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and I get the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay

    --
    The mind is everything; what you think, you become. -- Buddha
  • Ajay H. Daptardar at Jul 20, 2007 at 8:25 pm
    Hi Andrus,

    I tried the 3.0M1 build and am still getting the class not found error
    although manifest as a CayenneRuntimeException caused by
    ClassNotFoundException.

    Here is a trace:

    Caused by: org.apache.cayenne.CayenneRuntimeException: [v.3.0M1 Jul 16
    2007 22:17:38] Failed to load class com.app.AnnotationType:
    com.app.AnnotationType
    at org.apache.cayenne.map.ObjEntity.getJavaClass(ObjEntity.java:238)
    at org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor(PersistentDescriptorFactory.java:50)
    at org.apache.cayenne.reflect.ClassDescriptorMap.createDescriptor(ClassDescriptorMap.java:122)
    at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.checkDescriptorInitialized(LazyClassDescriptorDecorator.java:49)
    at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.createObject(LazyClassDescriptorDecorator.java:63)
    at org.apache.cayenne.access.DataContext.newObject(DataContext.java:752)
    ... 26 more
    Caused by: java.lang.ClassNotFoundException: com.app.AnnotationType
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at org.apache.cayenne.util.Util.getJavaClass(Util.java:566)
    at org.apache.cayenne.map.ObjEntity.getJavaClass(ObjEntity.java:235)
    ... 31 more

    The problem is not that Cayenne cannot be found, it occurs when
    Cayenne tries to load the mapped classes using the web app class
    loader. What I don't get is that why the web app class loader cannot
    load the classes.

    I am guessing that Axis2 creates a class loader for each web service,
    loads the application classes and the jars in the lib folder (thats
    why it finds Cayenne jars). But when Cayenne retrieves a class loader
    (WebappClassLoader), this class loader is probably the one for the
    Axis2 web service, not the one that Axis2 is using to load web
    services.

    Probably there is a way to get the class loader for the particular web
    service within the Axis2 (webapp) servlet.

    Best,
    - Ajay


    On 7/20/07, Andrus Adamchik wrote:
    This felt like a nested ClassLoader issue from the beginning... I am
    not familiar with the Axis2 archive details, but is it possible to
    put Cayenne jar at the same level as the application classes?

    Alternatively you can try upgrading to 3.0M1 (you can grab an
    *unofficial* build from here: http://people.apache.org/~aadamchik/
    release/3.0M1/). 3.0 uses String class names as keys and should
    hopefully be free from this problem. Please let me know if that
    worked - we will definitely need to fix it if it is still broken in 3.0.
    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...
    Good catch. This is also obsolete in 3.0 - we can use commons
    logging. Let me clean it up.

    Andrus


    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...


    On Jul 20, 2007, at 9:15 PM, Ajay H. Daptardar wrote:

    Hi Andrus,

    The structure of the Axis2 archive (app.aar) is as follows:

    META-INF/
    META-INF/MANIFEST.MF
    META-INF/services.xml
    lib/
    lib/bcel.jar
    lib/cayenne.jar
    lib/jibx-bind.jar
    lib/jibx-extras.jar
    lib/jibx-genbinding.jar
    lib/jibx-genschema.jar
    lib/jibx-run.jar
    lib/mysql-connector-java-5.0.6-bin.jar
    lib/qdox-1.6.1.jar
    lib/stax-api.jar
    lib/wstx-asl.jar
    lib/xmlpull_1_1_4.jar
    lib/xpp3.jar
    app/<APPLICATION CLASSES>

    Cayenne jar is in the application's lib folder not axis'. After
    stepping through the debugger, I found out that even though the
    application can load the Cayenne data context, the entity resolver,
    when it PUTS object entities in the cache, it uses the name of the
    entity and when it tries to GET the object entity, it tries to use the
    oe.getJavaClass() which throws an exception. This is not logged and
    the comment there is:

    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...

    the Util.getJavaClass() fails to load the (application) class it
    seems.

    Thanks,
    Best,
    - Ajay




    On 7/19/07, Andrus Adamchik wrote:
    That is strange... I assume Cayenne jars are in "axis2/WEB-INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and I get the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay

    --
    The mind is everything; what you think, you become. -- Buddha

    --
    The mind is everything; what you think, you become. -- Buddha
  • Ajay H. Daptardar at Jul 20, 2007 at 10:25 pm
    Hi Andrus,

    I managed to hack a fix. In the Util class, the getJavaClass method
    gets the class loader as:

    <code>

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

    if (classLoader == null) {
    classLoader = Util.class.getClassLoader();
    }

    </code>

    However (and I did verify this) the class loader is the one that
    tomcat uses for the Axis2 servlet. Here's how Axis2 uses class loaders


    Axis2 has the notion of service isolation where each service or module
    gets its own class loader. Using this class loader you can access any
    resource that you put into your service archive file.

    [See http://docs.huihoo.com/apache/axis/axis2-1.0-docs/xdocs/faq.html#b1]

    The fix was the following:

    <code>

    ClassLoader classLoader = null;

    if (classLoader == null) {
    classLoader = Util.class.getClassLoader();
    }

    </code>

    this correctly gets the class loader that Axis2 assigned to the particular WS.

    Best,
    - Ajay
    On 7/20/07, Ajay H. Daptardar wrote:
    Hi Andrus,

    I tried the 3.0M1 build and am still getting the class not found error
    although manifest as a CayenneRuntimeException caused by
    ClassNotFoundException.

    Here is a trace:

    Caused by: org.apache.cayenne.CayenneRuntimeException: [v.3.0M1 Jul 16
    2007 22:17:38] Failed to load class com.app.AnnotationType:
    com.app.AnnotationType
    at org.apache.cayenne.map.ObjEntity.getJavaClass(ObjEntity.java:238)
    at org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor(PersistentDescriptorFactory.java:50)
    at org.apache.cayenne.reflect.ClassDescriptorMap.createDescriptor(ClassDescriptorMap.java:122)
    at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.checkDescriptorInitialized(LazyClassDescriptorDecorator.java:49)
    at org.apache.cayenne.reflect.LazyClassDescriptorDecorator.createObject(LazyClassDescriptorDecorator.java:63)
    at org.apache.cayenne.access.DataContext.newObject(DataContext.java:752)
    ... 26 more
    Caused by: java.lang.ClassNotFoundException: com.app.AnnotationType
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at org.apache.cayenne.util.Util.getJavaClass(Util.java:566)
    at org.apache.cayenne.map.ObjEntity.getJavaClass(ObjEntity.java:235)
    ... 31 more

    The problem is not that Cayenne cannot be found, it occurs when
    Cayenne tries to load the mapped classes using the web app class
    loader. What I don't get is that why the web app class loader cannot
    load the classes.

    I am guessing that Axis2 creates a class loader for each web service,
    loads the application classes and the jars in the lib folder (thats
    why it finds Cayenne jars). But when Cayenne retrieves a class loader
    (WebappClassLoader), this class loader is probably the one for the
    Axis2 web service, not the one that Axis2 is using to load web
    services.

    Probably there is a way to get the class loader for the particular web
    service within the Axis2 (webapp) servlet.

    Best,
    - Ajay


    On 7/20/07, Andrus Adamchik wrote:
    This felt like a nested ClassLoader issue from the beginning... I am
    not familiar with the Axis2 archive details, but is it possible to
    put Cayenne jar at the same level as the application classes?

    Alternatively you can try upgrading to 3.0M1 (you can grab an
    *unofficial* build from here: http://people.apache.org/~aadamchik/
    release/3.0M1/). 3.0 uses String class names as keys and should
    hopefully be free from this problem. Please let me know if that
    worked - we will definitely need to fix it if it is still broken in 3.0.
    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...
    Good catch. This is also obsolete in 3.0 - we can use commons
    logging. Let me clean it up.

    Andrus


    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...


    On Jul 20, 2007, at 9:15 PM, Ajay H. Daptardar wrote:

    Hi Andrus,

    The structure of the Axis2 archive (app.aar) is as follows:

    META-INF/
    META-INF/MANIFEST.MF
    META-INF/services.xml
    lib/
    lib/bcel.jar
    lib/cayenne.jar
    lib/jibx-bind.jar
    lib/jibx-extras.jar
    lib/jibx-genbinding.jar
    lib/jibx-genschema.jar
    lib/jibx-run.jar
    lib/mysql-connector-java-5.0.6-bin.jar
    lib/qdox-1.6.1.jar
    lib/stax-api.jar
    lib/wstx-asl.jar
    lib/xmlpull_1_1_4.jar
    lib/xpp3.jar
    app/<APPLICATION CLASSES>

    Cayenne jar is in the application's lib folder not axis'. After
    stepping through the debugger, I found out that even though the
    application can load the Cayenne data context, the entity resolver,
    when it PUTS object entities in the cache, it uses the name of the
    entity and when it tries to GET the object entity, it tries to use the
    oe.getJavaClass() which throws an exception. This is not logged and
    the comment there is:

    // DataMaps can contain all kinds of garbage...
    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is used on
    the client, log4J is
    // a no-go...

    the Util.getJavaClass() fails to load the (application) class it
    seems.

    Thanks,
    Best,
    - Ajay




    On 7/19/07, Andrus Adamchik wrote:
    That is strange... I assume Cayenne jars are in "axis2/WEB-INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and I get the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay

    --
    The mind is everything; what you think, you become. -- Buddha

    --
    The mind is everything; what you think, you become. -- Buddha

    --
    The mind is everything; what you think, you become. -- Buddha
  • Andrus Adamchik at Jul 21, 2007 at 8:16 am
    Glad you solved the problem, but now it presents a challenge to us -
    how do we support Axis class loading mechanism out of the box without
    breaking everything else (thread class loader so far worked in all
    environments I've tried...) I guess we need to do more research and
    testing. Can I ask you a favor - could you please open a bug report
    in Jira with a link to this discussion, so that it won't get forgotten:

    http://issues.apache.org/cayenne/

    Thanks
    Andrus

    On Jul 21, 2007, at 1:25 AM, Ajay H. Daptardar wrote:

    Hi Andrus,

    I managed to hack a fix. In the Util class, the getJavaClass method
    gets the class loader as:

    <code>

    ClassLoader classLoader = Thread.currentThread
    ().getContextClassLoader();

    if (classLoader == null) {
    classLoader = Util.class.getClassLoader();
    }

    </code>

    However (and I did verify this) the class loader is the one that
    tomcat uses for the Axis2 servlet. Here's how Axis2 uses class loaders


    Axis2 has the notion of service isolation where each service or module
    gets its own class loader. Using this class loader you can access any
    resource that you put into your service archive file.

    [See http://docs.huihoo.com/apache/axis/axis2-1.0-docs/xdocs/
    faq.html#b1]

    The fix was the following:

    <code>

    ClassLoader classLoader = null;

    if (classLoader == null) {
    classLoader = Util.class.getClassLoader();
    }

    </code>

    this correctly gets the class loader that Axis2 assigned to the
    particular WS.

    Best,
    - Ajay
    On 7/20/07, Ajay H. Daptardar wrote:
    Hi Andrus,

    I tried the 3.0M1 build and am still getting the class not found
    error
    although manifest as a CayenneRuntimeException caused by
    ClassNotFoundException.

    Here is a trace:

    Caused by: org.apache.cayenne.CayenneRuntimeException: [v.3.0M1
    Jul 16
    2007 22:17:38] Failed to load class com.app.AnnotationType:
    com.app.AnnotationType
    at org.apache.cayenne.map.ObjEntity.getJavaClass
    (ObjEntity.java:238)
    at
    org.apache.cayenne.reflect.PersistentDescriptorFactory.getDescriptor(
    PersistentDescriptorFactory.java:50)
    at
    org.apache.cayenne.reflect.ClassDescriptorMap.createDescriptor
    (ClassDescriptorMap.java:122)
    at
    org.apache.cayenne.reflect.LazyClassDescriptorDecorator.checkDescript
    orInitialized(LazyClassDescriptorDecorator.java:49)
    at
    org.apache.cayenne.reflect.LazyClassDescriptorDecorator.createObject(
    LazyClassDescriptorDecorator.java:63)
    at org.apache.cayenne.access.DataContext.newObject
    (DataContext.java:752)
    ... 26 more
    Caused by: java.lang.ClassNotFoundException: com.app.AnnotationType
    at org.apache.catalina.loader.WebappClassLoader.loadClass
    (WebappClassLoader.java:1359)
    at org.apache.catalina.loader.WebappClassLoader.loadClass
    (WebappClassLoader.java:1205)
    at java.lang.ClassLoader.loadClassInternal
    (ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at org.apache.cayenne.util.Util.getJavaClass(Util.java:566)
    at org.apache.cayenne.map.ObjEntity.getJavaClass
    (ObjEntity.java:235)
    ... 31 more

    The problem is not that Cayenne cannot be found, it occurs when
    Cayenne tries to load the mapped classes using the web app class
    loader. What I don't get is that why the web app class loader cannot
    load the classes.

    I am guessing that Axis2 creates a class loader for each web service,
    loads the application classes and the jars in the lib folder (thats
    why it finds Cayenne jars). But when Cayenne retrieves a class loader
    (WebappClassLoader), this class loader is probably the one for the
    Axis2 web service, not the one that Axis2 is using to load web
    services.

    Probably there is a way to get the class loader for the particular
    web
    service within the Axis2 (webapp) servlet.

    Best,
    - Ajay


    On 7/20/07, Andrus Adamchik wrote:
    This felt like a nested ClassLoader issue from the beginning... I am
    not familiar with the Axis2 archive details, but is it possible to
    put Cayenne jar at the same level as the application classes?

    Alternatively you can try upgrading to 3.0M1 (you can grab an
    *unofficial* build from here: http://people.apache.org/~aadamchik/
    release/3.0M1/). 3.0 uses String class names as keys and should
    hopefully be free from this problem. Please let me know if that
    worked - we will definitely need to fix it if it is still broken
    in 3.0.
    // DataMaps can contain all kinds of
    garbage...
    // TODO (Andrus, 10/18/2005) it would
    be nice
    to log something
    // here, but since EntityResolver is
    used on
    the client, log4J is
    // a no-go...
    Good catch. This is also obsolete in 3.0 - we can use commons
    logging. Let me clean it up.

    Andrus


    // TODO (Andrus, 10/18/2005) it would be nice
    to log something
    // here, but since EntityResolver is
    used on
    the client, log4J is
    // a no-go...


    On Jul 20, 2007, at 9:15 PM, Ajay H. Daptardar wrote:

    Hi Andrus,

    The structure of the Axis2 archive (app.aar) is as follows:

    META-INF/
    META-INF/MANIFEST.MF
    META-INF/services.xml
    lib/
    lib/bcel.jar
    lib/cayenne.jar
    lib/jibx-bind.jar
    lib/jibx-extras.jar
    lib/jibx-genbinding.jar
    lib/jibx-genschema.jar
    lib/jibx-run.jar
    lib/mysql-connector-java-5.0.6-bin.jar
    lib/qdox-1.6.1.jar
    lib/stax-api.jar
    lib/wstx-asl.jar
    lib/xmlpull_1_1_4.jar
    lib/xpp3.jar
    app/<APPLICATION CLASSES>

    Cayenne jar is in the application's lib folder not axis'. After
    stepping through the debugger, I found out that even though the
    application can load the Cayenne data context, the entity
    resolver,
    when it PUTS object entities in the cache, it uses the name of
    the
    entity and when it tries to GET the object entity, it tries to
    use the
    oe.getJavaClass() which throws an exception. This is not
    logged and
    the comment there is:

    // DataMaps can contain all kinds of
    garbage...
    // TODO (Andrus, 10/18/2005) it would
    be nice
    to log something
    // here, but since EntityResolver is
    used on
    the client, log4J is
    // a no-go...

    the Util.getJavaClass() fails to load the (application) class it
    seems.

    Thanks,
    Best,
    - Ajay




    On 7/19/07, Andrus Adamchik wrote:
    That is strange... I assume Cayenne jars are in "axis2/WEB-
    INF/lib",
    and not in some shared location?

    Andrus
    On Jul 18, 2007, at 11:53 PM, Ajay H. Daptardar wrote:
    Hello all,

    I am trying to use Cayenne within Axis2. I copied the three
    configuration XML files into the classes folder for Axis2:

    /opt/apache-tomcat-6.0.13/webapps/axis2/WEB-INF/classes

    I can create the data context object but during runtime, data
    context's entity resolver cannot find the mapped class and
    I get
    the
    following:

    "Class is not mapped with Cayenne"

    However when I run the same application as standalone, I
    have no
    errors.

    Any help much appreciated.

    Best,
    - Ajay

    --
    The mind is everything; what you think, you become. -- Buddha

    --
    The mind is everything; what you think, you become. -- Buddha

    --
    The mind is everything; what you think, you become. -- Buddha
  • Ajay H. Daptardar at Jul 23, 2007 at 12:53 am
    I've opened a bug report in JIRA. I am not sure if using the class
    loader for the Util class would break other things. I am guessing it
    would be at least as appropriate as the class loader from the current
    thread.

    Thanks,
    - Ajay
    On 7/21/07, Andrus Adamchik wrote:
    Glad you solved the problem, but now it presents a challenge to us -
    how do we support Axis class loading mechanism out of the box without
    breaking everything else (thread class loader so far worked in all
    environments I've tried...) I guess we need to do more research and
    testing. Can I ask you a favor - could you please open a bug report
    in Jira with a link to this discussion, so that it won't get forgotten:

    http://issues.apache.org/cayenne/

    Thanks
    Andrus
  • Andrus Adamchik at Jul 23, 2007 at 7:05 am

    On Jul 23, 2007, at 3:53 AM, Ajay H. Daptardar wrote:

    I've opened a bug report in JIRA. Thanks!
    I am not sure if using the class loader for the Util class would
    break other things.
    It probably will if the app classes are coming from the downstream
    class loader from Cayenne classes. We need to test a few J2EE
    scenarios...

    Andrus

    Thanks,
    - Ajay
    On 7/21/07, Andrus Adamchik wrote:
    Glad you solved the problem, but now it presents a challenge to us -
    how do we support Axis class loading mechanism out of the box without
    breaking everything else (thread class loader so far worked in all
    environments I've tried...) I guess we need to do more research and
    testing. Can I ask you a favor - could you please open a bug report
    in Jira with a link to this discussion, so that it won't get
    forgotten:

    http://issues.apache.org/cayenne/

    Thanks
    Andrus

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupuser @
categoriescayenne
postedJul 18, '07 at 8:53p
activeJul 23, '07 at 7:05a
posts9
users2
websitecayenne.apache.org

People

Translate

site design / logo © 2022 Grokbase