0 Replies Latest reply on Jan 9, 2004 11:12 AM by pmir

    ejb entity definition (migration from weblogic 7 to jboss 3.

    pmir

      Hi,

      I have worked several month on WebLogic but i am a little newbie on jboss.
      I try to test the availibility to migrate weblogic (7.01) ejbs on jboss (3.2.2RC1) with Tomcat (4.1.24) on an DB2/AS400 database.

      I'm also using JBuilder 9 ide for development

      No problem for session ejb but i have some difficulties with entities ejb (cmp 2.0).

      The difficulties are with the definition of entity relationship.

      Several keyword of the relationship seems to be un-recognized by jboss. (i.e. : "multiplicity")

      I wonder if i user the correct files definition or if i missed an important step in the migration or jboss configuration.

      I am using the "jbosscmp-jdbc_3_2.dtd" definition and my project's ejb are defined in the "standardjbosscmp-jdbc.xml" file.

      The "jbosscmp-jdbc.xml" has not changed.

      See "attached" files for details.

      Help would be appreciate.
      Thanks

      Philippe

      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      standardjbosscmp-jdbc.xml

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE jbosscmp-jdbc PUBLIC
      "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN"
      "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd">

      <!-- ===================================================================== -->
      <!-- -->
      <!-- Standard JBossCMP-JDBC Configuration -->
      <!-- -->
      <!-- ===================================================================== -->

      <!-- $Id: standardjbosscmp-jdbc.xml,v 1.39.2.19 2003/05/23 15:32:23 pilhuhn Exp $ -->

      <jbosscmp-jdbc>

      <!-- ===================================================================== -->
      <!-- -->
      <!-- Default -->
      <!-- -->
      <!-- ===================================================================== -->



      java:/GIE1DataSource
      <datasource-mapping>DB2/400</datasource-mapping>

      <create-table>true</create-table>
      <remove-table>false</remove-table>
      <read-only>false</read-only>
      <read-time-out>300000</read-time-out>
      <row-locking>false</row-locking>
      <pk-constraint>true</pk-constraint>
      <fk-constraint>false</fk-constraint>
      <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
      <read-ahead>
      on-load
      <page-size>1000</page-size>
      <eager-load-group>*</eager-load-group>
      </read-ahead>
      <list-cache-max>1000</list-cache-max>

      <unknown-pk>
      <key-generator-factory>UUIDKeyGeneratorFactory</key-generator-factory>
      <unknown-pk-class>java.lang.String</unknown-pk-class>
      <jdbc-type>VARCHAR</jdbc-type>
      <sql-type>VARCHAR(32)</sql-type>
      </unknown-pk>

      <entity-command name="default"/>




      etc....
      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      jbosscmp-jdbc_3_2.dtd (standard)

      <?xml version='1.0' encoding='UTF-8' ?>

      <!--
      This is the XML DTD for the jbosscmp-jdbc deployment descriptor.
      <!DOCTYPE jbosscmp-jdbc PUBLIC
      "-//JBoss//DTD JBOSSCMP-JDBC 3.2//EN"
      "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_2.dtd">
      -->

      <!--
      The root element of JBossCMP-JDBC configuration files.
      -->
      <!ELEMENT jbosscmp-jdbc (defaults?, enterprise-beans?, relationships?,
      dependent-value-classes?, type-mappings?, entity-commands?)>

      <!--
      The optional defaults elements contains the default values for
      entities, and relationships.
      -->
      <!ELEMENT defaults ((datasource, datasource-mapping)?, create-table?,
      remove-table?, post-table-create?, read-only?, read-time-out?,
      row-locking?, pk-constraint?, fk-constraint?,
      preferred-relation-mapping?, read-ahead?, list-cache-max?,
      fetch-size?, unknown-pk?, entity-command?)>

      <!--
      The optional datasource element contains the jndi-name used to lookup
      the datasource. All database connections used by an entity or relation table are obtained from the datasource.
      -->
      <!ELEMENT datasource (#PCDATA)>


      <!--
      The optional datasource-mapping element contains the name of the type mapping
      that will be used for this datasource.
      -->
      <!ELEMENT datasource-mapping (#PCDATA)>


      <!--
      Should the persistence manager attempt to create tables if they are
      not present?

      The create-table element must be one of the two following:
      <create-table>true</create-table>
      <create-table>false</create-table>
      -->
      <!ELEMENT create-table (#PCDATA)>


      <!--
      Should the persistence manager attempt to remove tables during shutdown?

      The remove-table element must be one of the two following:
      <remove-table>true</remove-table>
      <remove-table>false</remove-table>
      -->
      <!ELEMENT remove-table (#PCDATA)>


      <!--
      Execute arbitrary SQL code directly after the database table is created.
      This command is only executed if create-table is true and the table
      did not previously exist.
      -->
      <!ELEMENT post-table-create (sql-statement+)>

      <!--
      The SQL Statement to be executed. Note that this is not translated
      into database specific SQL, but passed literally to the database.
      -->
      <!ELEMENT sql-statement (#PCDATA)>

      <!--
      Is the entity or cmp-field read-only?

      The read-only element must be one of the two following:
      <read-only>true</read-only>
      <read-only>false</read-only>
      -->
      <!ELEMENT read-only (#PCDATA)>


      <!--
      Specifies the ammount of time that a read-only field is considered
      valid (milliseconds).
      -->
      <!ELEMENT read-time-out (#PCDATA)>


      <!--
      Should select statements the SELECT ... FOR UPDATE syntax?

      The row-locking element must be one of the two following:
      <row-locking>true</row-locking>
      <row-locking>false</row-locking>
      -->
      <!ELEMENT row-locking (#PCDATA)>


      <!--
      Should a foreign key constraint be added for this relationship role?

      The fk-constraint element must be one of the two following:
      <fk-constraint>true</fk-constraint>
      <fk-constraint>false</fk-constraint>
      -->
      <!ELEMENT fk-constraint (#PCDATA)>


      <!--
      Should a primary key constraint be added when creating tables?

      The pk-constraint element must be one of the two following:
      <pk-constraint>true</pk-constraint>
      <pk-constraint>false</pk-constraint>
      -->
      <!ELEMENT pk-constraint (#PCDATA)>


      <!--
      Specifies the preferred mapping style for relationships.

      The preferred-relation-mapping element must be one of the two following:
      <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
      <preferred-relation-mapping>relation-table</preferred-relation-mapping>
      -->
      <!ELEMENT preferred-relation-mapping (#PCDATA)>

      <!--
      Specifies the read ahead strategy.

      <read-ahead>
      on-load
      <page-size>255</page-size>
      <eager-load-group>*</eager-load-group>
      </read-ahead>
      -->
      <!ELEMENT read-ahead (strategy, page-size?, eager-load-group?)>

      <!--
      Specifies the strategy used to read-ahead data in queries.

      The strategy element must be one of the two following:
      none
      on-load
      on-find
      -->
      <!ELEMENT strategy (#PCDATA)>


      <!--
      Specifies the number of entities that will be read in a single
      read-ahead load query.
      -->
      <!ELEMENT page-size (#PCDATA)>


      <!--
      Specifies the number of simultaneous queries that can be tracked by
      the cache for an entity.
      -->
      <!ELEMENT list-cache-max (#PCDATA)>


      <!--
      Specifies the number of entities to read in one round-trip to
      the underlying datastore.
      -->
      <!ELEMENT fetch-size (#PCDATA)>


      <!--
      The enterprise-beans element contains the entity elements that will
      be configured.
      -->
      <!ELEMENT enterprise-beans (entity+)>


      <!--
      The entity element contains the configuration of an entity
      -->
      <!ELEMENT entity (ejb-name, (datasource, datasource-mapping)?, create-table?,
      remove-table?, post-table-create?, read-only?, read-time-out?,
      row-locking?,pk-constraint?, read-ahead?, list-cache-max?, fetch-size?,
      table-name?, cmp-field*, load-groups?, eager-load-group?,
      lazy-load-groups?, query*, unknown-pk?, entity-command?,
      optimistic-locking?, audit?)>

      <!--
      Name of the entity being configured. This must match an entity declared
      in the ejb-jar.xml file.
      -->
      <!ELEMENT ejb-name (#PCDATA)>


      <!--
      This is the name of the table that will hold data for this entity.
      Each entity instance will be stored in one row of this table.
      -->
      <!ELEMENT table-name (#PCDATA)>


      <!--
      The cmp-field element contains the configuration of a cmp-field.
      -->
      <!ELEMENT cmp-field (field-name, read-only?, read-time-out?,
      column-name?, not-null?, ((jdbc-type, sql-type) | (property+))?,
      auto-increment?, dbindex? )>


      <!--
      Name of the cmp-field being configured. This must match a cmp-field
      declared for this entity in the ejb-jar.xml file.
      -->
      <!ELEMENT field-name (#PCDATA)>


      <!--
      The name of the column that will hold the data for this field.
      -->
      <!ELEMENT column-name (#PCDATA)>


      <!--
      If present the field will not allow a field value.
      -->
      <!ELEMENT not-null EMPTY>

      <!--
      If present, the server will try to create an index on the column
      in the database called _index
      -->
      <!ELEMENT dbindex EMPTY>


      <!--
      This is the JDBC type that is used when setting parameters in a JDBC
      PreparedStatement or loading data from a JDBC ResultSet for this
      cmp-field. The valid types are defined in java.sql.Types.
      -->
      <!ELEMENT jdbc-type (#PCDATA)>


      <!--
      This is the SQL type that is used in create table statements for
      this field. Valid sql-types are only limited by your database vendor.
      -->
      <!ELEMENT sql-type (#PCDATA)>


      <!--
      The property element contains the configuration of a dependent
      value class property of a cmp-field that is the type of a dependent
      value class.
      -->
      <!ELEMENT property (property-name, column-name?, not-null?,
      (jdbc-type, sql-type)?)>


      <!--
      Name of the property being configured. In a dependent-value-class
      element this must match a JavaBean property of the class. In a
      cmp-field element this must match a flattened propety of the
      dependent-value-class field type.
      -->
      <!ELEMENT property-name (#PCDATA)>

      <!--
      Contains the named load groups.
      -->
      <!ELEMENT load-groups (load-group+)>


      <!--
      A named group of fields that will be loaded together.
      -->
      <!ELEMENT load-group (description?, load-group-name, field-name+)>

      <!--
      Contains the name of a load group.
      -->
      <!ELEMENT load-group-name (#PCDATA)>


      <!--
      Contains the name of the load group that will eager loaded for this entity.
      -->
      <!ELEMENT eager-load-group (#PCDATA)>


      <!--
      Contains the names of the groups that will be lazy loaded together.
      -->
      <!ELEMENT lazy-load-groups (load-group-name+)>


      <!--
      Descriptive text.
      -->
      <!ELEMENT description (#PCDATA)>


      <!--
      The query element contains the configuration of a query.
      -->
      <!ELEMENT query (description?, query-method,
      (jboss-ql | dynamic-ql | declared-sql)?, read-ahead?)>


      <!--
      The query method that being configured. This must match a
      query-method declared for this entity in the ejb-jar.xml file.
      -->
      <!ELEMENT query-method (method-name, method-params)>


      <!--
      The name of the query method that is being configured.
      -->
      <!ELEMENT method-name (#PCDATA)>


      <!--
      The method-parameters contains the parameters of the method that is
      being configured. Method parameters must be in the same order as the
      method and have the same type.
      -->
      <!ELEMENT method-params (method-param*)>


      <!--
      The java class of one parameter for a query.

      An example follows:
      <method-param>java.lang.String</method-param>
      -->
      <!ELEMENT method-param (#PCDATA)>


      <!--
      JBossQL query. JBossQL is a superset of EJB-QL.
      -->
      <!ELEMENT jboss-ql (#PCDATA)>


      <!--
      Dynamic JBossQL query. The JBossQL is passed to the query and compiled
      on the fly.
      -->
      <!ELEMENT dynamic-ql EMPTY>


      <!--
      Explicitly declared sql fragments.
      -->
      <!ELEMENT declared-sql (select?, from?, where?, order?, other?)>


      <!--
      Delcares what is to be selected. A finder may only have the distinct element.
      -->
      <!ELEMENT select (distinct?, (ejb-name, field-name?)?, alias?, additional-columns?)>


      <!--
      Delared additional SQl to append to the generated from clause.

      Example: , FullAddressEJB as a
      -->
      <!ELEMENT from (#PCDATA)>

      <!--
      If the empty distinct element is present, the SELECT DISTINCT
      syntax will be used. This syntax is used by default for ejbSelect
      methods that return a java.util.Set.
      -->
      <!ELEMENT distinct EMPTY>


      <!--
      Declares the where clause for the query.

      Example: TITLE={0} OR ARTIST={0} OR TYPE={0} OR NOTES={0}
      -->
      <!ELEMENT where (#PCDATA)>


      <!--
      Declares the order clause for the query.

      Example: TITLE
      -->
      <!ELEMENT order (#PCDATA)>


      <!--
      Declares the other sql that is appended to the end of a query.

      Example: LIMIT 100 OFFSET 200
      -->
      <!ELEMENT other (#PCDATA)>

      <!--
      Declare the alias to use for the main select table.

      Example: my_table
      -->
      <!ELEMENT alias (#PCDATA)>


      <!--
      Declares other columns to be selected to satisfy ordering
      by arbitrary columns with ejbFinders or to facilitate aggregate
      functions in ejbSelects.

      Example: <additional-columns>, join-table1.column1,
      join-table2.column2</additional-columns>
      -->
      <!ELEMENT additional-columns (#PCDATA)>


      <!--
      The relationships element contains the ejb-relation elements that will
      be configured.
      -->
      <!ELEMENT relationships (ejb-relation+)>


      <!--
      The ejb-relation element contains the configuration of an
      ejb-relation.
      -->
      <!ELEMENT ejb-relation (ejb-relation-name, read-only?, read-time-out?,
      (foreign-key-mapping | relation-table-mapping)?,
      (ejb-relationship-role, ejb-relationship-role)?)>


      <!--
      Name of the ejb-relation being configured. This must match an
      ejb-relation declared in the ejb-jar.xml file.
      -->
      <!ELEMENT ejb-relation-name (#PCDATA)>


      <!--
      Specifies that the ejb-relation should be mapped with foreign-keys.
      This mapping is not available for many-to-many relationships.
      -->
      <!ELEMENT foreign-key-mapping EMPTY>


      <!--
      Specifies that the ejb-relation should be mapped with a relation-table.
      -->
      <!ELEMENT relation-table-mapping (table-name?,
      (datasource, datasource-mapping)?, create-table?, remove-table?,
      post-table-create?,
      row-locking?, pk-constraint?)>


      <!--
      The ejb-rejationship-role element contains the configuration of an
      ejb-relationship-role.
      -->
      <!ELEMENT ejb-relationship-role (ejb-relationship-role-name,
      fk-constraint?, key-fields?, read-ahead?)>


      <!--
      Name of the ejb-relationship-role being configured. This must match
      an ejb-relationship-role declared for this ejb-relation in the
      ejb-jar.xml file.
      -->
      <!ELEMENT ejb-relationship-role-name (#PCDATA)>


      <!--
      Contains the key fields. The interperation of the key fields depends
      on the mapping style of the relationship.
      -->
      <!ELEMENT key-fields (key-field*)>

      <!--
      The key-field element declared the configuration of a key field.
      The field-name element must match the field-name of one of the
      primary key fields of the this entity.
      -->
      <!ELEMENT key-field (field-name,
      ((column-name, (jdbc-type, sql-type)?) | (property*)),
      dbindex?)>


      <!--
      Contains the known dependent value classes.
      -->
      <!ELEMENT dependent-value-classes (dependent-value-class*)>


      <!--
      The dependent-value-class element contains the configuration of a
      dependent value class.
      -->
      <!ELEMENT dependent-value-class (description?, class, property+)>


      <!--
      Name of the java class to which the dependent value class configuration
      applies.
      -->
      <!ELEMENT class (#PCDATA)>


      <!--
      The type-mappings element contains the java to sql mappings.
      -->
      <!ELEMENT type-mappings (type-mapping+)>

      <!--
      The type-mapping element contains a named java to sql mapping.
      This includes both type mapping and function mapping.
      -->
      <!ELEMENT type-mapping (name, row-locking-template, pk-constraint-template,
      fk-constraint-template, alias-header-prefix, alias-header-suffix,
      alias-max-length, subquery-supported, true-mapping, false-mapping,
      function-mapping*, mapping+, entity-commands*)>

      <!--
      Name of the type-mapping.
      -->
      <!ELEMENT name (#PCDATA)>

      <!--
      This is the template used to create a row lock on the selected rows. The
      arguments supplied are as follows:

      1. Select clause
      2. From clasue; the order of the tables is currently not guarenteed
      3. Where clause

      If row locking is not supported in select statement this element should be
      empty. The most common form of row locking is select for update as in the
      example that follows:

      SELECT ?1 FROM ?2 WHERE ?3 FOR UPDATE
      -->
      <!ELEMENT row-locking-template (#PCDATA)>

      <!--
      This is the template used to create a primary key constraint in the create
      table statement. The arguments supplied are as follows:

      1. Primary key constraint name; which is always pk_{table-name}
      2. Comma sepperated list of primary key column names

      If a primary key constraint clause is not supported in a create table statement
      this element should be empty. The most common form of a primary key constraint
      follows:

      CONSTRAINT ?1 PRIMARY KEY (?2)
      -->
      <!ELEMENT pk-constraint-template (#PCDATA)>

      <!--
      This is the template used to create a foreign key constraint in sepperate
      statement. The arguments supplied are as follows:

      1. Table name
      2. Foreign key constraint name; which is always fk_{table-name}_{cmr-field-name}
      3. Comma sepperated list of foreign key column names
      4. References table name
      5. Comma sepperated list of the referenced primary key column names

      If the datasource does not support foreign key constraints this element should
      be empty. The most common form of a foreign key constraint follows:

      ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5)
      -->
      <!ELEMENT fk-constraint-template (#PCDATA)>

      <!--
      An alias header is prepended to a generated table alias by the EJB-QL compiler
      to prevent name collisions. An alias header is constructed as folows:

      alias-header-prefix + int_counter + alias-header-suffix
      -->
      <!ELEMENT alias-header-prefix (#PCDATA)>
      <!ELEMENT alias-header-suffix (#PCDATA)>
      <!ELEMENT alias-max-length (#PCDATA)>

      <!--
      Does this type-mapping support subqueries. Some EJB-QL opperators are mapped
      to exists subqueries. If subquery is false the EJB-QL compiler will use a
      left join and is null.

      The subquery-supported element must be one of the two following:
      <create-table>true</create-table>
      <create-table>false</create-table>
      -->
      <!ELEMENT subquery-supported (#PCDATA)>

      <!--
      The true and false mappings are the mappings for true and false in EJB-QL
      queries.
      -->
      <!ELEMENT true-mapping (#PCDATA)>
      <!ELEMENT false-mapping (#PCDATA)>

      <!--
      Specifies the mapping from a java type to a jdbc and a sql type.
      -->
      <!ELEMENT mapping (java-type, jdbc-type, sql-type)>

      <!--
      Specifies the java class type to be mapped.
      -->
      <!ELEMENT java-type (#PCDATA)>

      <!--
      Specifies the mapping from an EJB-QL function to a sql function.
      -->
      <!ELEMENT function-mapping (function-name, function-sql)>

      <!--
      The name of the function to be mapped.
      -->
      <!ELEMENT function-name (#PCDATA)>

      <!--
      The sql to which the function is mapped. The sql can contain
      parameters specified with a question mark followed by the base one
      parameter number. For example, function mapping for concat in Oracle
      follows:

      <function-mapping>
      <function-name>concat</function-name>
      <function-sql>(?1 || ?2)</function-sql>
      </function-mapping>
      -->
      <!ELEMENT function-sql (#PCDATA)>

      <!--
      Unknown primary key configuration
      -->
      <!ELEMENT unknown-pk (unknown-pk-class, field-name?, read-only?, read-time-out?,
      column-name?, (jdbc-type, sql-type)?, auto-increment? )>

      <!--
      The unknown primary key class.
      -->
      <!ELEMENT unknown-pk-class (#PCDATA)>

      <!--
      If present the field will auto-incremented by the database
      -->
      <!ELEMENT auto-increment EMPTY>

      <!--
      This element declares available for entity commands
      -->
      <!ELEMENT entity-commands (entity-command*)>

      <!--
      This element represents an entity command
      -->
      <!ELEMENT entity-command (attribute*)>

      <!--
      This attribute specifies the command name
      -->
      <!ATTLIST entity-command name CDATA #REQUIRED>

      <!--
      This attribute specifies the command class
      -->
      <!ATTLIST entity-command class CDATA #IMPLIED>

      <!--
      The attribute for create-method.
      -->
      <!ELEMENT attribute (#PCDATA)>

      <!--
      The name of the attribute
      -->
      <!ATTLIST attribute name CDATA #REQUIRED>

      <!--
      Optimistic locking configuration
      -->
      <!ELEMENT optimistic-locking (
      group-name |
      modified-strategy |
      read-strategy |
      ((version-column | timestamp-column | (key-generator-factory, field-type)),
      field-name?, column-name?, (jdbc-type, sql-type)?)
      )>

      <!--
      Optimistic locking field group name.
      This name must match one of the entity's load-group-name.
      The fields in this group will be used for optimistic locking.
      -->
      <!ELEMENT group-name (#PCDATA)>

      <!--
      Optimistic locking modified strategy.
      This means the fields that were modified during transaction
      will be used for optimistic locking
      -->
      <!ELEMENT modified-strategy EMPTY>

      <!--
      Optimistic locking read strategy.
      This strategy implies that the fields that were read/changed
      in the transaction will be used for optimistic locking
      -->
      <!ELEMENT read-strategy EMPTY>

      <!--
      Optimistic locking version column strategy.
      Setting this element will add to entity bean additional version field
      of type java.lang.Long that will be used for optimistic locking.
      Each update of the entity will increase the value of this field.
      -->
      <!ELEMENT version-column EMPTY>

      <!--
      Optimistic locking timestamp column strategy.
      Setting this element will add to entity bean additional field of type
      java.util.Date that will be used for optimistic locking.
      Each update of the entity will set the value of this field to the current
      time.
      -->
      <!ELEMENT timestamp-column EMPTY>

      <!--
      Optimistic locking field type.
      The type for locking field in optimistic locking.
      -->
      <!ELEMENT field-type (#PCDATA)>

      <!--
      Key generator factory JNDI name.
      This element specifies the JNDI name of key generator factory that is
      used to obtain key generator for locking column used in optimistic locking.
      -->
      <!ELEMENT key-generator-factory (#PCDATA)>

      <!--
      Audit fields, choose the audit fields
      The created by and updated by require a caller principal
      The fields can also be cmp fields, use the same field-name
      -->
      <!ELEMENT audit (created-by?, created-time?, updated-by?, updated-time?)>

      <!--
      Created by principal, default is audit_created_by
      -->
      <!ELEMENT created-by (field-name?, column-name?, (jdbc-type, sql-type)?)>

      <!--
      Created time, default is audit_created_time
      -->
      <!ELEMENT created-time (field-name?, column-name?, (jdbc-type, sql-type)?)>

      <!--
      Updated by principal, default is audit_updated_by
      -->
      <!ELEMENT updated-by (field-name?, column-name?, (jdbc-type, sql-type)?)>

      <!--
      Updated time, default is audit_updated_time
      -->
      <!ELEMENT updated-time (field-name?, column-name?, (jdbc-type, sql-type)?)>


      xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      log when the server starts...



      2004-01-09 16:42:18,865 DEBUG [org.jboss.system.ServiceController] starting service jboss.j2ee:module=ExtranetUtils.jar,service=EjbModule
      2004-01-09 16:42:18,865 INFO [org.jboss.ejb.EjbModule] Starting
      2004-01-09 16:42:18,865 DEBUG [org.jboss.ejb.EjbModule] startService, starting container: SequenceEJB
      2004-01-09 16:42:18,865 DEBUG [org.jboss.system.ServiceController] starting service jboss.j2ee:jndiName=SequenceEJB,service=EJB
      2004-01-09 16:42:18,865 INFO [org.jboss.ejb.EntityContainer] Starting
      2004-01-09 16:42:18,865 DEBUG [org.jboss.ejb.EntityContainer] Begin java:comp/env for EJB: SequenceEJB
      2004-01-09 16:42:18,865 DEBUG [org.jboss.ejb.EntityContainer] TCL: java.net.URLClassLoader@388c74
      2004-01-09 16:42:18,876 DEBUG [org.jboss.ejb.EntityContainer] End java:comp/env for EJB: SequenceEJB
      2004-01-09 16:42:18,876 DEBUG [org.jboss.ejb.plugins.local.BaseLocalProxyFactory] SequenceEJB cannot be Bound, doesn't have local and local home interfaces
      2004-01-09 16:42:18,876 DEBUG [org.jboss.proxy.ejb.ProxyFactory] (re-)Binding Home SequenceEJB
      2004-01-09 16:42:18,936 DEBUG [org.jboss.proxy.ejb.ProxyFactory] Bound SequenceEJB to SequenceEJB
      2004-01-09 16:42:18,946 DEBUG [org.jboss.ejb.plugins.AbstractInstanceCache] Starting InvalidableEntityInstanceCache...
      2004-01-09 16:42:18,946 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.SequenceEJB] Initializing CMP plugin for SequenceEJB
      2004-01-09 16:42:18,986 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.SequenceEJB] Loading standardjbosscmp-jdbc.xml : file:/C:/jboss-3.2.2RC1_tomcat-4.1.24/server/default/conf/standardjbosscmp-jdbc.xml
      2004-01-09 16:42:19,106 ERROR [org.jboss.metadata.XmlFileLoader] XmlFileLoader: File file:/C:/jboss-3.2.2RC1_tomcat-4.1.24/server/default/conf/standardjbosscmp-jdbc.xml process error. Line: 48. Error message: The content of element type "unknown-pk" must match "(unknown-pk-class,field-name?,read-only?,read-time-out?,column-name?,(jdbc-type,sql-type)?,auto-increment?)".
      2004-01-09 16:42:19,106 ERROR [org.jboss.ejb.EntityContainer] Starting failed
      org.jboss.deployment.DeploymentException: Invalid XML: file=file:/C:/jboss-3.2.2RC1_tomcat-4.1.24/server/default/conf/standardjbosscmp-jdbc.xml
      at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:296)
      at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:247)
      at org.jboss.metadata.XmlFileLoader.getDocumentFromURL(XmlFileLoader.java:219)
      at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:203)
      at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCXmlFileLoader.load(JDBCXmlFileLoader.java:64)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadJDBCEntityMetaData(JDBCStoreManager.java:737)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:430)
      at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:372)
      at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:170)
      at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:340)
      at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)
      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:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
      at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:966)
      at $Proxy11.start(Unknown Source)
      at org.jboss.system.ServiceController.start(ServiceController.java:392)
      at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
      at $Proxy39.start(Unknown Source)
      at org.jboss.ejb.EjbModule.startService(EjbModule.java:329)
      at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)
      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:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
      at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:966)
      at $Proxy11.start(Unknown Source)
      at org.jboss.system.ServiceController.start(ServiceController.java:392)
      at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
      at $Proxy23.start(Unknown Source)
      at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:540)
      at org.jboss.deployment.MainDeployer.start(MainDeployer.java:822)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:630)
      at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:603)
      at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:324)
      at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549)
      at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
      at $Proxy7.deploy(Unknown Source)
      at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:302)
      at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:476)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:200)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:211)
      at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:190)