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.comAn 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 -
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.
BenMarc,
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.comTo 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,
MarkAbe 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
JoeYou 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.
BenBen-
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.5Alex-
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.netFolks,
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 jsrProbably. 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 -
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
RajI 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