Inheritance in Kodo JDO 3.1.0

Hi
I am implementing inheritance in 2 classes and buys battling with it.
I resorted to using the examples from the Kodo documentation and it is
still not working.
I am following the example in the documentation by the letter and no
success. The subclass Tabloid is never generated. When I look at the
generated mapping file - the following is generated.
<mapping>
<package name="biz.lautus.pfa.domain.test.kodo.vertical">
<class name="Magazine">
<jdbc-class-map type="base" pk-column="JDOID"
table="MAGAZINE"/>
<jdbc-version-ind type="version-number" column="JDOVERSION"/>
<jdbc-class-ind type="in-class-name" column="JDOCLASS"/>
<field name="title">
<jdbc-field-map type="value" column="TITLE"/>
</field>
</class>
<class name="Tabloid">
<jdbc-class-map type="flat"/>
<field name="tabloidType">
<jdbc-field-map type="value" column="TABLOIDTYPE"/>
</field>
</class>
</package>
</mapping>
What I am doing wrong?
Must I only specify a jdo file or must a start to modify mapping files as
well?
Any help will be greatly appreciated
My output from kodo.log is also at the bottom of the message...
Here is the Java source and the jdo file.
Magazine.java
package biz.lautus.pfa.domain.test.kodo.vertical;
public class Magazine
private String title;
Tabloid.java
package biz.lautus.pfa.domain.test.kodo.vertical;
public class Tabloid extends Magazine
private String tabloidType;
package.jdo
<?xml version="1.0"?>
<jdo>
<package name="biz.lautus.pfa.domain.test.kodo.vertical">
<class name="Magazine">
<extension vendor-name="kodo" key="jdbc-class-map" value="vertical">
<extension vendor-name="kodo" key="table" value="MAGAZINE"/>
<extension vendor-name="kodo" key="pk-column" value="JDOID"/>
</extension>
</class>
<class name="Tabloid" persistence-capable-superclass="Magazine">
<extension vendor-name="kodo" key="jdbc-class-map" value="vertical">
<extension vendor-name="kodo" key="table" value="TABLOID"/>
<extension vendor-name="kodo" key="ref-column.JDOID"
value="MAG_ID"/>
</extension>
</class>
</package>
</jdo>
output from kodo.log
348 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Magazine" with action "refresh".
492 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Tabloid" with action "refresh".
497 INFO [main] kodo.Tool - Recording mapping and schema changes.
618 TRACE [main] kodo.jdbc.SQL - <t 22996593, conn 18434638> [106 ms]
executing stmnt 25609906 CREATE TABLE MAGAZINE (JDOCLASS VARCHAR(255),
JDOID int8 NOT NULL, JDOVERSION int4, TABLOIDTYPE VARCHAR(255), TITLE
VARCHAR(255), CONSTRAINT P_MAGAZINE PRIMARY KEY (JDOID))
622 TRACE [main] kodo.jdbc.SQL - <t 22996593, conn 18434638> [4 ms]
executing stmnt 14651230 CREATE INDEX I_MGAZINE_JDOCLASS ON MAGAZINE
(JDOCLASS)
626 TRACE [main] kodo.jdbc.SQL - <t 22996593, conn 18434638> [3 ms]
executing stmnt 20812788 CREATE INDEX I_MGAZINE_JDOVERSION ON MAGAZINE
(JDOVERSION)
638 TRACE [main] kodo.jdbc.SQL - <t 22996593, conn 18434638> [7 ms]
executing stmnt 29140465 CREATE TABLE JDO_SEQUENCE (ID SMALLINT NOT NULL,
SEQUENCE_VALUE int8, PRIMARY KEY (ID))
350 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Magazine" with action "drop".
449 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Tabloid" with action "drop".
449 INFO [main] kodo.Tool - Recording mapping and schema changes.
348 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Magazine" with action "refresh".
489 INFO [main] kodo.Tool - Mapping tool running on type "class
biz.lautus.pfa.domain.test.kodo.vertical.Tabloid" with action "refresh".
495 INFO [main] kodo.Tool - Recording mapping and schema changes.

Rudi-
What examples can you give me today? Any example of either horizontal or
vertical subclass mapping will work for me. I just do not want to use flat.Following are the mapping files for the samples we will include in the
next 3.2 beta. They are completely unsupported (until, at least, 3.2
final is released), but they may help you get on the right track.
Note that they are using the .mapping file format, not the .jdo metadata
format for mappings: you will need to either convert them to the .jdo
mapping format, or else switch to using the "file" MappingFactory. The
different mappings represent an identical object model, just using
different inheritance strategies.
Sample using Flat Mapping:
<?xml version="1.0" encoding="UTF-8"?>
<mapping>
<package name="samples.models.school.flat">
<class name="FlatAddress">
<jdbc-class-map type="base" pk-column="PK" table="SCF_ADDRESS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="metadata-value" column="ADDRESS_TYPE"/>
<field name="city">
<jdbc-field-map type="value" column="CITY"/>
</field>
<field name="phone">
<jdbc-field-map type="value" column="PHONE"/>
</field>
<field name="state">
<jdbc-field-map type="value" column="STATE"/>
</field>
<field name="street">
<jdbc-field-map type="value" column="STREET"/>
</field>
<field name="zip">
<jdbc-field-map type="value" column="ZIP"/>
</field>
</class>
<class name="FlatAdmin">
<jdbc-class-map type="flat"/>
<field name="certifications">
<jdbc-field-map type="collection"
                         element-column="ELEMENT" ref-column.PK="PK"
                         table="SCF_PERS_CERTS"/>
</field>
</class>
<class name="FlatCourse">
<jdbc-class-map type="base" pk-column="PK" table="SCF_COURSE"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="details">
<jdbc-field-map type="value" column="DETAILS"/>
</field>
<field name="name">
<jdbc-field-map type="value" column="NAME0"/>
</field>
<field name="shortDescription">
<jdbc-field-map type="value" column="SHORTDESCRIPTION"/>
</field>
</class>
<class name="FlatEmployee">
<jdbc-class-map type="flat"/>
<field name="hireDate">
<jdbc-field-map type="value" column="HIREDATE"/>
</field>
<field name="jobTitle">
<jdbc-field-map type="value" column="JOBTITLE"/>
</field>
<field name="manager">
<jdbc-field-map type="one-one" column.PK="MANAGER_PK"/>
</field>
<field name="office">
<jdbc-field-map type="value" column="OFFICE"/>
</field>
<field name="salary">
<jdbc-field-map type="value" column="SALARY"/>
</field>
</class>
<class name="FlatHomeAddress">
<jdbc-class-map type="flat"/>
<field name="emailAddress">
<jdbc-field-map type="value" column="EMAILADDRESS"/>
</field>
</class>
<class name="FlatParent">
<jdbc-class-map type="flat"/>
<field name="children">
<jdbc-field-map type="many-many"
                         element-column.PK="CHILDREN_PK"
                         ref-column.PK="PARENT_PK"
                         table="SCF_PARENTHOOD"/>
</field>
<field name="workAddress">
<jdbc-field-map type="one-one" column.PK="WORK_ADDRESS_ID"/>
</field>
</class>
<class name="FlatPerson">
<jdbc-class-map type="base" pk-column="PK" table="SCF_PERSON"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="metadata-value" column="PERSON_TYPE"/>
<field name="dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
</class>
<class name="FlatScheduledClass">
<jdbc-class-map type="base" pk-column="PK" table="SCF_SCH_CLASS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="course">
<jdbc-field-map type="one-one" column.PK="COURSE_PK"/>
</field>
<field name="students">
<jdbc-field-map type="many-many"
                         element-column.PK="STUDENTS_PK" ref-column.PK="PK"
                         table="SCF_SCH_STUDENTS"/>
</field>
<field name="teacher">
<jdbc-field-map type="one-one" column.PK="TEACHER_PK"/>
</field>
<field name="classPeriod">
<jdbc-field-map type="value" column="PERIOD"/>
</field>
</class>
<class name="FlatStaff">
<jdbc-class-map type="flat"/>
<field name="hrContact">
<jdbc-field-map type="one-one" column.PK="HRCONTACT_PK"/>
</field>
</class>
<class name="FlatStudent">
<jdbc-class-map type="flat"/>
<field name="grade">
<jdbc-field-map type="value" column="GRADE"/>
</field>
<field name="parents">
<jdbc-field-map type="many-many"
                         element-column.PK="PARENT_PK"
                         ref-column.PK="CHILDREN_PK"
                         table="SCF_PARENTHOOD"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHCLASS_PK" ref-column.PK="PK"
                         table="SCF_PERS_SCHED"/>
</field>
</class>
<class name="FlatTeacher">
<jdbc-class-map type="flat"/>
<field name="degree">
<jdbc-field-map type="value" column="DEGREE"/>
</field>
<field name="qualifiedCourses">
<jdbc-field-map type="many-many"
                         element-column.PK="QUALCOURSES_PK" ref-column.PK="PK"
                         table="SCF_PERS_QUALIFS"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHEDCLASS_PK" ref-column.PK="PK"
                         table="SCF_PERS_SCHED"/>
</field>
</class>
<class name="FlatWorkAddress">
<jdbc-class-map type="flat"/>
<field name="company">
<jdbc-field-map type="value" column="COMPANY"/>
</field>
<field name="mailStop">
<jdbc-field-map type="value" column="MAILSTOP"/>
</field>
</class>
</package>
</mapping>
Sample using Vertical Mapping:
<?xml version="1.0" encoding="UTF-8"?>
<mapping>
<package name="samples.models.school.vertical">
<class name="VerticalAddress">
<jdbc-class-map type="base" pk-column="PK" table="SCV_ADDRESS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="metadata-value" column="ADDRESS_TYPE"/>
<field name="city">
<jdbc-field-map type="value" column="CITY"/>
</field>
<field name="phone">
<jdbc-field-map type="value" column="PHONE"/>
</field>
<field name="state">
<jdbc-field-map type="value" column="STATE"/>
</field>
<field name="street">
<jdbc-field-map type="value" column="STREET"/>
</field>
<field name="zip">
<jdbc-field-map type="value" column="ZIP"/>
</field>
</class>
<class name="VerticalAdmin">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_ADMIN"/>
<field name="certifications">
<jdbc-field-map type="collection" element-column="ELEMENT"
                         ref-column.PK="PK" table="SCV_CERTIFICATIONS"/>
</field>
</class>
<class name="VerticalCourse">
<jdbc-class-map type="base" pk-column="PK" table="SCV_COURSE"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="details">
<jdbc-field-map type="value" column="DETAILS"/>
</field>
<field name="name">
<jdbc-field-map type="value" column="NAME0"/>
</field>
<field name="shortDescription">
<jdbc-field-map type="value" column="SHORTDESCRIPTION"/>
</field>
</class>
<class name="VerticalEmployee">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_EMPLOYEE"/>
<field name="hireDate">
<jdbc-field-map type="value" column="HIREDATE"/>
</field>
<field name="jobTitle">
<jdbc-field-map type="value" column="JOBTITLE"/>
</field>
<field name="manager">
<jdbc-field-map type="one-one" column.PK="MANAGER_PK"/>
</field>
<field name="office">
<jdbc-field-map type="value" column="OFFICE"/>
</field>
<field name="salary">
<jdbc-field-map type="value" column="SALARY"/>
</field>
</class>
<class name="VerticalHomeAddress">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_HOMEADDRESS"/>
<field name="emailAddress">
<jdbc-field-map type="value" column="EMAILADDRESS"/>
</field>
</class>
<class name="VerticalParent">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_PARENT"/>
<field name="children">
<jdbc-field-map type="many-many"
                         element-column.PK="CHILDREN_PK"
                         ref-column.PK="PARENT_PK"
                         table="SCV_PARENTHOOD"/>
</field>
<field name="workAddress">
<jdbc-field-map type="one-one" column.PK="WORKADDRESS_PK"/>
</field>
</class>
<class name="VerticalPerson">
<jdbc-class-map type="base" pk-column="PK" table="SCV_PERSON"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="metadata-value" column="PERSON_TYPE"/>
<field name="dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
</class>
<class name="VerticalScheduledClass">
<jdbc-class-map type="base" pk-column="PK"
                    table="SCV_SCHEDULEDCLASS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="classPeriod">
<jdbc-field-map type="value" column="CLASSPERIOD"/>
</field>
<field name="course">
<jdbc-field-map type="one-one" column.PK="COURSE_PK"/>
</field>
<field name="students">
<jdbc-field-map type="many-many"
                         element-column.PK="STUDENTS_PK" ref-column.PK="PK"
                         table="SCV_STUDENTS"/>
</field>
<field name="teacher">
<jdbc-field-map type="one-one" column.PK="TEACHER_PK"/>
</field>
</class>
<class name="VerticalStaff">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_STAFF"/>
<field name="hrContact">
<jdbc-field-map type="one-one" column.PK="HRCONTACT_PK"/>
</field>
</class>
<class name="VerticalStudent">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_STUDENT"/>
<field name="grade">
<jdbc-field-map type="value" column="GRADE"/>
</field>
<field name="parents">
<jdbc-field-map type="many-many"
                         element-column.PK="PARENT_PK"
                         ref-column.PK="CHILDREN_PK"
                         table="SCV_PARENTHOOD"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHEDULEDCLASSES_PK"
                         ref-column.PK="PK" table="SCV_SCHEDULEDCLASSES"/>
</field>
</class>
<class name="VerticalTeacher">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_TEACHER"/>
<field name="degree">
<jdbc-field-map type="value" column="DEGREE"/>
</field>
<field name="qualifiedCourses">
<jdbc-field-map type="many-many"
                         element-column.PK="QUALIFIEDCOURSES_PK"
                         ref-column.PK="PK" table="SCV_QUALIFIEDCOURSES"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHEDULEDCLASSES_PK"
                         ref-column.PK="PK" table="SCV_TEACHER_CLASSES"/>
</field>
</class>
<class name="VerticalWorkAddress">
<jdbc-class-map type="vertical" ref-column.PK="PK"
                    table="SCV_WORKADDRESS"/>
<field name="company">
<jdbc-field-map type="value" column="COMPANY"/>
</field>
<field name="mailStop">
<jdbc-field-map type="value" column="MAILSTOP"/>
</field>
</class>
</package>
</mapping>
Sample using Horizontal Mapping:
<?xml version="1.0" encoding="UTF-8"?>
<mapping>
<package name="samples.models.school.horizontal">
<class name="HorizontalAddress">
<jdbc-class-map type="horizontal"/>
</class>
<class name="HorizontalAdmin">
<jdbc-class-map type="base" pk-column="PK" table="SCH_ADMIN"/>
<jdbc-version-ind type="state-image"/>
<field name="certifications">
<jdbc-field-map type="collection"
                         element-column="ELEMENT" ref-column.PK="PK"
                         table="SCH_ADMIN_CERTS"/>
</field>
<field name="HorizontalPerson.dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="HorizontalPerson.firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="HorizontalPerson.homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="HorizontalPerson.lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="HorizontalPerson.status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
<field name="HorizontalEmployee.hireDate">
<jdbc-field-map type="value" column="HIREDATE"/>
</field>
<field name="HorizontalEmployee.jobTitle">
<jdbc-field-map type="value" column="JOBTITLE"/>
</field>
<field name="HorizontalEmployee.manager">
<jdbc-field-map type="pc" column="MANAGER"/>
</field>
<field name="HorizontalEmployee.office">
<jdbc-field-map type="value" column="OFFICE"/>
</field>
<field name="HorizontalEmployee.salary">
<jdbc-field-map type="value" column="SALARY"/>
</field>
</class>
<class name="HorizontalCourse">
<jdbc-class-map type="base" pk-column="PK" table="SCH_COURSE"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="details">
<jdbc-field-map type="value" column="DETAILS"/>
</field>
<field name="name">
<jdbc-field-map type="value" column="NAME0"/>
</field>
<field name="shortDescription">
<jdbc-field-map type="value" column="SHORTDESCRIPTION"/>
</field>
</class>
<class name="HorizontalEmployee">
<jdbc-class-map type="horizontal"/>
</class>
<class name="HorizontalHomeAddress">
<jdbc-class-map type="base" pk-column="PK" table="SCH_HOMEADDRESS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="emailAddress">
<jdbc-field-map type="value" column="EMAILADDRESS"/>
</field>
<field name="HorizontalAddress.city">
<jdbc-field-map type="value" column="CITY"/>
</field>
<field name="HorizontalAddress.phone">
<jdbc-field-map type="value" column="PHONE"/>
</field>
<field name="HorizontalAddress.state">
<jdbc-field-map type="value" column="STATE"/>
</field>
<field name="HorizontalAddress.street">
<jdbc-field-map type="value" column="STREET"/>
</field>
<field name="HorizontalAddress.zip">
<jdbc-field-map type="value" column="ZIP"/>
</field>
</class>
<class name="HorizontalParent">
<jdbc-class-map type="base" pk-column="PK" table="SCH_PARENT"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="children">
<jdbc-field-map type="many-many"
                         element-column.PK="CHILDREN_PK"
                         ref-column.PK="PARENT_PK"
                         table="SCH_PARENTHOOD"/>
</field>
<field name="HorizontalPerson.dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="HorizontalPerson.firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="HorizontalPerson.homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="HorizontalPerson.lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="HorizontalPerson.status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
<field name="workAddress">
<jdbc-field-map type="one-one" column.PK="WORKADDRESS_PK"/>
</field>
</class>
<class name="HorizontalPerson">
<jdbc-class-map type="horizontal"/>
</class>
<class name="HorizontalScheduledClass">
<jdbc-class-map type="base" pk-column="PK"
                         table="SCH_SCHEDULEDCLASS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="classPeriod">
<jdbc-field-map type="value" column="CLASSPERIOD"/>
</field>
<field name="course">
<jdbc-field-map type="one-one" column.PK="COURSE_PK"/>
</field>
<field name="students">
<jdbc-field-map type="many-many"
                         element-column.PK="STUDENTS_PK" ref-column.PK="PK"
                         table="SCH_CLASS_STUDENT"/>
</field>
<field name="teacher">
<jdbc-field-map type="one-one" column.PK="TEACHER_PK"/>
</field>
</class>
<class name="HorizontalStaff">
<jdbc-class-map type="base" pk-column="PK" table="SCH_STAFF"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="hrContact">
<jdbc-field-map type="one-one" column.PK="HRCONTACT_PK"/>
</field>
<field name="HorizontalEmployee.hireDate">
<jdbc-field-map type="value" column="HIREDATE"/>
</field>
<field name="HorizontalEmployee.jobTitle">
<jdbc-field-map type="value" column="JOBTITLE"/>
</field>
<field name="HorizontalEmployee.manager">
<jdbc-field-map type="pc" column="MANAGER"/>
</field>
<field name="HorizontalEmployee.office">
<jdbc-field-map type="value" column="OFFICE"/>
</field>
<field name="HorizontalEmployee.salary">
<jdbc-field-map type="value" column="SALARY"/>
</field>
<field name="HorizontalPerson.dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="HorizontalPerson.firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="HorizontalPerson.homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="HorizontalPerson.lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="HorizontalPerson.status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
</class>
<class name="HorizontalStudent">
<jdbc-class-map type="base" pk-column="PK" table="SCH_STUDENT"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="grade">
<jdbc-field-map type="value" column="GRADE"/>
</field>
<field name="parents">
<jdbc-field-map type="many-many"
                         element-column.PK="PARENT_PK"
                         ref-column.PK="CHILDREN_PK"
                         table="SCH_PARENTHOOD"/>
</field>
<field name="HorizontalPerson.dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="HorizontalPerson.firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="HorizontalPerson.homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="HorizontalPerson.lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="HorizontalPerson.status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHEDULEDCLASSES_PK" ref-column.PK="PK"
                         table="SCH_SCHEDULEDCLASSES"/>
</field>
</class>
<class name="HorizontalTeacher">
<jdbc-class-map type="base" pk-column="PK" table="SCH_TEACHER"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="degree">
<jdbc-field-map type="value" column="DEGREE"/>
</field>
<field name="qualifiedCourses">
<jdbc-field-map type="many-many"
                         element-column.PK="QUALIFIEDCOURSES_PK"
                         ref-column.PK="PK" table="SCH_TEACHER_QUALS"/>
</field>
<field name="HorizontalEmployee.hireDate">
<jdbc-field-map type="value" column="HIREDATE"/>
</field>
<field name="HorizontalEmployee.jobTitle">
<jdbc-field-map type="value" column="JOBTITLE"/>
</field>
<field name="HorizontalEmployee.manager">
<jdbc-field-map type="pc" column="MANAGER"/>
</field>
<field name="HorizontalEmployee.office">
<jdbc-field-map type="value" column="OFFICE"/>
</field>
<field name="HorizontalEmployee.salary">
<jdbc-field-map type="value" column="SALARY"/>
</field>
<field name="HorizontalPerson.dateOfBirth">
<jdbc-field-map type="value" column="DATEOFBIRTH"/>
</field>
<field name="HorizontalPerson.firstName">
<jdbc-field-map type="value" column="FIRSTNAME"/>
</field>
<field name="HorizontalPerson.homeAddress">
<jdbc-field-map type="one-one" column.PK="HOMEADDRESS_PK"/>
</field>
<field name="HorizontalPerson.lastName">
<jdbc-field-map type="value" column="LASTNAME"/>
</field>
<field name="HorizontalPerson.status">
<jdbc-field-map type="value" column="STATUS"/>
</field>
<field name="scheduledClasses">
<jdbc-field-map type="many-many"
                         element-column.PK="SCHEDULEDCLASSES_PK"
                         ref-column.PK="PK" table="SCH_TEACHER_CLASSES"/>
</field>
</class>
<class name="HorizontalWorkAddress">
<jdbc-class-map type="base" pk-column="PK" table="SCH_WORKADDRESS"/>
<jdbc-version-ind type="state-image"/>
<jdbc-class-ind type="none"/>
<field name="company">
<jdbc-field-map type="value" column="COMPANY"/>
</field>
<field name="mailStop">
<jdbc-field-map type="value" column="MAILSTOP"/>
</field>
<field name="HorizontalAddress.city">
<jdbc-field-map type="value" column="CITY"/>
</field>
<field name="HorizontalAddress.phone">
<jdbc-field-map type="value" column="PHONE"/>
</field>
<field name="HorizontalAddress.state">
<jdbc-field-map type="value" column="STATE"/>
</field>
<field name="HorizontalAddress.street">
<jdbc-field-map type="value" column="STREET"/>
</field>
<field name="HorizontalAddress.zip">
<jdbc-field-map type="value" column="ZIP"/>
</field>
</class>
</package>
</mapping>
In article <[email protected]>, Rudi Engelbrecht wrote:
Abe White wrote:
That is exactly what I am doing, I am copying it verbatim from the docs. I
am using the base tag.
Not according to the code you posted previously. In that code, your
subclass was using a jdbc-class-map type of "horizontal" rather than
"base". Can you double check?I used base in the code - see the previous article where I explain that I
changed horizontal to base as well. When it is base the mappingtool
crashes with a null pointer as explained in the previous article.
When it is horizontal the mappingtool does not crash, but does not of
course create the table. <-- this is not my problem. My problem is that
specifying base the mappingtool crashes.
Also, are you using the "metadata" mapping factory?Yes, I enabled it in the kodo.properties file...
Do you guys actually have a working example of either horizontal or
vertical subclass mapping? With source?
We will in the next 3.2 beta; we've already created several new model
samples internally.What examples can you give me today? Any example of either horizontal or
vertical subclass mapping will work for me. I just do not want to use flat.--
Marc Prud'hommeaux
SolarMetric Inc.

Similar Messages

  • Kodo JDO 2.3.4 now available

    All,
    Kodo JDO 2.3.4 is now available at http://www.solarmetric.com/. This release
    contains a number of bugfixes and a couple enhancements to the reverse
    schema tool.
    New features
    * The schema generator can now accept a list of tables to generate.
    * The reverse mapping tool has additional options for using foreign
    key names to generate relation names, generating primitive wrapper-type
    fields if a column is nullable, and allowing primary keys on many-to-many
    join tables.
    Bugfixes
    * Fixed problems with many-to-many relations between tables that use
    vertical inheritance.
    * Fixed bug in schematool that caused it to not generate primary key
    columns in subclass tables when using datastore identity + custom
    names + vertical inheritance.
    * Fixed serp library conflict between reverse mapping tool and main Kodo
    libraries.
    * Fixed a reverse mapping tool bug in which column names that conflicted with
    Java keywords would result in the generation of uncompilable Java classes.
    * Fixed problem that caused read-only flag to be ignored in many-to-many
    relations.
    * Multi-table inheritance deletes are now performed from the leaf table
    in the inheritance chain up to the base table. Inserts are performed
    from the base table down to the leaf. This supports the common
    referential integrity model of establishing a foreign key relation
    from inherited tables to their parent tables.
    Enjoy!
    -Patrick
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com

    An email will be sent out to owners of the query extension or caching
    plugins sometime today (Tuesday).
    You'll all be thrilled to hear that our spiffy new licensing system in
    2.4 will not require multiple jars, which will make life easier for people
    with plugins when upgrades are released.
    -Patrick
    In article <[email protected]>, Alex Roytman wrote:
    Could you please post query extensions for 2.3.4
    "Patrick Linskey" <[email protected]> wrote in message
    news:[email protected]...
    All,
    Kodo JDO 2.3.4 is now available at http://www.solarmetric.com/. This
    release
    contains a number of bugfixes and a couple enhancements to the reverse
    schema tool.
    New features
    * The schema generator can now accept a list of tables to generate.
    * The reverse mapping tool has additional options for using foreign
    key names to generate relation names, generating primitive wrapper-type
    fields if a column is nullable, and allowing primary keys onmany-to-many
    join tables.
    Bugfixes
    * Fixed problems with many-to-many relations between tables that use
    vertical inheritance.
    * Fixed bug in schematool that caused it to not generate primary key
    columns in subclass tables when using datastore identity + custom
    names + vertical inheritance.
    * Fixed serp library conflict between reverse mapping tool and main Kodo
    libraries.
    * Fixed a reverse mapping tool bug in which column names that conflictedwith
    Java keywords would result in the generation of uncompilable Javaclasses.
    * Fixed problem that caused read-only flag to be ignored in many-to-many
    relations.
    * Multi-table inheritance deletes are now performed from the leaf table
    in the inheritance chain up to the base table. Inserts are performed
    from the base table down to the leaf. This supports the common
    referential integrity model of establishing a foreign key relation
    from inherited tables to their parent tables.
    Enjoy!
    -Patrick
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Configuring kodo-jdo-2.5.3 with weblogic 8.1 using JCA

    Hi there.
    I am trying to configure kodo-jdo-2.5.3 in WebLogic 8.1 using JCA method.
    The issue I got was that I got DB authentication failed. I have tested my
    JDBC connect -- working fine, I have turned on JDBC log in WL, it looks
    fine.
    It looks like that KODO was still trying to create its own JDBC connection
    even I have specified
    <config-property>
    <description>The JNDI name of the connection factory to use for
    obtaining connections.</description>
    <config-property-name>ConnectionFactoryName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>datasource.oracle9</config-property-value>
    </config-property>
    "datasource.oracle9" is the JNDI name of my data source.
    The error message is the following. I will really appreciate your help.
    Melvin
    Oct 19, 2003 4:20:53 AM com.solarmetric.kodo.impl.jdbc.RegisterListener
    registerClass
    SEVERE: com.solarmetric.kodo.runtime.FatalDataStoreException:
    java.sql.SQLException: User: melvin, f
    ailed to be authenticated. [code=0;state=null]
    NestedThrowables:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    com.solarmetric.kodo.runtime.FatalDataStoreException:
    java.sql.SQLException: User: melvin, failed to
    be authenticated. [code=0;state=null]
    NestedThrowables:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    at
    com.solarmetric.kodo.impl.jdbc.runtime.SQLExceptions.throwFatal(SQLExceptions.java:58)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBDictionaryFactory.getDictionary(DBDictionaryFacto
    ry.java:212)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCSimpleConfiguration.getDictionary(JDBCSimpleConfigurat
    ion.java:370)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory.registerClassInternal(JDBCPe
    rsistenceManagerFactory.java:455)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory.registerClass(JDBCPersistenc
    eManagerFactory.java:338)
    at
    com.solarmetric.kodo.impl.jdbc.RegisterListener.registerClass(RegisterListener.java:53)
    at
    javax.jdo.spi.JDOImplHelper.registerClass(JDOImplHelper.java:269)
    at samples.j2ee.Car.<clinit>(Car.java)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:140)
    at samples.j2ee.ejb.CarBean.class$(CarBean.java:11)
    at samples.j2ee.ejb.CarBean.list(CarBean.java:136)
    at
    samples.j2ee.ejb.CarEJB_pgfrtx_EOImpl.list(CarEJB_pgfrtx_EOImpl.java:201)
    at jsp_servlet.__index._jspService(__index.java:170)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
    at
    weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.jav
    a:1053)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
    at
    weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletC
    ontext.java:6310)
    at
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
    at
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at
    weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:36
    22)
    at
    weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
    NestedThrowablesStackTrace:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    at
    weblogic.jdbc.common.internal.RmiDataSource.getSubject(RmiDataSource.java:257)
    at
    weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:188)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.DataSourceConnector.getConnection(DataSourceConnec
    tor.java:63)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBDictionaryFactory.getDictionary(DBDictionaryFacto
    ry.java:179)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCSimpleConfiguration.getDictionary(JDBCSimpleConfigurat
    ion.java:370)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory.registerClassInternal(JDBCPe
    rsistenceManagerFactory.java:455)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory.registerClass(JDBCPersistenc
    eManagerFactory.java:338)
    at
    com.solarmetric.kodo.impl.jdbc.RegisterListener.registerClass(RegisterListener.java:53)
    at
    javax.jdo.spi.JDOImplHelper.registerClass(JDOImplHelper.java:269)
    at samples.j2ee.Car.<clinit>(Car.java)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:140)
    at samples.j2ee.ejb.CarBean.class$(CarBean.java:11)
    at samples.j2ee.ejb.CarBean.list(CarBean.java:136)
    at
    samples.j2ee.ejb.CarEJB_pgfrtx_EOImpl.list(CarEJB_pgfrtx_EOImpl.java:201)
    at jsp_servlet.__index._jspService(__index.java:170)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
    at
    weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.jav
    a:1053)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
    at
    weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletC
    ontext.java:6310)
    at
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
    at
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at
    weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:36
    22)
    at
    weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
    <Oct 19, 2003 4:20:53 AM CDT> <Info> <EJB> <BEA-010051> <EJB Exception
    occurred during invocation fr
    om home: samples.j2ee.ejb.CarEJB_pgfrtx_HomeImpl@1c059f6 threw exception:
    com.solarmetric.kodo.runti
    me.FatalDataStoreException: java.sql.SQLException: User: melvin, failed to
    be authenticated. [code=0
    ;state=null]
    NestedThrowables:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    com.solarmetric.kodo.runtime.FatalDataStoreException:
    java.sql.SQLException: User: melvin, failed to
    be authenticated. [code=0;state=null]
    NestedThrowables:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    at
    com.solarmetric.kodo.impl.jdbc.runtime.SQLExceptions.throwFatal(SQLExceptions.java:58)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBDictionaryFactory.getDictionary(DBDictionaryFacto
    ry.java:212)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCSimpleConfiguration.getDictionary(JDBCSimpleConfigurat
    ion.java:370)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getDictionary(JDBCStoreManager.ja
    va:753)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getClassMapping(JDBCStoreManager.
    java:1023)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getClassMapping(JDBCStoreManager.
    java:1037)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCExtent.getResultList(JDBCExtent.java:71)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCExtent.getIterator(JDBCExtent.java:47)
    at
    com.solarmetric.kodo.runtime.ExtentImpl$MultipleSubclassIterator.newIterator(ExtentImpl.j
    ava:344)
    at serp.util.MultiIterator.setIterator(MultiIterator.java:74)
    at serp.util.MultiIterator.hasNext(MultiIterator.java:29)
    at serp.util.LookaheadIterator.setNext(LookaheadIterator.java:133)
    at
    serp.util.LookaheadIterator.initialize(LookaheadIterator.java:118)
    at serp.util.LookaheadIterator.hasNext(LookaheadIterator.java:48)
    at serp.util.MultiIterator.setIterator(MultiIterator.java:73)
    at serp.util.MultiIterator.hasNext(MultiIterator.java:29)
    at
    com.solarmetric.kodo.runtime.ExtentImpl$TransactionAwareIterator.hasNext(ExtentImpl.java:
    403)
    at samples.j2ee.ejb.CarBean.list(CarBean.java:138)
    at
    samples.j2ee.ejb.CarEJB_pgfrtx_EOImpl.list(CarEJB_pgfrtx_EOImpl.java:201)
    at jsp_servlet.__index._jspService(__index.java:170)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
    at
    weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.jav
    a:1053)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
    at
    weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
    at
    weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletC
    ontext.java:6310)
    at
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
    at
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
    at
    weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:36
    22)
    at
    weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
    NestedThrowablesStackTrace:
    java.sql.SQLException: User: melvin, failed to be authenticated.
    at
    weblogic.jdbc.common.internal.RmiDataSource.getSubject(RmiDataSource.java:257)
    at
    weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:188)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.DataSourceConnector.getConnection(DataSourceConnec
    tor.java:63)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBDictionaryFactory.getDictionary(DBDictionaryFacto
    ry.java:179)
    at
    com.solarmetric.kodo.impl.jdbc.JDBCSimpleConfiguration.getDictionary(JDBCSimpleConfigurat
    ion.java:370)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getDictionary(JDBCStoreManager.ja
    va:753)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getClassMapping(JDBCStoreManager.
    java:1023)
    at
    com.solarmetric.kodo.impl.jdbc.runtime.JDBCStoreManager.getClassMapping(JDBCStoreManager.
    java:1037)

    Alex Robbins wrote:
    Try removing <authentication-mechanism> from the ra.xml file of the Kodo
    JCA connector. Then it won't try to authenticate against the WL security
    realm. (If you want connector-level authentication as well as DB-conn
    authentication i think you'll have to configure WL security. I don't know
    how). This worked for me.
    Alex.Hi, The following is the ra.xml, please see any problem.
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE connector PUBLIC '-//Sun Microsystems, Inc.//DTD Connector
    1.0//EN' 'http://java.sun.com/dtd/connector_1_0.dtd'>
    <connector>
    <display-name>KodoJDO</display-name>
    <description>Resource Adapter for integration of the Kodo Java Data
    Objects (JDO) implementation with J2EE 1.3 compliant managed
    environments</description>
    <icon>
    <small-icon>kodo16.gif</small-icon>
    <large-icon>kodo32.gif</large-icon>
    </icon>
    <vendor-name>Solarmetric, Inc.</vendor-name>
    <spec-version>1.0</spec-version>
    <eis-type>jdo</eis-type>
    <version>1.0</version>
    <license>
    <description>See http://www.solarmetric.com for terms and license
    conditions.</description>
    <license-required>true</license-required>
    </license>
    <resourceadapter>
    <managedconnectionfactory-class>com.solarmetric.kodo.impl.jdbc.ee.ManagedConnectionFactoryImpl</managedconnectionfactory-class>
    <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
    <connectionfactory-impl-class>com.solarmetric.kodo.impl.jdbc.ee.JDOConnectionFactory</connectionfactory-impl-class>
    <connection-interface>javax.resource.cci.Connection</connection-interface>
    <connection-impl-class>com.solarmetric.kodo.ee.EEPersistenceManager</connection-impl-class>
    <transaction-support>XATransaction</transaction-support>
    <config-property>
    <description>The number of hard references to cached objects that the
    PersistenceManager's cache will retain (in addition to the soft reference
    cache that it maintains). Setting this to a higher value will result in
    more objects being retained in the cache, at the cost of utilizing more
    memory resources. Setting it to -1 will cause the PersistenceManager to
    maintain hard references only. This will result in better performance, but
    can have adverse effects on memory usage.</description>
    <config-property-name>CacheReferenceSize</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>1000</config-property-value>
    </config-property>
    <config-property>
    <description>The class name of ether the JDBC java.sql.Driver, or an
    instance of a javax.sql.DataSource to use to connect to the data
    source.</description>
    <config-property-name>ConnectionDriverName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The JNDI name of the connection factory to use for
    finding non-transactional connections. If specified, this is the
    connection that will be used for access for obtaining sequence
    numbers.</description>
    <config-property-name>ConnectionFactory2Name</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>jdbc/petshop</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to be passed to
    the JDBC Driver when obtaining a Connection for the ConnectionFactory2
    (which will be used to obtain sequence numbers). Properties are of the
    form "key=value". If a javax.sql.DataSource class is defined in the
    javax.jdo.option.ConnectionDriverName property, then this property will be
    used to set bean-like properties in the DataSource instance upon creation.
    These properties vary depending on the DataSource in use: see the
    documentation for your DataSource for details on the properties to
    use.</description>
    <config-property-name>ConnectionFactory2Properties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The JNDI name of the connection factory to use for
    obtaining connections.</description>
    <config-property-name>ConnectionFactoryName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>PetShopXADataSource</config-property-value>
    </config-property>
    <config-property>
    <description>The password for the user specified in
    ConnectionUserName</description>
    <config-property-name>ConnectionPassword</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to be passed to
    the JDBC Driver when obtaining a Connection. Properties are of the form
    "key=value". If a javax.sql.DataSource class is defined in the
    javax.jdo.option.ConnectionDriverName property, then this property will be
    used to set bean-like properties in the DataSource instance upon creation.
    These properties vary depending on the DataSource in use: see the
    documentation for your DataSource for details on the properties to
    use.</description>
    <config-property-name>ConnectionProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The connection retain mode. Possible options are
    "persistence-manager", "transaction", and "on-demand". Default value is
    "on-demand".</description>
    <config-property-name>ConnectionRetainMode</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>on-demand</config-property-value>
    </config-property>
    <config-property>
    <description>The number of seconds to wait between testing
    connections retrieved from the connection pool. Only valid when using the
    built-in Kodo connection pooling.</description>
    <config-property-name>ConnectionTestTimeout</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>10</config-property-value>
    </config-property>
    <config-property>
    <description>The URL for the data source.</description>
    <config-property-name>ConnectionURL</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The username for the connection listed in
    ConnectionURL.</description>
    <config-property-name>ConnectionUserName</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use for caching of data loaded
    from the data store. Must implement
    com.solarmetric.kodo.runtime.datacache.DataCache.</description>
    <config-property-name>DataCacheClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.DataCacheClass upon
    initialization.</description>
    <config-property-name>DataCacheProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the default class to use for mapping
    persistent classes to the database. Must extend
    com.solarmetric.kodo.impl.jdbc.ormapping.ClassMapping.</description>
    <config-property-name>DefaultClassMappingClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.impl.jdbc.ormapping.ClassMapping</config-property-value>
    </config-property>
    <config-property>
    <description>The number of seconds that data in the data cache is
    valid for. A value of 0 or less means that by default, cached data does
    not time out.</description>
    <config-property-name>DefaultDataCacheTimeout</config-property-name>
    <config-property-type>java.lang.Double</config-property-type>
    <config-property-value>0.0</config-property-value>
    </config-property>
    <config-property>
    <description>The number of rows that will be pre-fetched when an
    element in a Query result is accessed.</description>
    <config-property-name>DefaultFetchBatchSize</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>10</config-property-value>
    </config-property>
    <config-property>
    <description>The threshold below which result lists will be
    completely instantiated upon their creation. A value of -1 will always
    force all results to be completely instantiated, thus disabling lazy
    result loading.</description>
    <config-property-name>DefaultFetchThreshold</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>30</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the default class to use for managing
    subclass indicator columns. Must implement the
    com.solarmetric.kodo.impl.jdbc.ormapping.SubclassProvider interface. See
    custom class indicator documentation for more information about subclass
    providers.</description>
    <config-property-name>DefaultSubclassProviderClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.impl.jdbc.ormapping.SubclassProviderImpl</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in
    com.solarmetric.kodo.impl.jdbc.DefaultSubclassProviderClass upon
    initialization.</description>
    <config-property-name>DefaultSubclassProviderProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The DBDictionary to use for this configuration. This is
    auto-detected based on the setting of javax.jdo.option.ConnectionURL, so
    you need only set this to override the default with your own custom
    DBDictionary or if you are using an unrecognized driver.</description>
    <config-property-name>DictionaryClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of name-value properties
    settings to pass to the dictionary defined by
    com.solarmetric.kodo.impl.jdbc.DictionaryClass. Many of the DBDictionary
    options are automatically configured by concrete subclasses of
    GenericDictionary. The defaults can, however, be overridden by using this
    property.</description>
    <config-property-name>DictionaryProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>If true, then Kodo JDO will allow the use of query
    filter extensions. See the query extensions documentation for more
    information.</description>
    <config-property-name>EnableQueryExtensions</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>A comma-separated list of fetch group names that
    PersistenceManagers will load by default when loading data from the
    database.</description>
    <config-property-name>FetchGroups</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>If true, then all fields of all classes in a given
    inheritance hierarchy will by default map into the least-derived type's
    default primary table. If false then a new default primary table will be
    created for each class in the inheritance hierarchy, and each type's
    declared fields will map to that table by default.</description>
    <config-property-name>FlatInheritanceMapping</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>true</config-property-value>
    </config-property>
    <config-property>
    <description>A String value indicating whether or not Kodo should
    automatically flush modifications to the data store before executing
    queries.</description>
    <config-property-name>FlushBeforeQueries</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>with-connection</config-property-value>
    </config-property>
    <config-property>
    <description>If false, then the JDO implementation must consider
    modifications, deletions, and additions in the PersistenceManager
    transaction cache when executing a query inside a transaction. Else, the
    implementation is free to ignore the cache and execute the query directly
    against the data store.</description>
    <config-property-name>IgnoreCache</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>The license key provided to you by SolarMetric. Keys
    are available at www.solarmetric.com</description>
    <config-property-name>LicenseKey</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>xxxx</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use for obtaining a reference
    to the transaction manager in an enterprise environment. Must implement
    the com.solarmetric.kodo.ee.ManagedRuntime interface.</description>
    <config-property-name>ManagedRuntimeClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.ee.AutomaticManagedRuntime</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.ManagedRuntimeClass upon
    initialization.</description>
    <config-property-name>ManagedRuntimeProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The maximum number of connections to pool. If all of
    these are in use, then PersistenceManager instances must wait for a
    connection to become available. This option has been removed from the
    specification, but we still use the javax.jdo.option for backwards
    compatibility.</description>
    <config-property-name>MaxPool</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>200</config-property-value>
    </config-property>
    <config-property>
    <description>The minimum number of connections to keep in the pool.
    This option has been removed from the specification, but we still use the
    javax.jdo.option for backwards compatibility.</description>
    <config-property-name>MinPool</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>2</config-property-value>
    </config-property>
    <config-property>
    <description>The number of milliseconds to wait for a pooled
    connection before throwing an exception if the pool is empty. This option
    has been removed from the specification, but we still use the
    javax.jdo.option for backwards compatibility.</description>
    <config-property-name>MsWait</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>30000</config-property-value>
    </config-property>
    <config-property>
    <description>If true, then the application plans to have multiple
    threads simultaneously accessing a single PersistenceManager, so measures
    must be taken to ensure that the implementation is thread-safe. Otherwise,
    the implementation need not address thread safety.</description>
    <config-property-name>Multithreaded</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>If true, then it is possible to read persistent data
    outside the context of a transaction. Otherwise, a transaction must be in
    progress in order read data.</description>
    <config-property-name>NontransactionalRead</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>true</config-property-value>
    </config-property>
    <config-property>
    <description>If true, then it is possible to write to fields of a
    persistent-nontransactional object when a transaction is not in progress.
    If false, such a write will result in a JDOUserException.</description>
    <config-property-name>NontransactionalWrite</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>Selects between optimistic and pessimistic (data store)
    transactional modes.</description>
    <config-property-name>Optimistic</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class that the
    PersistenceManagerFactory should create when creating a new
    PersistenceManagerImpl. Must extend
    com.solarmetric.kodo.runtime.PersistenceManagerImpl.</description>
    <config-property-name>PersistenceManagerClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the concrete implementation of
    javax.jdo.PersistenceManagerFactory that
    javax.jdo.JDOHelper.getPersistenceManagerFactory () should create. For
    Kodo JDO, this should be
    com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory or
    com.solarmetric.kodo.impl.jdbc.ee.EEPersistenceManagerFactory, or a custom
    extension of one of these types.</description>
    <config-property-name>PersistenceManagerFactoryClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.PersistenceManagerClass upon
    initialization.</description>
    <config-property-name>PersistenceManagerProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A comma-separated list of classes that will be
    initialized whenever a new PersistenceManager is instantiated. This can be
    used to get around issues with application identity classes not being
    associated with their respective persistent classes.</description>
    <config-property-name>PersistentTypes</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use to proxy second class
    objects in managed instances. Must implement
    com.solarmetric.kodo.util.ProxyManager.</description>
    <config-property-name>ProxyManagerClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.util.SimpleProxyManager</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.ProxyManagerClass upon
    initialization.</description>
    <config-property-name>ProxyManagerProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use for caching of queries
    loaded from the data store. Must implement
    com.solarmetric.kodo.runtime.datacache.QueryCache.</description>
    <config-property-name>QueryCacheClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.runtime.datacache.query.QueryCacheImpl</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.QueryCacheClass upon
    initialization.</description>
    <config-property-name>QueryCacheProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A list of query filter listeners to add to the default
    list of extensions. Ignored if com.solarmetric.kodo.EnableQueryExtensions
    is false.</description>
    <config-property-name>QueryFilterListeners</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use for communicating commit
    information among JVMs. Must implement
    com.solarmetric.kodo.runtime.event.RemoteCommitProvider.</description>
    <config-property-name>RemoteCommitProviderClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.RemoteCommitProviderClass upon
    initialization.</description>
    <config-property-name>RemoteCommitProviderProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>If true, then fields in a persistence-capable object
    that have been changed during a transaction will be rolled back to their
    original values upon a rollback. Otherwise, the values will not be changed
    upon rollback.</description>
    <config-property-name>RestoreValues</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>true</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class that will be used as the
    Collection implementation for returning ResultList instances. It must be
    an instance of
    com.solarmetric.kodo.runtime.objectprovider.ResultList.</description>
    <config-property-name>ResultListClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The property string used to configure the instance of
    the ResultListClass.</description>
    <config-property-name>ResultListProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>If true, then fields in a persistence-capable object
    that have been read during a transaction must be preserved in memory after
    the transaction commits. Otherwise, persistence-capable objects must
    transition to the hollow state upon commit, meaning that subsequent reads
    will result in a database round-trip.</description>
    <config-property-name>RetainValues</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use for generating sequence
    numbers when using data store identity. Must implement the
    com.solarmetric.kodo.impl.jdbc.SequenceFactory interface.</description>
    <config-property-name>SequenceFactoryClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.impl.jdbc.SequenceFactoryClass upon
    initialization.</description>
    <config-property-name>SequenceFactoryProperties</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The class names of a SQLExecutionListener
    implementation to install on the SQLExecutionManager.</description>
    <config-property-name>SQLExecutionListenerClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value></config-property-value>
    </config-property>
    <config-property>
    <description>The name of a custom SQLExecutionManager to be used for
    all issuance of SQL to the data store. Must implement
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManager.</description>
    <config-property-name>SQLExecutionManagerClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl</config-property-value>
    </config-property>
    <config-property>
    <description>The size of the PreparedStatement cache that is
    maintained in the DataSource implementation.</description>
    <config-property-name>StatementCacheMaxSize</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>70</config-property-value>
    </config-property>
    <config-property>
    <description>The time, in seconds, after which a JDBC query will be
    aborted if it has not yet returned any values. This value is simply passed
    to the JDBC driver's Statement.setTimeout method; Kodo does not perform
    any addition timeout actions. Note that many JDBC drivers either ignore
    this request, or improperly handle it, which may result in application
    deadlocks.</description>
    <config-property-name>StatementExecutionTimeout</config-property-name>
    <config-property-type>java.lang.Integer</config-property-type>
    <config-property-value>-1</config-property-value>
    </config-property>
    <config-property>
    <description>If true, the Kodo runtime will automatically attempt to
    refresh the database schema when persistent classes are referenced,
    allowing the developer to bypass the schematool step. This property is
    only intended to be used for development. As automatic schema migration
    can result in data loss, this feature should never be enabled on a
    production system. Furthermore, this feature has serious adverse affects
    on Kodo's runtime performace. Ensure that it is disabled before doing any
    performance analysis.</description>
    <config-property-name>SynchronizeSchema</config-property-name>
    <config-property-type>java.lang.Boolean</config-property-type>
    <config-property-value>false</config-property-value>
    </config-property>
    <config-property>
    <description>The name of the class to use to store
    persistence-capable objects involved in a PM's transaction cache. Must
    implement com.solarmetric.kodo.runtime.StateManagerSet.</description>
    <config-property-name>TransactionCacheClass</config-property-name>
    <config-property-type>java.lang.String</config-property-type>
    <config-property-value>com.solarmetric.kodo.runtime.FifoStateManagerSet</config-property-value>
    </config-property>
    <config-property>
    <description>A space-separated list of properties to pass to the
    class defined in com.solarmetric.kodo.TransactionCacheClass upon
    initialization.</description>
    <config-property-name>TransactionCacheProperties</config-property-name>
    <config-property-type>java.lang.String</config-property

  • Java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory. init

    I am trying to update 3.x to 4.0.1
    Cloning of JDOConnectionFactory is throwing following exception
    (JDOConnectionFactory)pmf1.clone();
    I had this working with 3.x the only difference was that JDBCConnectionFactory was being used instead of JDOConnectionFactory, and I have to use JDOConnectionFactory in 4.0.1 to get PersistenceManagerFactory.
    com.solarmetric.util.ParseException: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at com.solarmetric.conf.ConfigurationImpl.clone(ConfigurationImpl.java:752)
    at com.bea.rfid.login.console.ejb.CredentialMapperBean.setSessionContext(CredentialMapperBean.java:125)
    at com.bea.rfid.login.console.ejb.CredentialMapperEJB_ckhjzn_Impl.setSessionContext(CredentialMapperEJB_ckhjzn_Impl.java:124)
    at weblogic.ejb.container.manager.StatelessManager.createBean(StatelessManager.java:296)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:174)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:105)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:143)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:133)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    at weblogic.ejb.container.internal.StatelessEJBLocalObject.preInvoke(StatelessEJBLocalObject.java:48)

    Thanks for the suggestion.
    I updated to kodo-4.1.2 now, and still I am getting following exception
    javax.ejb.EJBException: Error during setSessionContext: org.apache.openjpa.lib.util.ParseException: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at org.apache.openjpa.lib.conf.ConfigurationImpl.clone(ConfigurationImpl.java:873)
    at com.bea.rfid.login.console.ejb.CredentialMapperBean.setSessionContext(CredentialMapperBean.java:125)
    at com.bea.rfid.login.console.ejb.CredentialMapperEJB_ckhjzn_Impl.setSessionContext(CredentialMapperEJB_ckhjzn_Impl.java:124)
    at weblogic.ejb.container.manager.StatelessManager.createBean(StatelessManager.java:296)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:174)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:105)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:143)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:133)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    at weblogic.ejb.container.internal.StatelessEJBLocalObject.preInvoke(StatelessEJBLocalObject.java:48)
    at com.bea.rfid.login.console.ejb.CredentialMapperEJB_ckhjzn_ELOImpl.getPersistenceManager(CredentialMapperEJB_ckhjzn_ELOImpl.java:42)
    at com.connecterra.epcis.server.ejb.EPCISBean.ejbCreate(EPCISBean.java:147)
    at com.connecterra.epcis.server.ejb.EPCIS_9tvcog_Impl.ejbCreate(EPCIS_9tvcog_Impl.java:150)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:178)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:105)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:143)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:133)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    at weblogic.ejb.container.internal.StatelessEJBLocalObject.preInvoke(StatelessEJBLocalObject.java:48)
    at com.connecterra.epcis.server.ejb.EPCIS_9tvcog_ELOImpl.getAllSubscriptionInfo(EPCIS_9tvcog_ELOImpl.java:1304)
    at com.connecterra.epcis.server.ejb.scheduler.SchedulerBean.refreshTimer(SchedulerBean.java:131)
    at com.connecterra.epcis.server.ejb.scheduler.SchedulerBean.initializeTimer(SchedulerBean.java:98)
    at com.connecterra.epcis.server.ejb.scheduler.SubscriptionScheduler_jm2ekz_ELOImpl.initializeTimer(SubscriptionScheduler_jm2ekz_ELOImpl.java:63)
    at com.connecterra.epcis.server.schedulerservlet.SchedulerServlet.init(SchedulerServlet.java:32)
    at javax.servlet.GenericServlet.init(GenericServlet.java:256)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:276)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:68)
    at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:504)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1698)
    at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1675)
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1595)
    at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2734)
    at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:892)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:336)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
    at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
    at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:26)
    at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:641)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:229)
    at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:154)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:181)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:352)
    at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
    at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:186)
    at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
    at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
    at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
    at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
    at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
    at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
    at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    Caused by: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at java.lang.Class.getConstructor0(Class.java:2647)
    at java.lang.Class.getConstructor(Class.java:1629)
    at org.apache.openjpa.lib.conf.ConfigurationImpl.clone(ConfigurationImpl.java:863)
    ... 68 more
    ; nested exception is: org.apache.openjpa.lib.util.ParseException: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:141)
    at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:657)
    at weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:604)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:141)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    Truncated. see log file for complete stacktrace
    >
    <Dec 22, 2006 3:58:34 PM EST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'WLRFID-EPCIS'.
    weblogic.application.ModuleException: [HTTP:101216]Servlet: "SchedulerServlet" failed to preload on startup in Web application: "schedulerservlet".
    javax.ejb.EJBException: Error during setSessionContext: org.apache.openjpa.lib.util.ParseException: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at org.apache.openjpa.lib.conf.ConfigurationImpl.clone(ConfigurationImpl.java:873)
    at com.bea.rfid.login.console.ejb.CredentialMapperBean.setSessionContext(CredentialMapperBean.java:125)
    at com.bea.rfid.login.console.ejb.CredentialMapperEJB_ckhjzn_Impl.setSessionContext(CredentialMapperEJB_ckhjzn_Impl.java:124)
    at weblogic.ejb.container.manager.StatelessManager.createBean(StatelessManager.java:296)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:174)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:105)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:143)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:133)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    at weblogic.ejb.container.internal.StatelessEJBLocalObject.preInvoke(StatelessEJBLocalObject.java:48)
    at com.bea.rfid.login.console.ejb.CredentialMapperEJB_ckhjzn_ELOImpl.getPersistenceManager(CredentialMapperEJB_ckhjzn_ELOImpl.java:42)
    at com.connecterra.epcis.server.ejb.EPCISBean.ejbCreate(EPCISBean.java:147)
    at com.connecterra.epcis.server.ejb.EPCIS_9tvcog_Impl.ejbCreate(EPCIS_9tvcog_Impl.java:150)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at weblogic.ejb.container.pool.StatelessSessionPool.createBean(StatelessSessionPool.java:178)
    at weblogic.ejb.container.pool.StatelessSessionPool.getBean(StatelessSessionPool.java:105)
    at weblogic.ejb.container.manager.StatelessManager.preInvoke(StatelessManager.java:143)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:133)
    at weblogic.ejb.container.internal.BaseLocalObject.preInvoke(BaseLocalObject.java:81)
    at weblogic.ejb.container.internal.StatelessEJBLocalObject.preInvoke(StatelessEJBLocalObject.java:48)
    at com.connecterra.epcis.server.ejb.EPCIS_9tvcog_ELOImpl.getAllSubscriptionInfo(EPCIS_9tvcog_ELOImpl.java:1304)
    at com.connecterra.epcis.server.ejb.scheduler.SchedulerBean.refreshTimer(SchedulerBean.java:131)
    at com.connecterra.epcis.server.ejb.scheduler.SchedulerBean.initializeTimer(SchedulerBean.java:98)
    at com.connecterra.epcis.server.ejb.scheduler.SubscriptionScheduler_jm2ekz_ELOImpl.initializeTimer(SubscriptionScheduler_jm2ekz_ELOImpl.java:63)
    at com.connecterra.epcis.server.schedulerservlet.SchedulerServlet.init(SchedulerServlet.java:32)
    at javax.servlet.GenericServlet.init(GenericServlet.java:256)
    at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:276)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:68)
    at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
    at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:504)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1698)
    at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1675)
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1595)
    at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2734)
    at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:892)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:336)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
    at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:117)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60)
    at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:26)
    at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:641)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26)
    at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:229)
    at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:154)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:181)
    at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:352)
    at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
    at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:186)
    at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
    at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:233)
    at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
    at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
    at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:173)
    at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:89)
    at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
    Caused by: java.lang.NoSuchMethodException: kodo.jdo.jdbc.JDOConnectionFactory.<init>(boolean)
    at java.lang.Class.getConstructor0(Class.java:2647)
    at java.lang.Class.getConstructor(Class.java:1629)
    at org.apache.openjpa.lib.conf.ConfigurationImpl.clone(ConfigurationImpl.java:863)
    ... 68 more

  • Using Tangosol Coherence in conjunction with Kodo JDO for distributing caching

    JDO currently has a perception problem in terms of performance. Transparent
    persistence is perceived to have a significant performance overhead compared
    to hand-coded JDBC. That was certainly true a while ago, when the first JDO
    implementations were evaluated. They typically performed about half as well
    and with higher resource requirements. No doubt JDO vendors have closed that
    gap by caching PreparedStatements, queries, data, and by using other
    optimizations.
    Aside from the ease of programming through transparent persistence, I
    believe that using JDO in conjunction with distributed caching techniques in
    a J2EE managed environment has the opportunity to transparently give
    scalability, performance, and availability improvements that would otherwise
    be much more difficult to realize through other persistence techniques.
    In particular, it looks like Tangosol is doing a lot of good work in the
    area of distributed caching for J2EE. For example, executing parallelized
    searches in a cluster is a capability that is pretty unique and potentially
    very valuable to many applications. It would appear to me to be a lot of
    synergy between Kodo JDO and Tangosol Coherence. Using Coherence as an
    implementation of Kodo JDO's distributed cache would be a natural desire for
    enterprise applications that have J2EE clustering requirements for high
    scalability, performance, and availability.
    I'm wondering if Solarmetric has any ideas or plans for closer integration
    (e.g., pluggability) of Tangosol Coherence into Kodo JDO. This is just my
    personal opinion, but I think a partnership between your two organizations
    to do this integration would be mutually advantageous, and it would
    potentially be very attractive to your customers.
    Ben

    Marc,
    Thanks for pointing that out. That is truly excellent!
    Ben
    "Marc Prud'hommeaux" <[email protected]> wrote in message
    news:[email protected]...
    Ben-
    We do currently have a plug-in for backing our data cache with a
    Tangosol cache.
    See: http://docs.solarmetric.com/manual.html#datastore_cache_config
    In article <[email protected]>, Ben Eng wrote:
    JDO currently has a perception problem in terms of performance.
    Transparent
    persistence is perceived to have a significant performance overheadcompared
    to hand-coded JDBC. That was certainly true a while ago, when the firstJDO
    implementations were evaluated. They typically performed about half aswell
    and with higher resource requirements. No doubt JDO vendors have closedthat
    gap by caching PreparedStatements, queries, data, and by using other
    optimizations.
    Aside from the ease of programming through transparent persistence, I
    believe that using JDO in conjunction with distributed cachingtechniques in
    a J2EE managed environment has the opportunity to transparently give
    scalability, performance, and availability improvements that wouldotherwise
    be much more difficult to realize through other persistence techniques.
    In particular, it looks like Tangosol is doing a lot of good work in the
    area of distributed caching for J2EE. For example, executingparallelized
    searches in a cluster is a capability that is pretty unique andpotentially
    very valuable to many applications. It would appear to me to be a lot of
    synergy between Kodo JDO and Tangosol Coherence. Using Coherence as an
    implementation of Kodo JDO's distributed cache would be a natural desirefor
    enterprise applications that have J2EE clustering requirements for high
    scalability, performance, and availability.
    I'm wondering if Solarmetric has any ideas or plans for closerintegration
    (e.g., pluggability) of Tangosol Coherence into Kodo JDO. This is justmy
    personal opinion, but I think a partnership between your twoorganizations
    to do this integration would be mutually advantageous, and it would
    potentially be very attractive to your customers.
    Ben--
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Kodo JDO 2.3.0 beta 5

    All,
    We have just released a new beta release of Kodo JDO 2.3.0. This beta
    includes functional managed transaction integration, WebSphere support, many
    bug fixes, documentation improvements, and more.
    We are planning on releasing Kodo JDO 2.3.0 RC1 on Monday. Barring any bugs
    that you guys turn up in the next couple days, it will be the same core code
    base as beta 5 plus a revival of our JBuilder integration and even more
    documentation improvements.
    If you see any bugs in beta 5, please let us know as soon as possible. At
    this point, we are quite confident in the performance and correctness of
    Kodo JDO 2.3.0, but, of course, the earlier we find bugs, the better.
    Also, if you've made a bug report recently and you don't see the fix in beta
    5, please let us know.
    See http://www.solarmetric.com/Software/beta/2.3.0 for more info and to
    download the release.
    -Patrick
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com

    To confuse it even more I only observe this behaviour when I enchance all
    persistent classes at once.
    If I enchance all classes and then recompile and reenchance just OrgUnit
    (the rest are skipped by Kodo) it works as it suppose to
    I can reproduce this behaviour any time it is consistent
    "Alex Roytman" <[email protected]> wrote in message
    news:[email protected]...
    Abe, Patrick,
    I found something which looks like a serious enhancement bug. I cantfigure
    out what is going on but the symptoms are:
    getter of a PC reference will return null if reference has not beenresolved
    yet under some strange conditions:
    t.jdo.beginTransaction();
    try {
    //call t.jdo.getOrgUnit(2).getOrgUnitType() //*0* if I uncoment
    it subsequent code works
    OrgUnit leg = OrgUnit.newInstance(); //*1*
    leg.setOrgUnitType(t.jdo.getOrgUnitType(20));
    leg.setParent(t.jdo.getOrgUnit(2)); // note it is the sameorgUnit
    as in *0*
    if (leg.getParent().getOrgUnitType() == null) {   //*3*
    System.out.println("leg.getParent().getOrgUnitType() == null");
    // returns null here but it should not !!!!!
    leg.setName("Leg");
    t.jdo.commitTransaction();
    } catch (Exception e) {
    e.printStackTrace();
    t.jdo.rollbackTransaction();
    but call to t.jdo.getOrgUnit(2).getOrgUnitType() returns appropriate value
    just fine - not null
    note t.jdo.getOrgUnit(2) is nothing but a wraper for PM.getInstanceById()
    if I call t.jdo.getOrgUnit(2).getOrgUnitType() *0* before *1* it worksand
    *3* returns non null
    "Patrick Linskey" <[email protected]> wrote in message
    news:B95D3083.3A84%[email protected]...
    All,
    We have just released a new beta release of Kodo JDO 2.3.0. This beta
    includes functional managed transaction integration, WebSphere support,many
    bug fixes, documentation improvements, and more.
    We are planning on releasing Kodo JDO 2.3.0 RC1 on Monday. Barring anybugs
    that you guys turn up in the next couple days, it will be the same corecode
    base as beta 5 plus a revival of our JBuilder integration and even more
    documentation improvements.
    If you see any bugs in beta 5, please let us know as soon as possible.
    At
    this point, we are quite confident in the performance and correctness of
    Kodo JDO 2.3.0, but, of course, the earlier we find bugs, the better.
    Also, if you've made a bug report recently and you don't see the fix inbeta
    5, please let us know.
    See http://www.solarmetric.com/Software/beta/2.3.0 for more info and to
    download the release.
    -Patrick
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Kodo JDO 2.5.0 beta now available

    All,
    Kodo JDO 2.5.0 beta 1 is now available at:
    http://solarmetric.com/Software/beta/2.5.0/
    Some notable new features since 2.4 include:
    - Queries have received a major overhaul. Queries now support unbound
    variables, Collections as parameters to generate SQL IN (...) clauses,
    traversing fields of persistence-capable parameters, and more. The SQL
    produced by queries is also much more efficient.
    - Kodo JDO EE can now participate correctly in XA transactions.
    - Kodo JDO now includes support for custom fetch groups.
    - Queries and Extents can be constructed for interfaces.
    - Multi-table mappings now permit different tables to have different
    primary key column names.
    - The data cache framework can now cache query results.
    Known issues:
    - The JCA resource adapter will not seamlessly work with WebLogic -- to
    use it with WebLogic, it is necessary to unzip the kodo.rar and remove
    empty config-param-value elements
    (i.e. <config-properrty-value></config-property-value>).
    - We have done only limited integration testing with our IDE plugins.
    - Cached query results do not obey the timeouts configured for the classes
    in the query's access path.
    As usual, please discuss any issues, desires, etc. on the beta newsgroup:
    news://news.solarmetric.com/solarmetric.kodo.beta
    Enjoy,
    -Patrick
    Patrick Linskey
    SolarMetric Inc.

    All,
    Kodo JDO 2.5.0 beta 1 is now available at:
    http://solarmetric.com/Software/beta/2.5.0/
    Some notable new features since 2.4 include:
    - Queries have received a major overhaul. Queries now support unbound
    variables, Collections as parameters to generate SQL IN (...) clauses,
    traversing fields of persistence-capable parameters, and more. The SQL
    produced by queries is also much more efficient.
    - Kodo JDO EE can now participate correctly in XA transactions.
    - Kodo JDO now includes support for custom fetch groups.
    - Queries and Extents can be constructed for interfaces.
    - Multi-table mappings now permit different tables to have different
    primary key column names.
    - The data cache framework can now cache query results.
    Known issues:
    - The JCA resource adapter will not seamlessly work with WebLogic -- to
    use it with WebLogic, it is necessary to unzip the kodo.rar and remove
    empty config-param-value elements
    (i.e. <config-properrty-value></config-property-value>).
    - We have done only limited integration testing with our IDE plugins.
    - Cached query results do not obey the timeouts configured for the classes
    in the query's access path.
    As usual, please discuss any issues, desires, etc. on the beta newsgroup:
    news://news.solarmetric.com/solarmetric.kodo.beta
    Enjoy,
    -Patrick
    Patrick Linskey
    SolarMetric Inc.

  • Kodo JDO with JCA provided by Jencks in Tomcat

    I'm trying to use both JDO and JCR (Apache's Jackrabbit) in my project. Both support XA
    Transactions, and my understanding is that to best ensure data integrity, I should start using them.
    Currently, I'm running under Tomcat using the SpringFramework support for transactions. I'd like to
    continue running in Tomcat because I already understand that environment and the other app-servers
    all feel heavyweight by comparison - all I need is JNDI and XA Transactions. Tomcat itself doesn't
    support XA Transactions and JCA, but the open source project jencks is able to provide JCA support
    within Tomcat.
    I've been looking at the Deployment section of the JDO reference guide (Chapter 8). If I'm reading
    this right, all I need to do is set two properties in the jdo.properties file: kodo.TransactionMode
    and kodo.ManagedRuntime.
    I've done that in my project:
    kodo.TransactionMode: managed
    kodo.ManagedRuntime: invocation(
    TransactionManagerMethod=edu.ucsc.whisper.transaction.KodoTransactionAccess.getTransactionManager )
    The getTransactionManager() is a static function that returns the
    javax.transaction.TransactionManager provided by Spring's JtaTransactionManager.
    I have a unit test that checks the application's initialization process, and I've been using that to
    work my way into JCA transactions. Based on that test, this seems to be working. My question is this:
    Is it really that simple?
    Don't get me wrong, I'll be thrilled if it is, but from everything I'm seeing about configuring the
    "Big Iron" app servers (WebLogic, JBoss, etc.), it just seems like adding two properties is too easy
    and that I'm probably missing something significant in the process. Can anyone confirm whether or
    not I'm on the right track here?
    I'm working on setting this up for my heavier-duty integration tests, but I'm concerned that if I am
    missing something, I've done just enough to fake Kodo out and that it isn't actually working under
    the hood.
    Thanks,
    Mark

    Abe White wrote:
    I would be surprised if your transaction manager and JDBC driver
    configured themselves for XA automatically, since it imposes some
    overhead and is rarely actually needed. In particular, you typically
    need an XADataSource for XA transactions, rather than just using the
    standard JDBC driver through the DriverManager (as Kodo does internally
    when you specify ConnectionDriverName). So I suggest you consult their
    documentation. As far as Kodo is concerned, though, as long as you've
    set the TransactionMode, ManagedRuntime,
    DataSourceMode/ConnectionFactoryMode (depending on Kodo version), and
    are using an XA DataSource, you are all set.Hi Abe,
    I've been able to get Spring configured so that it uses its JtaTransactionManager, and I have Kodo
    setup with the TransactionMode as Managed and the ManagedRuntime is configured to use a static
    method I created that returns the TransactionManager. In my logs, I can see Kodo accessing a
    non-null instance of the TransactionManager class through this method. The problem that I'm getting
    is that the behavior in my unit and integration tests is different than the behavior I'm seeing when
    running in Tomcat, even though the Spring and Kodo configuration are nearly identical (Kodo accesses
    a different database in Tomcat than it does in testing, other than that, the configuration is the
    same). All the unit and integration tests pass; this requires transactions to be created, data
    written to the database through Kodo, and then read back through Kodo in a new transaction. When I
    deploy the web-app to Tomcat though, Kodo suddenly thinks its running without transactions. Reading
    from the database works fine because I've got non-transactional reads turned on, but as soon as I
    try to alter any field of a persisted object, Kodo throws an InvalidStateException saying it doesn't
    have a transaction. I've included my log output below to demonstrate.
    The only thing I haven't done yet, based on your previous message, is configure my database driver
    for access through JNDI within Tomcat. Would that cause errors like this, or should I be looking
    elsewhere?
    My jdo.properties file contains these settings:
    # For use of JDOHelper
    javax.jdo.PersistenceManagerFactoryClass: kodo.jdo.PersistenceManagerFactoryImpl
    # For Kodo JDO 4.0 EA2 and higher
    javax.jdo.option.Connection2DriverName: org.postgresql.Driver
    javax.jdo.option.Connection2UserName: ------------
    javax.jdo.option.Connection2Password: ------------
    javax.jdo.option.Connection2URL: jdbc:postgresql://127.0.0.1:5432/my_db
    javax.jdo.option.Optimistic: true
    javax.jdo.option.RetainState: true
    javax.jdo.option.NontransactionalRead: true
    kodo.FlushBeforeQueries=true
    # For JCA Transaction support
    kodo.TransactionMode: managed
    kodo.ManagedRuntime: invocation(
    TransactionManagerMethod=edu.ucsc.whisper.transaction.KodoTransactionAccess.getTransactionManager )
    Thanks,
    Mark
    2006-04-04 02:03:13,891 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <mdslog - TransactionInterceptor starting create if necessary>
    2006-04-04 02:03:13,891 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <mdslog - TransactionAspectSupport begin createTransactionIfNecessary()>
    2006-04-04 02:03:13,891 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <Getting transaction for edu.ucsc.whisper.service.UserService.setUserInformation>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager begin getTransaction>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <Using
    transaction object [org.springframework.transaction.jta.JtaTransactionObject@42b645]>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] -
    <Creating new transaction with name [edu.ucsc.whisper.service.UserService.setUserInformation]>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - JtaTransactionManager begin doBegin>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - JtaTransactionManager end doBegin>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager end getTransaction>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager begin newTransactionStatus>
    2006-04-04 02:03:13,892 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Initializing
    transaction synchronization>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager end newTransactionStatus>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <mdslog - TransactionAspectSupport end createTransactionIfNecessary()>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <mdslog - TransactionInterceptor finished create if necessary>
    2006-04-04 02:03:13,892 INFO [edu.ucsc.whisper.service.DefaultUserService] - <setUserInformation begin>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.web.context.support.XmlWebApplicationContext] -
    <Publishing event in context [WebApplicationContext for namespace 'xfire-servlet']:
    org.acegisecurity.event.authorization.PublicInvocationEvent[source=invocation: method 'getUser',
    arguments [mark]; target is of class [edu.ucsc.whisper.core.manager.DefaultUserManager]]>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.web.context.support.XmlWebApplicationContext] -
    <Publishing event in context [Root WebApplicationContext]:
    org.acegisecurity.event.authorization.PublicInvocationEvent[source=invocation: method 'getUser',
    arguments [mark]; target is of class [edu.ucsc.whisper.core.manager.DefaultUserManager]]>
    2006-04-04 02:03:13,892 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] -
    <Opening JDO PersistenceManager, factory = kodo.jdo.PersistenceManagerFactoryImpl@c2c9af>
    2006-04-04 02:03:13,893 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] - <New
    JDO PersistenceManager = kodo.jdo.PersistenceManagerImpl@cc70c2, factory =
    kodo.jdo.PersistenceManagerFactoryImpl@c2c9af>
    2006-04-04 02:03:13,893 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] -
    <Registering transaction synchronization for JDO PersistenceManager>
    2006-04-04 02:03:13,893 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <mdslog -
    TransactionSynchronizationManager registerSynchronization -
    org.springframework.orm.jdo.PersistenceManagerFactoryUtils$PersistenceManagerSynchronization@ff0f8a>
    2006-04-04 02:03:13,893 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Bound value
    [org.springframework.orm.jdo.PersistenceManagerHolder@552f12] for key
    [kodo.jdo.PersistenceManagerFactoryImpl@c2c9af] to thread [http-8443-Processor24]>
    2006-04-04 02:03:13,893 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Retrieved value
    [org.springframework.orm.jdo.PersistenceManagerHolder@552f12] for key
    [kodo.jdo.PersistenceManagerFactoryImpl@c2c9af] bound to thread [http-8443-Processor24]>
    2006-04-04 02:03:13,893 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] -
    <Persistence manager kodo.jdo.PersistenceManagerImpl@cc70c2, factory
    kodo.jdo.PersistenceManagerFactoryImpl@c2c9af is transactional: true>
    2006-04-04 02:03:13,893 DEBUG [kodo.Query] - <Executing query: [SELECT UNIQUE FROM
    edu.ucsc.whisper.core.DefaultUser WHERE username==searchName
                         PARAMETERS java.lang.String searchName] with parameters: {searchName=mark}>
    2006-04-04 02:03:13,894 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> connection pool: active=0, idle=1>
    2006-04-04 02:03:13,894 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> checkout>
    2006-04-04 02:03:13,895 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> prepared statement cache: size=9,
    max=50, requests=17, hits=8, created=9, redundant=0, overflow=0, leaked=0>
    2006-04-04 02:03:13,902 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [5 ms] executing
    prepstmnt 6033738 SELECT t0.userId, t0.TYP, t0.VERSN, t0.enabled, t0.password, t1.userInfoId,
    t1.TYPE, t1.VERSN, t1.aboutText, t1.familyName, t1.firstName, t1.gender, t1.namePrefix,
    t1.nameSuffix, t1.otherNames, t2.userId, t2.TYP, t2.VERSN, t2.enabled, t2.password, t2.USERINFO,
    t2.username, t0.username FROM whisper_user t0 LEFT OUTER JOIN userinfo t1 ON t0.USERINFO =
    t1.userInfoId LEFT OUTER JOIN whisper_user t2 ON t1.userInfoId = t2.USERINFO WHERE (t0.username = ?)
    [params=(String) mark] [reused=3]>
    2006-04-04 02:03:13,906 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [2 ms] executing
    prepstmnt 12702178 SELECT t0.nameOrder, t0.previousName FROM userInfo_PreviousNames t0 WHERE
    t0.userInfoId = ? ORDER BY t0.nameOrder ASC [params=(long) 2] [reused=3]>
    2006-04-04 02:03:13,908 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [1 ms] executing
    prepstmnt 7374726 SELECT t1.authorityId, t1.TYP, t1.VERSN, t1.authority FROM user_authorities t0
    INNER JOIN authorities t1 ON t0.authorityId = t1.authorityId WHERE t0.userId = ? [params=(long) 2]
    [reused=3]>
    2006-04-04 02:03:13,912 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [2 ms] executing
    prepstmnt 1745355 SELECT t0.organizationId, t0.TYPE, t0.VERSN, t0.city, t0.country, t0.isPrimary,
    t0.orgName, t0.positionTitle, t0.postalCode, t0.state, t0.streetAddress1, t0.streetAddress2,
    t0.streetAddress3, t0.userId FROM organization t0 WHERE t0.userId = ? [params=(long) 2] [reused=3]>
    2006-04-04 02:03:13,912 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> return>
    2006-04-04 02:03:13,912 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> [0 ms] close>
    2006-04-04 02:03:13,913 INFO [edu.ucsc.whisper.security.WhisperAccessDecisionManager] - <voting on
    access to: invocation: method 'getUserInfoForUser', arguments [{DefaultUser: username=mark;
    password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}]; target is of class
    [edu.ucsc.whisper.core.manager.DefaultUserManager], with auth:
    edu.ucsc.whisper.security.WhisperClientAuthenticationToken@798d8: Username: {DefaultUser:
    username=mark; password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}; Password:
    [PROTECTED]; Authenticated: true; Details: null; Granted Authorities: {DefaultAuthority:
    authority=ROLE_USER}>
    2006-04-04 02:03:13,913 INFO [edu.ucsc.whisper.security.UserIsOwnerOrAdminVoter] - <voting with auth
    = edu.ucsc.whisper.security.WhisperClientAuthenticationToken@798d8: Username: {DefaultUser:
    username=mark; password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}; Password:
    [PROTECTED]; Authenticated: true; Details: null; Granted Authorities: {DefaultAuthority:
    authority=ROLE_USER}, o = invocation: method 'getUserInfoForUser', arguments [{DefaultUser:
    username=mark; password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}]; target is of
    class [edu.ucsc.whisper.core.manager.DefaultUserManager], config = [ROLE_USER, ROLE_ANONYMOUS,
    AFTER_ACL_READ]>
    2006-04-04 02:03:13,913 DEBUG [org.springframework.web.context.support.XmlWebApplicationContext] -
    <Publishing event in context [WebApplicationContext for namespace 'xfire-servlet']:
    org.acegisecurity.event.authorization.AuthorizedEvent[source=invocation: method
    'getUserInfoForUser', arguments [{DefaultUser: username=mark;
    password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}]; target is of class
    [edu.ucsc.whisper.core.manager.DefaultUserManager]]>
    2006-04-04 02:03:13,914 DEBUG [org.springframework.web.context.support.XmlWebApplicationContext] -
    <Publishing event in context [Root WebApplicationContext]:
    org.acegisecurity.event.authorization.AuthorizedEvent[source=invocation: method
    'getUserInfoForUser', arguments [{DefaultUser: username=mark;
    password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}]; target is of class
    [edu.ucsc.whisper.core.manager.DefaultUserManager]]>
    2006-04-04 02:03:13,914 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Retrieved value
    [org.springframework.orm.jdo.PersistenceManagerHolder@552f12] for key
    [kodo.jdo.PersistenceManagerFactoryImpl@c2c9af] bound to thread [http-8443-Processor24]>
    2006-04-04 02:03:13,915 DEBUG [kodo.Query] - <Executing query: [SELECT FROM
    edu.ucsc.whisper.core.UserAccessControl
                         WHERE aclObjectId.domainObjectId==searchObjectId.domainObjectId
                         PARAMETERS edu.ucsc.whisper.core.DomainObjectIdentity searchObjectId] with
    parameters: {searchObjectId=edu.ucsc.whisper.core.DefaultUserInfo:mark}>
    2006-04-04 02:03:13,917 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> connection pool: active=0, idle=1>
    2006-04-04 02:03:13,917 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> checkout>
    2006-04-04 02:03:13,917 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> prepared statement cache: size=9,
    max=50, requests=21, hits=12, created=9, redundant=0, overflow=0, leaked=0>
    2006-04-04 02:03:13,919 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [2 ms] executing
    prepstmnt 11249989 SELECT t0.accessControlId, t0.VERSN, t0.aclObjectId, t0.aclObjectParentId,
    t0.permit, t1.userId, t1.TYP, t1.VERSN, t1.enabled, t1.password, t2.userInfoId, t2.TYPE, t2.VERSN,
    t2.aboutText, t2.familyName, t2.firstName, t2.gender, t2.namePrefix, t2.nameSuffix, t2.otherNames,
    t3.userId, t3.TYP, t3.VERSN, t3.enabled, t3.password, t3.USERINFO, t3.username, t1.username FROM
    user_access_control t0 LEFT OUTER JOIN whisper_user t1 ON t0.userId = t1.userId LEFT OUTER JOIN
    userinfo t2 ON t1.USERINFO = t2.userInfoId LEFT OUTER JOIN whisper_user t3 ON t2.userInfoId =
    t3.USERINFO WHERE (t0.aclObjectId = ?) [params=(String) edu.ucsc.whisper.core.DefaultUserInfo:mark]
    [reused=1]>
    2006-04-04 02:03:13,920 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> return>
    2006-04-04 02:03:13,921 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> [1 ms] close>
    2006-04-04 02:03:13,921 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Retrieved value
    [org.springframework.orm.jdo.PersistenceManagerHolder@552f12] for key
    [kodo.jdo.PersistenceManagerFactoryImpl@c2c9af] bound to thread [http-8443-Processor24]>
    2006-04-04 02:03:13,921 DEBUG [kodo.Query] - <Executing query: [SELECT FROM
    edu.ucsc.whisper.core.AuthorityAccessControl
                         WHERE aclObjectId.domainObjectId==searchObjectId.domainObjectId
                         PARAMETERS edu.ucsc.whisper.core.DomainObjectIdentity searchObjectId] with
    parameters: {searchObjectId=edu.ucsc.whisper.core.DefaultUserInfo:mark}>
    2006-04-04 02:03:13,923 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> connection pool: active=0, idle=1>
    2006-04-04 02:03:13,924 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> checkout>
    2006-04-04 02:03:13,924 DEBUG [kodo.jdbc.JDBC] - <<t 11706420> prepared statement cache: size=9,
    max=50, requests=22, hits=13, created=9, redundant=0, overflow=0, leaked=0>
    2006-04-04 02:03:13,927 DEBUG [kodo.jdbc.SQL] - <<t 11706420, conn 15885558> [2 ms] executing
    prepstmnt 4389286 SELECT t0.accessControlId, t0.VERSN, t0.aclObjectId, t0.aclObjectParentId,
    t0.permit, t1.authorityId, t1.TYP, t1.VERSN, t1.authority FROM authority_access_control t0 LEFT
    OUTER JOIN authorities t1 ON t0.authorityId = t1.authorityId WHERE (t0.aclObjectId = ?)
    [params=(String) edu.ucsc.whisper.core.DefaultUserInfo:mark] [reused=1]>
    2006-04-04 02:03:13,928 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> return>
    2006-04-04 02:03:13,928 DEBUG [kodo.jdbc.JDBC] - <<t 11706420, conn 15885558> [0 ms] close>
    2006-04-04 02:03:13,928 INFO [edu.ucsc.whisper.core.dao.JdoAclDao] - <found the controls:
    [{AuthorityAccessControl: aclObjectId=edu.ucsc.whisper.core.DefaultUserInfo:mark;
    aclObjectParentId=null; permit=READ_WRITE; recipient={DefaultAuthority: authority=ROLE_ADMIN}},
    {UserAccessControl: aclObjectId=edu.ucsc.whisper.core.DefaultUserInfo:mark; aclObjectParentId=null;
    permit=READ_WRITE; recipient={DefaultUser: username=mark;
    password=871deb9e1c3dd967da1d4f6d01999eb71a4eab71; isEnabled=true}}]>
    2006-04-04 02:03:13,928 INFO [edu.ucsc.whisper.service.DefaultUserService] - <Updating user info for
    mark>
    2006-04-04 02:03:13,929 INFO [edu.ucsc.whisper.service.DefaultUserService] - <existing user info =
    {DefaultUserInfo: prefix=null; firstName=null; otherNames=null; familyName=null; suffix=null;
    previousNames=(); gender=0; aboutText=null}>
    2006-04-04 02:03:13,929 INFO [edu.ucsc.whisper.service.DefaultUserService] - <new user info =
    {UserInfoData: prefix=Mr.; firstName=Mark; otherNames=David; familyName=Slater; suffix=null;
    previousNames=(); gender=0; aboutText=blah blah blah}>
    2006-04-04 02:03:13,930 DEBUG
    [org.springframework.transaction.interceptor.RuleBasedTransactionAttribute] - <Applying rules to
    determine whether transaction should rollback on <4|false|4.0.0EA4> kodo.util.InvalidStateException:
    To perform writes on persistent data outside of a transaction, the "NontransactionalWrite" property
    must be set on the Transaction.
    FailedObject: edu.ucsc.whisper.core.DefaultUserInfo-2>
    2006-04-04 02:03:13,930 DEBUG
    [org.springframework.transaction.interceptor.RuleBasedTransactionAttribute] - <Winning rollback rule
    is: null>
    2006-04-04 02:03:13,930 DEBUG
    [org.springframework.transaction.interceptor.RuleBasedTransactionAttribute] - <No relevant rollback
    rule found: applying superclass default>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.interceptor.TransactionInterceptor] -
    <Invoking rollback for transaction on edu.ucsc.whisper.service.UserService.setUserInformation due to
    throwable [<4|false|4.0.0EA4> kodo.util.InvalidStateException: To perform writes on persistent data
    outside of a transaction, the "NontransactionalWrite" property must be set on the Transaction.
    FailedObject: edu.ucsc.whisper.core.DefaultUserInfo-2]>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager begin rollback>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager begin processRollback>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager begin triggerBeforeCompletion>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] -
    <Triggering beforeCompletion synchronization>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager - synchronization =
    org.springframework.orm.jdo.PersistenceManagerFactoryUtils$PersistenceManagerSynchronization@ff0f8a>
    2006-04-04 02:03:13,934 DEBUG
    [org.springframework.transaction.support.TransactionSynchronizationManager] - <Removed value
    [org.springframework.orm.jdo.PersistenceManagerHolder@552f12] for key
    [kodo.jdo.PersistenceManagerFactoryImpl@c2c9af] from thread [http-8443-Processor24]>
    2006-04-04 02:03:13,934 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] -
    <Persistence manager kodo.jdo.PersistenceManagerImpl@cc70c2, factory
    kodo.jdo.PersistenceManagerFactoryImpl@c2c9af is transactional: false>
    2006-04-04 02:03:13,935 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] -
    <Closing JDO PersistenceManager>
    2006-04-04 02:03:13,935 DEBUG [org.springframework.orm.jdo.PersistenceManagerFactoryUtils] - <
    persistence manager = kodo.jdo.PersistenceManagerImpl@cc70c2, factory =
    kodo.jdo.PersistenceManagerFactoryImpl@c2c9af>
    2006-04-04 02:03:13,935 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] - <mdslog
    - AbstractPlatformTransactionManager end triggerBeforeCompletion>
    2006-04-04 02:03:13,935 DEBUG [org.springframework.transaction.jta.JtaTransactionManager] -
    <Initiating transaction rollback>

  • Kodo JDO 2.5.0 now available

    All,
    Kodo JDO 2.5.0 is now available. Thanks, everyone, for helping out
    throughout the 2.5.0 public beta period. You're all great.
    You can get Kodo JDO 2.5.0 at:
    http://solarmetric.com/Software/Purchase/download.php
    Major changes include:
    - Major query modifications. Unbound variables are now supported,
    Collections can be used as parameters in queries, and several SQL
    inefficiencies have been addressed.
    - Custom fetch group support.
    - Kodo now supports incremental flushing of data to the database.
    This can be useful in EJB environments when using container-managed
    transactions, in order to handle any flush-related exceptions
    within the bean code. It can also be useful in conjunction with
    Kodo's automatic flushing capabilities to accelerate querying when
    the javax.jdo.option.IgnoreCache property is set to false.
    - Added JDOException subclasses for certain interesting exception
    types: OptimisticLockException and ObjectNotFoundException.
    - Enhancement-time metadata enhancement has been improved. This means
    that you may see some errors the next time you re-enhance your
    project, but that's for the best -- they were errors anyways.
    - Data caching framework now caches JDOQL query results as well as
    persistence-capable data. This provides dramatic acceleration for
    commonly executed queries.
    - The data caching framework has been reworked to separate out the
    data cache capabilities from the remote event notification
    capabilities. As a result, 2.5.0 data cache configuration is not
    compatible with earlier data cache configuration, and custom cache
    extensions will likely need some level of revision. For details,
    see the release notes in the Kodo JDO Developer's Guide.
    For more details, see the Kodo JDO Developer's Guide and the full release
    notes, available at:
    http://solarmetric.com/docs/2.5.0RC3/docs/index.html
    http://solarmetric.com/docs/2.5.0RC3/docs/relnotes.html
    Enjoy,
    -Patrick
    Patrick Linskey
    SolarMetric Inc.

    Minor correction:
    http://solarmetric.com/docs/2.5.0RC3/docs/index.html
    http://solarmetric.com/docs/2.5.0RC3/docs/relnotes.html
    The 2.5.0 final docs are actually at:
    http://solarmetric.com/docs/2.5.0/docs/index.html
    http://solarmetric.com/docs/2.5.0/docs/relnotes.html
    In article <[email protected]>, Patrick Linskey wrote:
    All,
    Kodo JDO 2.5.0 is now available. Thanks, everyone, for helping out
    throughout the 2.5.0 public beta period. You're all great.
    You can get Kodo JDO 2.5.0 at:
    http://solarmetric.com/Software/Purchase/download.php
    Major changes include:
    - Major query modifications. Unbound variables are now supported,
    Collections can be used as parameters in queries, and several SQL
    inefficiencies have been addressed.
    - Custom fetch group support.
    - Kodo now supports incremental flushing of data to the database.
    This can be useful in EJB environments when using container-managed
    transactions, in order to handle any flush-related exceptions
    within the bean code. It can also be useful in conjunction with
    Kodo's automatic flushing capabilities to accelerate querying when
    the javax.jdo.option.IgnoreCache property is set to false.
    - Added JDOException subclasses for certain interesting exception
    types: OptimisticLockException and ObjectNotFoundException.
    - Enhancement-time metadata enhancement has been improved. This means
    that you may see some errors the next time you re-enhance your
    project, but that's for the best -- they were errors anyways.
    - Data caching framework now caches JDOQL query results as well as
    persistence-capable data. This provides dramatic acceleration for
    commonly executed queries.
    - The data caching framework has been reworked to separate out the
    data cache capabilities from the remote event notification
    capabilities. As a result, 2.5.0 data cache configuration is not
    compatible with earlier data cache configuration, and custom cache
    extensions will likely need some level of revision. For details,
    see the release notes in the Kodo JDO Developer's Guide.
    For more details, see the Kodo JDO Developer's Guide and the full release
    notes, available at:
    http://solarmetric.com/docs/2.5.0RC3/docs/index.html
    http://solarmetric.com/docs/2.5.0RC3/docs/relnotes.html
    Enjoy,
    -Patrick
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Trouble running mappingtool on Kodo-jdo 3.0.2

    Hi
    I was trying to run the Kodo tutorial. I was able to run jdoc
    properties.jdo, but I am having trouble running mappingtool. I am having
    trouble getting Oracle to work properly. Here is the output:
    C:\kodoanimals\test\tutorial>mappingtool -action refresh package.jdo
    Exception in thread "main" kodo.util.FatalDataStoreException:
    oracle.jdbc.driver.OracleDriver
    NestedThrowables:
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at
    kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:42)
    at
    kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:24)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:97)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:880)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:798)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:886)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:895)
    at kodo.jdbc.schema.SchemaTool.<init>(SchemaTool.java:67)
    at kodo.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:243)
    at kodo.jdbc.meta.MappingTool.getSchemaTool(MappingTool.java:233)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:864)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:816)
    at kodo.jdbc.meta.MappingTool.main(MappingTool.java:749)
    Caused by: java.lang.ClassNotFoundException:
    oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:219)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:55)
    ... 10 more
    NestedThrowablesStackTrace:
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:219)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:55)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:880)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:798)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:886)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:895)
    at kodo.jdbc.schema.SchemaTool.<init>(SchemaTool.java:67)
    at kodo.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:243)
    at kodo.jdbc.meta.MappingTool.getSchemaTool(MappingTool.java:233)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:864)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:816)
    at kodo.jdbc.meta.MappingTool.main(MappingTool.java:749)
    Here is what my kodo.properties file looks like (located at
    c:\kodo-jdo-3.0.2 directory)
    kodo.LicenseKey: xxxx
    javax.jdo.PersistenceManagerFactoryClass:com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory
    #javax.jdo.PersistenceManagerFactoryClass:kodo.jdbc.runtime.JDBCPersistenceManagerFactory
    javax.jdo.option.ConnectionDriverName:oracle.jdbc.driver.OracleDriver
    javax.jdo.option.ConnectionUserName:teckusr04
    javax.jdo.option.ConnectionPassword:teckusr04
    javax.jdo.option.ConnectionURL:jdbc:oracle:thin:casrvta6861dt11:1521:casrvta6
    javax.jdo.option.Optimistic:true
    javax.jdo.option.RetainValues:true
    javax.jdo.option.NontransactionalRead:true
    I have set my path to include both jre1.4, as well as the kodo\bin
    directory. My classpath is shown here
    C:\j2sdk1.4.2_03\bin;C:\j2sdk1.4.2_03\lib;C:\j2sdk1.4.2_03\jre\lib;C:\kodo-jdo-3.0.2;C:\kodo-jdo-3.0.2\lib;C:\oracle\ora92\jdbc\lib;.;
    I suspect my error is either from my classpath or my kodo.properties file.
    Is there any other reason that I am getting this error?
    Thanks
    Joe

    You should add your classes12.jar to your classpath. If you are using
    Kodo's scripts, you should edit bin/jdocmd.bat to include your library.
    Joe DeVilla wrote:
    >
    Hi
    I was trying to run the Kodo tutorial. I was able to run jdoc
    properties.jdo, but I am having trouble running mappingtool. I am having
    trouble getting Oracle to work properly. Here is the output:
    C:\kodoanimals\test\tutorial>mappingtool -action refresh package.jdo
    Exception in thread "main" kodo.util.FatalDataStoreException:
    oracle.jdbc.driver.OracleDriver
    NestedThrowables:
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at
    kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:42)
    at
    kodo.jdbc.sql.SQLExceptions.getFatalDataStore(SQLExceptions.java:24)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:97)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:880)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:798)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:886)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:895)
    at kodo.jdbc.schema.SchemaTool.<init>(SchemaTool.java:67)
    at kodo.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:243)
    at kodo.jdbc.meta.MappingTool.getSchemaTool(MappingTool.java:233)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:864)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:816)
    at kodo.jdbc.meta.MappingTool.main(MappingTool.java:749)
    Caused by: java.lang.ClassNotFoundException:
    oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:219)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:55)
    ... 10 more
    NestedThrowablesStackTrace:
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:219)
    at
    kodo.jdbc.schema.DataSourceFactory.createDataSource(DataSourceFactory.java:55)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:880)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:798)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:886)
    at
    kodo.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:895)
    at kodo.jdbc.schema.SchemaTool.<init>(SchemaTool.java:67)
    at kodo.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:243)
    at kodo.jdbc.meta.MappingTool.getSchemaTool(MappingTool.java:233)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:864)
    at kodo.jdbc.meta.MappingTool.run(MappingTool.java:816)
    at kodo.jdbc.meta.MappingTool.main(MappingTool.java:749)
    Here is what my kodo.properties file looks like (located at
    c:\kodo-jdo-3.0.2 directory)
    kodo.LicenseKey: xxxx
    javax.jdo.PersistenceManagerFactoryClass:com.solarmetric.kodo.impl.jdbc.JDBCPersistenceManagerFactory
    #javax.jdo.PersistenceManagerFactoryClass:kodo.jdbc.runtime.JDBCPersistenceManagerFactory
    javax.jdo.option.ConnectionDriverName:oracle.jdbc.driver.OracleDriver
    javax.jdo.option.ConnectionUserName:teckusr04
    javax.jdo.option.ConnectionPassword:teckusr04
    javax.jdo.option.ConnectionURL:jdbc:oracle:thin:casrvta6861dt11:1521:casrvta6
    javax.jdo.option.Optimistic:true
    javax.jdo.option.RetainValues:true
    javax.jdo.option.NontransactionalRead:true
    I have set my path to include both jre1.4, as well as the kodo\bin
    directory. My classpath is shown here
    C:\j2sdk1.4.2_03\bin;C:\j2sdk1.4.2_03\lib;C:\j2sdk1.4.2_03\jre\lib;C:\kodo-jdo-3.0.2;C:\kodo-jdo-3.0.2\lib;C:\oracle\ora92\jdbc\lib;.;
    I suspect my error is either from my classpath or my kodo.properties file.
    Is there any other reason that I am getting this error?
    Thanks
    Joe
    Steve Kim
    [email protected]
    SolarMetric Inc.
    http://www.solarmetric.com

  • Kodo JDO 2.5.0RC1 - SchemaTool throws...

    The 2.5.0RC1 SchemaTool is throwing. Looks like the sequence manipulation
    stuff is the culprit.
    INFO [main] (DataSourceImpl.java:288) - [ C:7457782; T:2704014; D:5285337 ]
    close connection
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper:
    [SQL=SELECT JDO_SEQUENCEX.SEQUENCEX FROM JDO_SEQUENCEX WHERE
    JDO_SEQUENCEX.PKX = 0]
    [PRE=SELECT JDO_SEQUENCEX.SEQUENCEX FROM JDO_SEQUENCEX WHERE
    JDO_SEQUENCEX.PKX = ?]
    General error, message from server: "Table 'demo.jdo_sequencex' doesn't
    exist"
    at
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper.wrapSQLException(SQLE
    xceptionWrapper.java:27)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.handle(SQLExecutionMa
    nagerImpl.java:1244)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQueryInternal(
    SQLExecutionManagerImpl.java:682)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecu
    tionManagerImpl.java:357)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecu
    tionManagerImpl.java:341)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.getCurrentSequence(D
    BSequenceFactory.java:277)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.seedSequenceTable(DB
    SequenceFactory.java:158)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.initializeSchema(DBS
    equenceFactory.java:132)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refreshSequenceTables(Schem
    aTool.java:393)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refresh(SchemaTool.java:340
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refresh(SchemaTool.java:321
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1166)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1102)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1075)
    Exception in thread "main"
    Here is how I'm running it...
    #!/bin/sh
    KODO_HOME='c:/Software/kodo-jdo-2.5.0RC1'
    CLASSPATH="build/build-im_platform;$KODO_HOME;$KODO_HOME/lib/kodo-jdo.jar;li
    b/jdo1_0.jar;$KODO_HOME/lib/xml-apis.jar;$KODO_HOME/lib/xercesImpl.jar;lib/j
    dbc2_0-stdext.jar;lib/commons-logging.jar;lib/log4j.jar;lib/commons-lang.jar
    ;lib/commons-collections.jar;lib/commons-pool.jar;c:/Software/mysql-connecto
    r-java-3.0.7-stable/mysql-connector-java-3.0.7-stable-bin.jar"
    files=`find src/com/metasolv -name '*.jdo' -print | sort`
    java -cp $CLASSPATH com.solarmetric.kodo.impl.jdbc.schema.SchemaTool -action
    refresh $files -outfile tmpschema.sql
    sort tmpschema.sql > schema.sql
    rm tmpschema.sql
    The output file contains only the one line:
    CREATE TABLE JDO_SEQUENCEX (PKX SMALLINT NOT NULL, SEQUENCEX BIGINT, PRIMARY
    KEY (PKX));
    I suspect that SchemaTool should not be trying to execute SELECT statements,
    if it generating the schema to an output file instead of directly
    manipulating the database.
    Ben

    Ben-
    This is a bug in RC1, and will be fixed in the final release. The only
    current workaround is to either manually create the sequence table on
    the server, or else not output the table creation to a file, but execute
    it directly to the database.
    In article <[email protected]>, Ben Eng wrote:
    The 2.5.0RC1 SchemaTool is throwing. Looks like the sequence manipulation
    stuff is the culprit.
    INFO [main] (DataSourceImpl.java:288) - [ C:7457782; T:2704014; D:5285337 ]
    close connection
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper:
    [SQL=SELECT JDO_SEQUENCEX.SEQUENCEX FROM JDO_SEQUENCEX WHERE
    JDO_SEQUENCEX.PKX = 0]
    [PRE=SELECT JDO_SEQUENCEX.SEQUENCEX FROM JDO_SEQUENCEX WHERE
    JDO_SEQUENCEX.PKX = ?]
    General error, message from server: "Table 'demo.jdo_sequencex' doesn't
    exist"
    at
    com.solarmetric.kodo.impl.jdbc.sql.SQLExceptionWrapper.wrapSQLException(SQLE
    xceptionWrapper.java:27)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.handle(SQLExecutionMa
    nagerImpl.java:1244)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQueryInternal(
    SQLExecutionManagerImpl.java:682)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecu
    tionManagerImpl.java:357)
    at
    com.solarmetric.kodo.impl.jdbc.SQLExecutionManagerImpl.executeQuery(SQLExecu
    tionManagerImpl.java:341)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.getCurrentSequence(D
    BSequenceFactory.java:277)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.seedSequenceTable(DB
    SequenceFactory.java:158)
    at
    com.solarmetric.kodo.impl.jdbc.schema.DBSequenceFactory.initializeSchema(DBS
    equenceFactory.java:132)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refreshSequenceTables(Schem
    aTool.java:393)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refresh(SchemaTool.java:340
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.refresh(SchemaTool.java:321
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1166)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1102)
    at
    com.solarmetric.kodo.impl.jdbc.schema.SchemaTool.main(SchemaTool.java:1075)
    Exception in thread "main"
    Here is how I'm running it...
    #!/bin/sh
    KODO_HOME='c:/Software/kodo-jdo-2.5.0RC1'
    CLASSPATH="build/build-im_platform;$KODO_HOME;$KODO_HOME/lib/kodo-jdo.jar;li
    b/jdo1_0.jar;$KODO_HOME/lib/xml-apis.jar;$KODO_HOME/lib/xercesImpl.jar;lib/j
    dbc2_0-stdext.jar;lib/commons-logging.jar;lib/log4j.jar;lib/commons-lang.jar
    ;lib/commons-collections.jar;lib/commons-pool.jar;c:/Software/mysql-connecto
    r-java-3.0.7-stable/mysql-connector-java-3.0.7-stable-bin.jar"
    files=`find src/com/metasolv -name '*.jdo' -print | sort`
    java -cp $CLASSPATH com.solarmetric.kodo.impl.jdbc.schema.SchemaTool -action
    refresh $files -outfile tmpschema.sql
    sort tmpschema.sql > schema.sql
    rm tmpschema.sql
    The output file contains only the one line:
    CREATE TABLE JDO_SEQUENCEX (PKX SMALLINT NOT NULL, SEQUENCEX BIGINT, PRIMARY
    KEY (PKX));
    I suspect that SchemaTool should not be trying to execute SELECT statements,
    if it generating the schema to an output file instead of directly
    manipulating the database.
    Ben
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Please remove Class-Path from kodo-jdo-runtime.jar manifest

    This is repost. Class-Path should not be in manifest of
    kodo-jdo-runtime.jar
    It causes problems with security manager when using signed jars under
    webstart. It can potentially cause all kind of other problems due to class
    path conflicts
    Seems to be a problem in manifest. It is due to Class-Path in manifest. I
    deleted manifest from kodo-jdo-runtime and signed it seems to be ok.
    I got more meaningful error now - serp.jar is missing
    I would suggest to remove Class-Path from this jar. I've seen some very
    weired behaviour of systems with Class-Path in different jars. I believe it
    should be only in your application jar
    Class-Path: serp.jar jca1.0.jar jca.jar crimson.jar xerces.jar jaxp.jar
    jdo1_0.jar jdo.jar jdbc2_0-stdext.jar jndi.jar jta-spec1_0_1.jar jta.jar
    I would also remove following:
    Main-Class: com.solarmetric.kodo.enhance.JDOEnhancer
    OpenTools-UI: com.solarmetric.modules.integration.jbuilder.KodoTools
    OpenTools-Build: com.solarmetric.modules.integration.jbuilder.KodoBuilder
    because it does not belong to kodo-jdo.runtime.jar
    "Alex Roytman" <[email protected]> wrote in message
    news:ahi05g$veq$[email protected]..
    I am having troubles running kodo 2.3 application under web start.
    I am getting following error:
    Missing signed entry in resource:
    http://ptilx1/usorg/webstart/lib/kodo-jdo-runtime.jar
    I signed kodo-jdo-runtime.jar as usual
    The same deployment worked fine with Kodo 2.2.5

    Alex-
    In article <ahk7vi$cmf$[email protected]>, Alex Roytman wrote:
    This is repost. Class-Path should not be in manifest of
    kodo-jdo-runtime.jar
    It causes problems with security manager when using signed jars under
    webstart. It can potentially cause all kind of other problems due to class
    path conflictsThanks for the feedback. We will remove the entries. In general, it is nice
    to have it in the Class-Path, since they you only need to
    kodo-jdo-runtime.jar in the CLASSPATH variable, but we were not aware of
    it causing any problems.
    Seems to be a problem in manifest. It is due to Class-Path in manifest. I
    deleted manifest from kodo-jdo-runtime and signed it seems to be ok.
    I got more meaningful error now - serp.jar is missing
    I would suggest to remove Class-Path from this jar. I've seen some very
    weired behaviour of systems with Class-Path in different jars. I believe it
    should be only in your application jar
    Class-Path: serp.jar jca1.0.jar jca.jar crimson.jar xerces.jar jaxp.jar
    jdo1_0.jar jdo.jar jdbc2_0-stdext.jar jndi.jar jta-spec1_0_1.jar jta.jar
    I would also remove following:
    Main-Class: com.solarmetric.kodo.enhance.JDOEnhancer
    OpenTools-UI: com.solarmetric.modules.integration.jbuilder.KodoTools
    OpenTools-Build: com.solarmetric.modules.integration.jbuilder.KodoBuilder
    because it does not belong to kodo-jdo.runtime.jarCorrect again: we will remove it in the upcoming release.
    "Alex Roytman" <[email protected]> wrote in message
    news:ahi05g$veq$[email protected]..
    I am having troubles running kodo 2.3 application under web start.
    I am getting following error:
    Missing signed entry in resource:
    http://ptilx1/usorg/webstart/lib/kodo-jdo-runtime.jar
    I signed kodo-jdo-runtime.jar as usual
    The same deployment worked fine with Kodo 2.2.5
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com
    Kodo Java Data Objects Full featured JDO: eliminate the SQL from your code

  • Open Source BI Tool Now Supports Kodo JDO

    Folks,
    To keep you posted on the latest tools that work with Kodo JDO, we
    will try and post notices here on our newsgroups. ObjectVisualizer
    is a third party open source querying, reporting and graphing tool that
    now supports Kodo JDO. Let us know what you think.
    Neelan Choksi
    President, SolarMetric
    ObjectVisualizer is a business intelligence tool that builds upon
    Object Persistence technology to provide easy to use query, reporting,
    and charting capabilities.
    Features include: Query, filter, and aggregate data using objects,
    Interactive Data Table, Report Generation, Chart Creation, and Plugin
    Architecture.
    ObjectVisualizer now supports KodoJDO! ObjectVisualizer 1.0.1 includes
    a KodoJDO plugin along with a number of bug fixes and enhancements.
    A new Early Access release of ObjectVisualizer Server Edition is also
    available. ObjectVisualizer Server Edition EAP-2 has been upgraded to
    work with ObjectVisualizer 1.0.1 and includes a number of performance
    enhancements.
    For more information visit:
    http://objectvisualizer.com
    Thank you,
    Open Source Software Solutions, LLC
    http://opensourcesoft.net

    Folks,
    To keep you posted on the latest tools that work with Kodo JDO, we
    will try and post notices here on our newsgroups. ObjectVisualizer
    is a third party open source querying, reporting and graphing tool that
    now supports Kodo JDO. Let us know what you think.
    Neelan Choksi
    President, SolarMetric
    ObjectVisualizer is a business intelligence tool that builds upon
    Object Persistence technology to provide easy to use query, reporting,
    and charting capabilities.
    Features include: Query, filter, and aggregate data using objects,
    Interactive Data Table, Report Generation, Chart Creation, and Plugin
    Architecture.
    ObjectVisualizer now supports KodoJDO! ObjectVisualizer 1.0.1 includes
    a KodoJDO plugin along with a number of bug fixes and enhancements.
    A new Early Access release of ObjectVisualizer Server Edition is also
    available. ObjectVisualizer Server Edition EAP-2 has been upgraded to
    work with ObjectVisualizer 1.0.1 and includes a number of performance
    enhancements.
    For more information visit:
    http://objectvisualizer.com
    Thank you,
    Open Source Software Solutions, LLC
    http://opensourcesoft.net

  • Should IDE integration classes be in kodo-jdo-runtime.jar?

    Should IDE integration classes be in kodo-jdo-runtime.jar? or even in
    kodo-jdo.jar? they probably should go to a separate jsr

    Probably. We're moving the integration stuff (ide and ant) out at some point
    soon.
    On 6/6/02 12:29 AM, "Alex Roytman" <[email protected]> wrote:
    Should IDE integration classes be in kodo-jdo-runtime.jar? or even in
    kodo-jdo.jar? they probably should go to a separate jsr
    Patrick Linskey [email protected]
    SolarMetric Inc. http://www.solarmetric.com

  • Kodo.jdo.ObjectNotFoundException: The instance "netscape.ldap.LDAPException

    Hi..
    I am getting this error .. when i am deploying an application.
    weblogic.application.ModuleException:
    at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:387)
    at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:58)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:42)
    at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
    at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
    at weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:16)
    at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:155)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:197)
    at weblogic.deploy.internal.targetserver.operations.StartOperation.createAndPrepareContainer(StartOperation.java:88)
    at weblogic.deploy.internal.targetserver.operations.StartOperation.doPrepare(StartOperation.java:101)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:723)
    at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1190)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:248)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:12)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:45)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    <openjpa-1.1.0-r422266:657916 nonfatal store error> kodo.jdo.ObjectNotFoundException: The instance "netscape.ldap.LDAPException: error result (32)" does not exist in
    the data store.
    FailedObject: netscape.ldap.LDAPException: error result (32) [java.lang.String]
    at kodo.jdo.ObjectNotFoundException.newSerializableInstance(ObjectNotFoundException.java:90)
    at kodo.jdo.ObjectNotFoundException.writeReplace(ObjectNotFoundException.java:80)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:1032)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1107)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
    at java.lang.Throwable.writeObject(Throwable.java:648)
    at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
    at java.util.ArrayList.writeObject(ArrayList.java:579)
    at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
    at weblogic.common.internal.WLObjectOutputStream.writeArrayList(WLObjectOutputStream.java:117)
    at weblogic.deploy.service.internal.transport.DeploymentServiceMessage.writeMessage(DeploymentServiceMessage.java:272)
    at weblogic.deploy.service.internal.transport.DeploymentServiceMessage.writeExternal(DeploymentServiceMessage.java:239)
    at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1421)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1390)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
    at weblogic.deploy.service.internal.transport.http.HTTPMessageSender.sendMessageToServerURL(HTTPMessageSender.java:276)
    at weblogic.deploy.service.internal.transport.http.HTTPMessageSender.sendMessageToAdminServer(HTTPMessageSender.java:134)
    at weblogic.deploy.service.internal.transport.CommonMessageSender.sendPrepareNakMsg(CommonMessageSender.java:578)
    at weblogic.deploy.service.internal.statemachines.targetserver.TargetServerState.sendPrepareNak(TargetServerState.java:392)
    at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingPrepareCompletion.prepareFailed(AwaitingPrepareCompletion.java:124)
    at weblogic.deploy.service.internal.targetserver.TargetDeploymentService.notifyPrepareFailure(TargetDeploymentService.java:324)
    at weblogic.deploy.service.internal.DeploymentService$4.run(DeploymentService.java:223)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Any ideas.. i dont know this is right place post to this issue..
    Thanks
    Raj

    I was receiving a very similar error stack trace. I stopped the managed server, then deleted it's ldap folder. When I restarted the managed server, it came it w/o any errors.
    Cheers,
    Rob

Maybe you are looking for

  • Report Using PL/SQL Region

    Hi, I have bit experiment create custom reports using PL/SQL region http://dbswh.webhop.net/apex/f?p=BLOG:READ:0::::ARTICLE:97800346956448 I would like have from you tips and ideas how enhance this. Because I'm not so good with SQL, I really apprecia

  • Field description in chart legend instead of technical name (BW query)?

    I am building a report from a BW query. The report has a grouping field and a bar chart in the group footer. When I execute the report the legend shows the technical name of the key figures even though I checked the "Show description" field in the "o

  • Approval Decision Report Error

    Hello to all, I have a problem regarding the approval decision report functionality in SBO. I have set-up an approval template with 4 originators (say, persons A, B, C and D) and one approving manager. The approval check is applied to A/P Invoices an

  • ICal Recovery from iPod to Laptop Possible?

    I lost my iCal when my harddrive died -- though I have a recent version of my iCal postings on my iPod Classic. Is there a way to get that data back into my new iCal on my Powerbook G4? I should note that I did have my laptop backed up on an external

  • Wireless playing music on MacBook Pro via LaCie Fuel

    I bought a LaCie Fuel 1 TB (wireless external hard drive) for my ipad. But since it's not that cheap. I want to use it for my macbook pro as well. I transferred the whole Itunes folder (incl library etc) to the hard drive. I put the music back in the