svn commit: r524308 [2/2] - /db/ojb/branches/OJB_1_0_RELEASE/src/config/
[email protected] Fri, 30 Mar 2007 23:06:17 -0000
| Newsgroups | gmane.comp.jakarta.ojb.devel |
|---|---|
| Message-ID | <[email protected]> |
Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.dtd URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.dtd?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.dtd (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.dtd Fri Mar 30 16:06:16 2007 @@ -0,0 +1,1068 @@ +<!-- +#/* Copyright 2004-2006 Apache Software Foundation +# * +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +--> +<!-- + Apache OJB - ObJectRelationalBridge + + Bridging Java objects and relational dabatases + + This DTD describes the grammar of the Descriptor repository + + Initial author: Thomas Mahler + --> + +<!-- + The descriptor-repository is the root element of a + repository.xml file. + It consists of one jdbc-connection-descriptor and at least one + class-descriptor element. + + The attribute element allows to add custom attributes. + + The jdbc-connection-descriptor element specifies the default jdbc + connection for the repository. + + class-descriptor elements specify o/r mapping information for + persistent classes. + --> +<!ELEMENT descriptor-repository (documentation?, attribute*, + jdbc-connection-descriptor*, class-descriptor*)> + +<!-- + The version attribute is used to bind a repository.xml + file to a given version of this dtd. This will help to + avoid versions conflicts. + + The isolation-level attribute defines the default locking isolation level used + by OJB's pessimistic locking api. All jdbc-connection-descriptor or class-descriptor + that do not define a specific isolation level will use this. + Note: This does NOT touch the jdbc-level of the connection. + + The state-detection attribute is used by API's supporting automatic state detection + of persistence capable objects. The attribute indicate whether or not mapped classes should + be included in object state detection (automatic detection of changed object fields). + --> +<!ATTLIST descriptor-repository + version (1.0) #REQUIRED + isolation-level (read-uncommitted | read-committed | repeatable-read | + serializable | optimistic | none) "read-uncommitted" + proxy-prefetching-limit CDATA "50" + state-detection (true | false) "true" +> + +<!-- + The documentation element can be used to store arbitrary + information on all repository entries. +--> +<!ELEMENT documentation (#PCDATA)> + +<!-- + The attribute element allows to add custom attributes. + + The jdbc-connection-descriptor element specifies the a jdbc + connection for the repository. + + The object-cache element specifies the object-cache implementation + class associated with this class. + + A connection-pool element may be used to define connection pool + properties for the specified JDBC connection. + + A sequence-manager element may be used to + define which sequence manager implementation should be used within + the defined connection. + --> +<!ELEMENT jdbc-connection-descriptor (documentation?, attribute*, + object-cache?, connection-pool?, sequence-manager?)> + +<!-- + The jcdAlias attribute is a shortcut name for the defined connection + descriptor. OJB use jcdAlias as key for the defined connections. + + The default-connection attribute used to define if this connection + should used as default connection with OJB. You could define only + one connection as default connection. It is also possible to set + the default connection at runtime using + PersistenceBrokerFactory#setDefaultKey(...) method. + If set 'true' you could use on PB-api a shortcut-method of the + PersistenceBrokerFactory to lookup PersistenceBroker instances. + + The platform attribute is used to define the specific RDBMS + Platform. This attribute corresponds to a + org.apache.ojb.broker.platforms.PlatformXXXImpl class. + + The jdbc-level attribute is used to specify the Jdbc compliance + level of the used Jdbc driver. + + DEPRECATED! The eager-release attribute was adopt to solve a problem occured when + using OJB within JBoss (3.0 <= version < 3.2.2, seems to be fixed in jboss 3.2.2). + Only use within JBoss. + + The batch-mode attribute allow to enable JDBC connection batch support + (if supported by used database), 'true' value allows to enable per-session + batch mode, whereas 'false' prohibits it. + PB.serviceConnectionManager.setBatchMode(...) method can be used + to switch on/off batch modus, if batch-mode was enabled. On PB.close() + OJB switch off batch modus, thus you have to do '...setBatchMode(true)' on each + obtained PB instance. + + The useAutoCommit attribute allow to set how OJB uses + the autoCommit state of the used connections. The default mode + was 1. + 0 - OJB ignores the autoCommit setting of the connection and do not + try to change it. This mode could be helpfully if the + connection don't let you set the autoCommit state + (e.g. using datasources from application server). + 1 - [default mode] set the connection's autoCommit state temporary to 'false' if needed + (when using transaction) and restore the old state after use. In + versions before OJB 1.0.4 the autoCommit state was explicit set 'true' + when connection was created, now OJB expect that this was done by + the jdbc-driver configuration. To enable old behavior set a custom attribute + 'initializationCheck' to 'true'. + 2 - this setting set autoCommit explicit 'false' when connection was created. + + If the ignoreAutoCommitExceptions attribute is set 'true', all + exceptions caused by setting autocommit state, will be ignored. + Default mode 'false'. + + If a jndi-datasource-name for JNDI based lookup of Jdbc + connections is specified, the four attributes driver, protocol, + subprotocol, dbalias used for Jdbc DriverManager based construction + of Jdbc Connections must not be declared. + + The username and password attributes are used as credentials + for obtaining a jdbc connections. + If users don't want to keep this information the + repository.xml file, they could pass user/password + using PBKey.java to obtain a PersistenceBroker + --> +<!ATTLIST jdbc-connection-descriptor + jcd-alias CDATA #REQUIRED + default-connection (true | false) "false" + platform ( Db2 | Hsqldb | Informix | MsAccess | MsSQLServer | + MySQL | Oracle | PostgreSQL | Sybase | SybaseASE | + SybaseASA | Sapdb | Firebird | Axion | + Oracle9i | MaxDB | Derby) "Hsqldb" + jdbc-level (1.0 | 2.0 | 3.0) "2.0" + batch-mode (true | false) "false" + useAutoCommit (0 | 1 | 2) "1" + ignoreAutoCommitExceptions (true | false) "false" + + jndi-datasource-name CDATA #IMPLIED + + driver CDATA #IMPLIED + protocol CDATA #IMPLIED + subprotocol CDATA #IMPLIED + dbalias CDATA #IMPLIED + + username CDATA #IMPLIED + password CDATA #IMPLIED +> + + +<!-- + The object-cache element can be used to specify the ObjectCache + implementation used by OJB. There are three levels of + declaration: + 1. in OJB.properties file, to declare the standard (default) + ObjectCache implementation. + 2. on jdbc-connection-descriptor level, to declare ObjectCache implementation + on a per connection/user level + 3. on class-descriptor level, to declare ObjectCache implementation + on a per class level + + The priority of the declared object-cache elements are: + per class > per jdbc descriptor > standard + + E.g. if you declare ObjectCache 'cacheDef' as standard, set + ObjectCache 'cacheA' in class-descriptor for class A and class B + does not declare an object-cache element. Then OJB use cacheA as ObjectCache + for class A and cacheDef for class B +--> +<!ELEMENT object-cache (documentation?, attribute*)> + +<!-- + Attribute 'class' specifies the full qualified class name of + the used ObjectCache implementation. +--> +<!ATTLIST object-cache + class CDATA #REQUIRED +> + + +<!-- + The connection-pool element specifies the connection pooling + and low-level JDBC driver parameters. +--> +<!ELEMENT connection-pool (documentation?, attribute*)> + + +<!-- + maxActive (default=21) + The maximum number of active connections that can be allocated from this + pool at the same time, or zero for no limit. + + maxIdle (default=-1) + The maximum number of active connections that can remain idle in the pool, + without extra ones being released, or zero for no limit. + + minIdle (default=0) + The minimum number of active connections that can remain idle in the pool, + without extra ones being created, or zero to create none. + Since: 1.0.4 + + maxWait (default=5000) + The maximum number of milliseconds that the pool will wait (when there + are no available connections) for a connection to be returned before + throwing an exception, or -1 to wait indefinitely. + Must be > 0 for timeout to actually happen in DBCP PoolingDataSource. + + whenExhaustedAction (default=0/WHEN_EXHAUSTED_FAIL) + 0 - fail when pool is exhausted + 1 - block when pool is exhausted + 2 - grow when pool is exhausted + + validationQuery (default=not specified) + The SQL query that will be used to validate connections from this pool + before returning them to the caller. If specified, this query MUST be + an SQL SELECT statement that returns at least one row. + Eg: + Oracle SELECT 1 FROM DUAL + PostgreSQL SELECT 1 + MySQL SELECT 1 + + testOnBorrow (default=true) + The indication of whether connections will be validated before being + borrowed from the pool. If the connection fails to validate, it will + be dropped from the pool, and OJB will attempt to borrow another. + + testOnReturn (default=false) + The indication of whether connections will be validated before being + returned to the pool. + + testWhileIdle (default=false) + The indication of whether connections will be validated by the idle object + evictor (if any). If a connection fails to validate, it will be dropped + from the pool. + + timeBetweenEvictionRunsMillis (default=-1) + The number of milliseconds to sleep between runs of the idle + object evictor thread. When non-positive, no idle object evictor thread + will be run. + + numTestsPerEvictionRun (default=10) + The number of objects to examine during each run of the idle object + evictor thread (if any). + + minEvictableIdleTimeMillis (default=1800000) + The minimum amount of time a connection may sit idle in the pool before + it is eligable for eviction by the idle object evictor (if any). + + removeAbandoned [only for ConnectionFactoryDBCPImpl] (default=false) + Flag to remove abandoned connections if they exceed the + removeAbandonedTimout. + If set to true a connection is considered abandoned and eligible for + removal if it has been idle longer than the removeAbandonedTimeout. + Setting this to true can recover db connections from poorly written + applications which fail to close a connection. + If you have enabled "removeAbandoned" then it is possible that a + connection is reclaimed by the pool because it is considered to be + abandoned. This mechanism is triggered on borrowObject (ie in OJB when + a PersistenceBroker gets a Connection) and: + (numIdle < 2) and (numActive > maxActive - 3). + The abandoned object eviction takes place before normal borrowObject + logic (there is no asynch evictor thread like for testWhileIdle). + For example maxActive=20 and 18 active connections and 1 idle connection + would trigger the "removeAbandoned". But only the active connections that + aren't used for more then "removeAbandonedTimeout" seconds are removed. + Traversing a resultset doesn't count as being used. + + removeAbandonedTimeout [only for ConnectionFactoryDBCPImpl] (default=300) + Timeout in seconds before an abandoned connection can be removed. + + logAbandoned [only for ConnectionFactoryDBCPImpl] (default=false) + Flag to log stack traces for application code which abandoned a + Statement or Connection. + Logging of abandoned Statements and Connections adds overhead for every + Connection open or new Statement because a stack trace has to be + generated. + + Custom attributes: + <attribute attribute-name="fetchSize" attribute-value="(int)"/> + + Sets a hint in the JDBC driver not to fetch more than + specified number of rows per server round trip for + any ResultSet. + Setttings different than the default (0) are especially + useful to reduce memory footprint when using drivers + that defaults to not using server-side cursors and + retrieves all rows to the JDBC client-side driver buffer. + PostgreSQL JDBC driver is a well-known example of this. + Many JDBC drivers will ignore this hint. + + <attribute attribute-name="jdbc.(driver-specific attribute)" + attribute-value="(value)"/> + + All attributes with names starting with "jdbc." will be + passed (without jdbc. prefix) to the JDBC DriverManager + when creating new Connection objects. + (Ignored when acquiring Connection objects through + JNDI DataSource lookup or in managed environments.) + + <attribute attribute-name="dbcp.(Commons DBCP-options)" + attribute-value="(value)"/> + + If using the ConnectionFactoryDBCPImpl (set in OJB.properties), + all parameters starting with "dbcp." will be made available + (without dbcp. prefix) to the ConnectionFactory for + configuring Commons DBCP accordingly. + + Currently the following DBCP attributes are used: + + dbcp.poolPreparedStatements (default=false) + Enable prepared statement pooling for this pool. + + dbcp.maxOpenPreparedStatements (default=0/unlimited) + The maximum number of open statements that can be + allocated from the statement pool at the same time, + or zero for no limit. + + dbcp.accessToUnderlyingConnectionAllowed (default=false) + Controls if the DBCP PoolGuard allows access to the underlying + connection from the JDBC-driver. + + Only use when you need direct access to driver specific + extentions. + + NOTE: Do not close the underlying connection, only the + original one. + +--> +<!ATTLIST connection-pool + maxActive CDATA #IMPLIED + minIdle CDATA #IMPLIED + maxIdle CDATA #IMPLIED + maxWait CDATA #IMPLIED + minEvictableIdleTimeMillis CDATA #IMPLIED + numTestsPerEvictionRun CDATA #IMPLIED + testOnBorrow ( true | false ) #IMPLIED + testOnReturn ( true | false ) #IMPLIED + testWhileIdle ( true | false ) #IMPLIED + timeBetweenEvictionRunsMillis CDATA #IMPLIED + whenExhaustedAction ( 0 | 1 | 2 ) #IMPLIED + validationQuery CDATA #IMPLIED + + removeAbandoned ( true | false ) #IMPLIED + removeAbandonedTimeout CDATA #IMPLIED + logAbandoned ( true | false ) #IMPLIED +> + + + +<!-- + The sequence-manager element specifies the sequence + manager implementation used for key generation. All + sequence manager implementations shipped with OJB + you will find under org.apache.ojb.broker.util.sequence + If no sequence-manager is defined, OJB use a default one. + For configuration examples please consult documentation. + + Use the attribute element to pass implementation specific + properties. This depends on the used implementation class. +--> +<!ELEMENT sequence-manager (documentation?, attribute*)> + +<!-- + The className attribute represents the full qualified class name + of the desired sequence manager implementation - it is mandatory + when using the sequence-manager element. + All sequence manager implementations you find will under + org.apache.ojb.broker.util.sequence package named as SequenceManagerXXXImpl. + For configuration examples please consult documentation. +--> +<!ATTLIST sequence-manager + className CDATA #REQUIRED +> + + + +<!-- + For interfaces or abstract classes a class-descriptor holds a sequence of + extent-class elements. + + For concrete classes it must have field-descriptors that describe primitive + typed instance variables. + References to other persistent entity classes are specified by + reference-descriptor elements. + Collections or arrays attributes that contain other persistent entity + classes are specified by collection-descriptor elements + + Concrete base classes, may specify a sequence of extent-class elements, + naming the derived classes. + + A class-descriptor may contain user defined custom attribute elements. + + The insert-procedure, update-procedure and delete-procedure elements + identify the procedure/function that is defined in the database which + will handle the insertion, update or deletion of an instance of this + class. These elements are all optional. If they are absent then basic + sql statements (INSERT INTO xxx..., UPDATE xxx, DELETE FROM xxx) will + be utilized. + + --> +<!ELEMENT class-descriptor + ((documentation?, object-cache?, extent-class+, attribute*) | + (documentation?, object-cache?, extent-class*, field-descriptor+, + reference-descriptor*, collection-descriptor*, + index-descriptor*, attribute*, + insert-procedure?, update-procedure?, delete-procedure?))> + + +<!-- + The class attribute contains the full qualified name of the specified class. + As this attribute is of type ID there can only be one class-descriptor per + class. + + The isolation-level attribute defines the locking isolation level of the + specified class (used by OJB's pessimistic locking api). Default is "empty String" + to use (the global) isolation-level defined on "descriptor-repository" level. + Note: This does NOT touch the jdbc-level of the connection. + + If the proxy attribute is set, proxies are used for all loading operations + of instances of this class. If set to "dynamic", dynamic proxies are used. + If set to another value this value is interpreted as the full-qualified + name of the proxy class to use. + + If the proxy-prefetching-limit attribute (used with the proxy attribute) + is set to the value > 0, the collections of objects of this class are materialized + by groups of the specified size, say when user tries to access the first + object of the collection, next proxy-prefetching-limit objects are loaded + by one database query. + Set this parameter to 0 if you want to turn this feature off. + + The schema attribute may contain the database schema owning the table + mapped to this class. + + The table attribute specifies the table name this class is mapped to. + + The row-reader attribute may contain a full qualified class name. + This class will be used as the RowReader implementation used to + materialize instances of the persistent class. + + The extends attribute is deprecated and will be removed or reintroduced + with changed funcitonality in future. DON'T USE IT! + + DEPRECATED. The accept-locks attribute specifies whether implicit locking should + propagate to this class. Currently relevant for the ODMG layer only. + + The optional initialization-method specifies a no-argument instance + method that is invoked after reading an instance from a database row. + It can be used to do initialization and validations. + + The optional factory-class specifies a factory-class that + that is to be used instead of a no argument constructor. + If the factory-class is specified the factory-method + also must be defined. + factory-method refers to a static no-argument method + of the factory-class class. + + The refresh attribute can be set to true to force OJB to refresh + instances when loaded from cache. It's set to false by default. + + The state-detection attribute is used by API's supporting automatic state detection + of persistence capable objects. The attribute indicate whether or not this class should + be included in object state detection (automatic detection of changed object fields). + + The field-class attribute can be used to override the <code>PersistentField</code> + implementation class. + --> +<!ATTLIST class-descriptor + class ID #REQUIRED + isolation-level (read-uncommitted | read-committed | repeatable-read | + serializable | optimistic | none) #IMPLIED + proxy CDATA #IMPLIED + proxy-prefetching-limit CDATA #IMPLIED + schema CDATA #IMPLIED + table CDATA #IMPLIED + row-reader CDATA #IMPLIED + extends IDREF #IMPLIED + accept-locks (true | false) "true" + initialization-method CDATA #IMPLIED + factory-class CDATA #IMPLIED + factory-method CDATA #IMPLIED + refresh (true | false) "false" + state-detection (true | false) "true" + field-class CDATA #IMPLIED +> + + +<!-- + An extent-class element is used to specify an implementing class or a + derived class that belongs to the extent of all instances of the interface + or base class. + --> +<!ELEMENT extent-class (documentation?)> +<!-- + The class-ref attribute must contain a fully qualified classname. + The repository file must contain a class-descriptor for this class. + --> +<!ATTLIST extent-class + class-ref IDREF #REQUIRED +> + +<!-- + A field descriptor contains mapping info for a primitive typed + attribute of a persistent class. + + A field descriptor may contain a sequence-manager element to define + a specific sequence-manager only used by this field. If not set the + sequence-manager defined in the jdbc-connection-descriptor is used. + + A field descriptor may contain custom attribute elements. + --> +<!ELEMENT field-descriptor (documentation?, sequence-manager?, attribute*)> +<!-- + <b>The id attribute is optional.</b> If not specified, OJB internally + sorts field-descriptors according to their order of appearance in the + repository file. + If a different sort order is intended the id attribute may be used to + hold a unique number identifying the decriptors position in the sequence of + field-descriptors. + The order of the numbers for the field-descriptors must correspond to + the order of columns in the mapped table. + + The name attribute holds the name of the persistent classes attribute. + If the PersistentFieldDefaultImpl is used there must be an attribute + in the persistent class with this name. + If the PersistentFieldPropertyImpl is used there must be a JavaBeans + compliant property of this name. + + The table attribute may specify a table different from the mapped + table for the persistent class. (currently not implemented). + + The column attribute specifies the column the persistent classes field + is mapped to. + + The optional jdbc-type attribute specifies the JDBC type of the column. + If not specified OJB tries to identify the JDBC type by inspecting the + Java attribute by reflection. + + The primarykey specifies if the column is a primary key column. + + The nullable attribute specifies if the column may contain null values. + + The indexed attribute specifies if there is an index on this column + + The autoincrement attribute specifies if the values for the persistent + attribute are automatically generated by OJB. + + The sequence-name attribute can be used to state explicitly a sequence + name used by the sequence manager implementations. Check the docs/javadocs + of the used sequence manager implementation to get information if this + is a mandatory attribute. OJB standard sequence manager implementations + build a sequence name by its own, if the attribute was not set. + + The locking attribute is set to true if the persistent attribute is + used for optimistic locking. can only be set for TIMESTAMP and INTEGER + columns. + + The updatelock attribute is set to false if the persistent attribute is + used for optimistic locking AND the dbms should update the lock column + itself. The default is true which means that when locking is true then + OJB will update the locking fields. Can only be set for TIMESTAMP and INTEGER + columns. + + The default-fetch attribute specifies whether the persistent attribute + belongs to the JDO default fetch group. + + The conversion attribute contains a fully qualified class name. + This class must implement the interface + org.apache.ojb.accesslayer.conversions.FieldConversion. + A FieldConversion can be used to implement conversions between Java- + attributes and database columns. + + The null-check attribute contains a fully qualified class name. + This class must implement the interface + org.apache.ojb.broker.accesslayer.NullCheck. + A NullCheck can be used to implement special requirements for + the definitions of a field's 'null' value as Java representation. + + The length attribute can be used to specify a length setting, if + required by the jdbc-type of the underlying database column. + + The precision attribute can be used to specify a precision setting, if + required by the jdbc-type of the underlying database column. + + The scale attribute can be used to specify a scale setting, if + required by the jdbc-type of the underlying database column. + + The access attribute specifies the accessibility of the field. + "readonly" marks fields that are not to modified. "readwrite" marks + fields that may be read and written to. "anonymous" marks anonymous fields. + An anonymous field has a database representation (column) but no + corresponding Java attribute. Hence the name of such a field does not + refer to a Java attribute of the class, but is used as a unique + identifier only. + + The state-detection attribute is used by API's supporting automatic state detection + of persistence capable objects. The attribute indicate whether or not this field should + be included in object state detection (automatic detection of changed object fields). + If in the <em>state-detection</em> is generally disabled or in the associated + class-descriptor, this setting will (normally) be ignored. + + The field-class attribute can be used to override the <code>PersistentField</code> + implementation class. + --> +<!ATTLIST field-descriptor + id CDATA #IMPLIED + name CDATA #REQUIRED + table CDATA #IMPLIED + column CDATA #REQUIRED + jdbc-type (BIT | TINYINT | SMALLINT | INTEGER | BIGINT | DOUBLE | + FLOAT | REAL | NUMERIC | DECIMAL | CHAR | VARCHAR | + LONGVARCHAR | DATE | TIME | TIMESTAMP | BINARY | + VARBINARY | LONGVARBINARY | CLOB | BLOB | STRUCT | + ARRAY | REF | BOOLEAN | DATALINK | JAVA_OBJECT) #IMPLIED + primarykey (true | false) "false" + nullable (true | false) "true" + indexed (true | false) "false" + autoincrement (true | false) "false" + sequence-name CDATA #IMPLIED + locking (true | false) "false" + update-lock (true | false) "true" + default-fetch (true | false) "false" + conversion CDATA #IMPLIED + null-check CDATA #IMPLIED + length CDATA #IMPLIED + precision CDATA #IMPLIED + scale CDATA #IMPLIED + access (readonly | readwrite | anonymous) "readwrite" + state-detection (true | false) "true" + field-class CDATA #IMPLIED +> + + +<!-- + An attribute element allows arbitrary name/value pairs to + be represented in the repository. + --> +<!ELEMENT attribute (documentation?)> + +<!-- + The attribute-name identifies the name of the attribute. + The attribute-value identifies the value of the attribute. +--> +<!ATTLIST attribute + attribute-name CDATA #REQUIRED + attribute-value CDATA #REQUIRED +> + +<!-- + A reference-descriptor contains mapping info for an attribute of a + persistent class that is not primitive but references another + persistent entity Object. + + A foreignkey element contains information on foreign key columns that + implement the association on the database level. + + A reference-decriptor may contain user defined attribute elements. + --> +<!ELEMENT reference-descriptor (documentation?, foreignkey+, attribute*)> +<!-- + The name attribute holds the name of the persistent classes attribute. + If the PersistentFieldDefaultImpl is used there must be an attribute + in the persistent class with this name. + If the PersistentFieldPropertyImpl is used there must be a JavaBeans + compliant property of this name. + + The class-ref attribute contains a fully qualified class name. + This class is the Object type of the persistent reference attribute. + As this is an IDREF there must be a class-descriptor for this class + in the repository too. + + The proxy attribute can be set to true to specify that proxy based + lazy loading should be used for this attribute. + + If the proxy-prefetching-limit attribute (used with the proxy attribute) + is set to the value > 0, then loading of the reference for the first + object of some collection causes loading of the references for + the next proxy-prefetching-limit objects. + Set this parameter to 0 if you want to turn this feature off. + + The refresh attribute can be set to true to force OJB to refresh + object references on instance loading. + + The auto-retrieve attribute specifies whether OJB automatically retrieves + this reference attribute on loading the persistent object. + If set to false the reference attribute is set to null. In this case the + user is responsible to fill the reference attribute. + + The auto-update attribute specifies whether OJB automatically stores + this reference attribute on storing the persistent object or not or only + link the reference. + This attribute must be set to 'false' if using the OTM or JDO layer. + For ODMG it must be 'none' (since OJB 1.0.2). More info see OJB documentation. + + The auto-delete attribute specifies whether OJB automatically deletes + this reference attribute on deleting the persistent object or not. + This attribute must be set to 'false' if using the OTM or JDO layer. + For ODMG it must be 'none' (since OJB 1.0.2). More info see OJB documentation. + + The otm-dependent attribute specifies whether the OTM layer automatically + creates the referred object or deletes it if the reference field is set to null. + Also otm-dependent references behave as if auto-update and auto-delete + were set to true, but the auto-update and auto-delete attributes themself + must be always set to false for use with OTM layer. + + --> +<!ATTLIST reference-descriptor + name CDATA #REQUIRED + class-ref IDREF #REQUIRED + + proxy (true | false) "false" + proxy-prefetching-limit CDATA #IMPLIED + refresh (true | false) "false" + + auto-retrieve (true | false) "true" + auto-update (none | link | object | true | false) "false" + auto-delete (none | link | object | true | false) "false" + otm-dependent (true | false) "false" +> + +<!-- + A foreignkey element contains information on a foreign-key persistent + attribute that implement the association on the database level. + --> +<!ELEMENT foreignkey (documentation?)> +<!-- + The field-id-ref contains the id attribute of the field-descriptor + used as a foreign key. + --> +<!ATTLIST foreignkey + field-id-ref CDATA #IMPLIED + field-ref CDATA #IMPLIED + target-field-ref CDATA #IMPLIED +> + + +<!-- + A collection-descriptor contains mapping info for a Collection- or + Array-attribute of a persistent class that contains persistent + entity Objects. + + The inverse-foreignkey elements contains information on foreign-key + attributes that implement the association on the database level. + + The fk-pointing-to-this-class and fk-pointing-to-element-class elements + are only needed if the Collection or array implements a m:n association. + In this case they contain information on the foreign-key columns of + the intermediary table. + + A collection-descriptor may contain user defined attribute elements. + --> +<!ELEMENT collection-descriptor ( + documentation?, + orderby*, + inverse-foreignkey*, + fk-pointing-to-this-class*, + fk-pointing-to-element-class*, + query-customizer?, + attribute*)> + + +<!-- + The name attribute holds the name of the persistent classes attribute. + If the PersistentFieldDefaultImpl is used there must be an attribute + in the persistent class with this name. + If the PersistentFieldPropertyImpl is used there must be a JavaBeans + compliant property of this name. + + The collection-class may hold a fully qualified class name. + This class must be the Java type of the Collection attribute. + This attribute must only specified if the attribute type is not + a java.util.Collection (or subclass) or Array type. The declared + (none java.util.Collection or non Array) class must implement + ManageableCollection to let OJB handle this type of collection. + + The element-class-ref attribute contains a fully qualified class name. + This class is the Object type of the elements of persistent collection + or Array attribute. + As this is an IDREF there must be a class-descriptor for this class + in the repository too. + + DEPRECATED, please use the 'orderby'-element. The orderby attribute may + specify a field of the element class. + The Collection or Array will be sorted according to the specified attribute. + The sort attribute may be used to specify ascending or descending order for + this operation. + + The indirection-table must specify the name of an intermediary table, + if the persistent collection attribute implements a m:n association. + + The proxy attribute can be set to true to specify that proxy based + lazy loading should be used for this attribute. + + If the proxy-prefetching-limit attribute (used with the proxy attribute) + is set to the value > 0, then loading of the collection for the first + object of some other collection causes loading of the collections for + the next proxy-prefetching-limit objects. + Set this parameter to 0 if you want to turn this feature off. + + The refresh attribute can be set to true to force OJB to refresh + object and collection references on instance loading. + + The auto-retrieve attribute specifies whether OJB automatically retrieves + this attribute on loading the persistent object. + If set to false the persistent attribute is set to null. In this case the + user is responsible to fill the persistent attribute. + + The auto-update attribute specifies whether OJB automatically stores + the referenced objects on storing the persistent object or not or only link. + This attribute must be set to 'false' if using the OTM or JDO layer. + Allowed ODMG settings please see OJB documentation. + + The auto-delete attribute specifies whether OJB automatically deletes + the referenced objects on deleting the persistent object or not. + This attribute must be set to 'false' if using the OTM or JDO layer. + Allowed ODMG settings please see OJB documentation. + + The otm-dependent attribute specifies whether the OTM layer automatically + creates collection elements that were included into the collectionelements + and deletes collection elements that were excluded from the collection. + Also otm-dependent references behave as if auto-update and auto-delete + were set to true, but the auto-update and auto-delete attributes themself + must be always set to false for use with OTM layer. + + + --> +<!ATTLIST collection-descriptor + name CDATA #IMPLIED + collection-class CDATA #IMPLIED + element-class-ref IDREF #REQUIRED + orderby CDATA #IMPLIED + sort (ASC | DESC) "ASC" + + indirection-table CDATA #IMPLIED + + proxy (true | false) "false" + proxy-prefetching-limit CDATA #IMPLIED + refresh (true | false) "false" + + auto-retrieve (true | false) "true" + auto-update (none | link | object | true | false) "false" + auto-delete (none | link | object | true | false) "false" + otm-dependent (true | false) "false" +> + +<!-- + an OrderBy elemnent contains an attribute name and a sort order + --> +<!ELEMENT orderby (documentation?)> +<!ATTLIST orderby + name CDATA #REQUIRED + sort (ASC | DESC) "ASC" +> + +<!-- + A inverse-foreignkey element contains information on a foreign-key + persistent attribute that implement the association on the database level. + --> +<!ELEMENT inverse-foreignkey (documentation?)> +<!-- + The field-id-ref contains the id attribute of the field-descriptor + in the class of the collection elements that is used as a foreign key. + --> +<!ATTLIST inverse-foreignkey + field-id-ref CDATA #IMPLIED + field-ref CDATA #IMPLIED + target-field-ref CDATA #IMPLIED +> + +<!-- + A fk-pointing-to-this-class element contains information on a foreign-key + column of an intermediary table in a m:n scenario. + --> +<!ELEMENT fk-pointing-to-this-class (documentation?)> +<!-- + The column attribute specifies the foreign-key column in the intermediary + table that points to the class holding the collection. + --> +<!ATTLIST fk-pointing-to-this-class + column CDATA #REQUIRED +> + +<!-- + A fk-pointing-to-element-class element contains information on a foreign-key + column of an intermediary table in a m:n scenario. + --> +<!ELEMENT fk-pointing-to-element-class (documentation?)> +<!-- + The column attribute specifies the foreign-key column in the intermediary + table that points to the class of the collection elements. + --> +<!ATTLIST fk-pointing-to-element-class + column CDATA #REQUIRED +> + + +<!-- + a queryEnhancer element to enhance the 1:n query + --> +<!ELEMENT query-customizer ( + documentation?, + attribute*)> +<!ATTLIST query-customizer + class CDATA #REQUIRED +> + +<!-- + An index-descriptor describes an index by listing its columns. It may be + unique or not. +--> +<!ELEMENT index-descriptor (documentation?, index-column+)> +<!ATTLIST index-descriptor + name CDATA #REQUIRED + unique (true | false) "false"> + +<!-- + An index-column is just the name of a column in an index. +--> +<!ELEMENT index-column (documentation?)> +<!ATTLIST index-column + name CDATA #REQUIRED> + +<!-- + Identifies the procedure/function that should be used to handle + insertions for a specific class-descriptor. + + The nested 'argument' elements define the argument list for the + procedure/function as well as the source for each argument. + + The name attribute identifies the name of the procedure/function to use + + The return-field-ref identifies the field-descriptor that will receive + the value that is returned by the procedure/function. If the procedure/ + function does not include a return value, then do not specify a value + for this attribute. + + The include-all-fields attribute indicates if all field-descriptors in + the corresponding class-descriptor are to be passed to the procedure/ + function. If include-all-fields is 'true', any nested 'argument' + elements will be ignored. In this case, values for all field-descriptors + will be passed to the procedure/function. The order of values that are + passed to the procedure/function will match the order of field-descriptors + on the corresponding class-descriptor. If include-all-fields is false, + then values will be passed to the procedure/function based on the + information in the nested 'argument' elements. + --> +<!ELEMENT insert-procedure + (documentation?, (runtime-argument | constant-argument)*, attribute*)> +<!ATTLIST insert-procedure + name CDATA #REQUIRED + return-field-ref CDATA #IMPLIED + include-all-fields (true | false) "false" +> + +<!-- + Identifies the procedure/function that should be used to handle + updates for a specific class-descriptor. + + The nested 'argument' elements define the argument list for the + procedure/function as well as the source for each argument. + + The name attribute identifies the name of the procedure/function to use + + The return-field-ref identifies the field-descriptor that will receive + the value that is returned by the procedure/function. If the procedure/ + function does not include a return value, then do not specify a value + for this attribute. + + The include-all-fields attribute indicates if all field-descriptors in + the corresponding class-descriptor are to be passed to the procedure/ + function. If include-all-fields is 'true', any nested 'argument' + elements will be ignored. In this case, values for all field-descriptors + will be passed to the procedure/function. The order of values that are + passed to the procedure/function will match the order of field-descriptors + on the corresponding class-descriptor. If include-all-fields is false, + then values will be passed to the procedure/function based on the + information in the nested 'argument' elements. + --> +<!ELEMENT update-procedure + (documentation?, (runtime-argument | constant-argument)*, attribute*)> +<!ATTLIST update-procedure + name CDATA #REQUIRED + return-field-ref CDATA #IMPLIED + include-all-fields (true | false) "false" +> + +<!-- + Identifies the procedure/function that should be used to handle + deletions for a specific class-descriptor. + + The nested 'runtime-argument' and 'constant-argument' elements define + the argument list for the procedure/function as well as the source + for each argument. + + The name attribute identifies the name of the procedure/function to use + + The return-field-ref identifies the field-descriptor that will receive + the value that is returned by the procedure/function. If the procedure/ + function does not include a return value, then do not specify a value + for this attribute. + + The include-pk-only attribute indicates if all field-descriptors in + the corresponding class-descriptor that are identified as being part of + the primary key are to be passed to the procedure/function. If + include-pk-only is 'true', any nested 'argument' elements will be + ignored. In this case, values for all field-descriptors that are identified + as being part of the primary key will be passed to the procedure/function. + The order of values that are passed to the procedure/function will match + the order of field-descriptors on the corresponding class-descriptor. + If include-pk-only is false, then values will be passed to the procedure/ + function based on the information in the nested 'argument' elements. + --> +<!ELEMENT delete-procedure + (documentation?, (runtime-argument | constant-argument)*, attribute*)> +<!ATTLIST delete-procedure + name CDATA #REQUIRED + return-field-ref CDATA #IMPLIED + include-pk-only (true | false) "false" +> +<!-- + Defines an argument that is passed to a procedure/function. Each argument + will be set to a value from a field-descriptor or null. + + The field-ref attribute identifies the field-descriptor in the corresponding + class-descriptor that provides the value for this argument. If this attribute + is unspecified, then this argument will be set to null. +--> +<!ELEMENT runtime-argument + (documentation?, attribute*)> +<!ATTLIST runtime-argument + field-ref CDATA #IMPLIED + return (true | false) "false" +> +<!-- + Defines a constant value that is passed to a procedure/function. + + The value attribute identifies the value that is passed to the procedure/ + function. +--> +<!ELEMENT constant-argument + (documentation?, attribute*)> +<!ATTLIST constant-argument + value CDATA #REQUIRED +> Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.xml URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.xml?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.xml (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/repository.xml Fri Mar 30 16:06:16 2007 @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +#/* Copyright 2002-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<!-- This is a sample metadata repository for the + Apache ObJectRelationalBridge (OJB) System. + Use this file as a template for building your own mappings. +--> + +<!-- doctype definition + By default we are using a local DTD that is expected to reside + in the same directory as this repository.xml file. + If you intend to validate your repository.xml against + the public dtd at the Apache site, please replace the string + "repository.dtd" + by the public adress + "http://db.apache.org/ojb/dtds/1.0/repository.dtd". + In this case validation will only work if the machine you + run your application on can connect to the internet! +--> + +<!DOCTYPE descriptor-repository PUBLIC + "-//Apache Software Foundation//DTD OJB Repository//EN" + "repository.dtd" +[ + +<!ENTITY database SYSTEM "repository_database.xml"> +<!ENTITY internal SYSTEM "repository_internal.xml"> +<!ENTITY user SYSTEM "repository_user.xml"> +]> + + +<descriptor-repository version="1.0" isolation-level="read-uncommitted" + proxy-prefetching-limit="50"> + + <!-- include all used database connections --> + &database; + + <!-- include ojb internal mappings here, can be removed (with <!ENTITY entry) + if internal tables not used. See documentation platform-guide --> + &internal; + + <!-- include user defined mappings here --> + &user; + +</descriptor-repository> Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_database.xml URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_database.xml?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_database.xml (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_database.xml Fri Mar 30 16:06:16 2007 @@ -0,0 +1,206 @@ +<!-- @version $Id: repository_database.xml 513565 2007-03-02 01:52:47 +0100 (Fr, 02 Mrz 2007) arminw $ --> + +<!-- +/* Copyright 2002-2005 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<!-- +Define all database connections here. +One defined connection should be defined as the default one, +by setingt default-connection="true" - this could be done at runtime too. + +It is possible to set user/password at +runtime or to let different users login at runtime +using the same database. +Use PBKey objects for the same jcdAlias name, +but with different user/password. + +It is also possible to add jdbc-connection-descriptor elements +at runtime, using the MetadataManager. +--> + + <!-- This connection is used as the default one within OJB --> + <jdbc-connection-descriptor + jcd-alias="@JCD_ALIAS@" + default-connection="true" + platform="@DBMS_NAME@" + jdbc-level="@JDBC_LEVEL@" + driver="@DRIVER_NAME@" + protocol="@URL_PROTOCOL@" + subprotocol="@URL_SUBPROTOCOL@" + dbalias="@URL_DBALIAS@" + username="@USER_NAME@" + password="@USER_PASSWD@" + batch-mode="false" + useAutoCommit="1" + ignoreAutoCommitExceptions="false" + > + + <!-- + If set 'true' OJB use the native database LIMIT and OFFSET syntax + for limit and paging queries (if it's supported by the database and OJB's Platform + implementation class). If set 'false' OJB simulate limit and paging by a specific + result set iterator (this can result in bad performance on big result sets). + --> + <attribute attribute-name="nativeLimitOffset" attribute-value="true" /> + + <!-- + On initialization of connections the ConnectionFactory change the 'autoCommit' + state dependent of the used 'useAutoCommit' setting. This doesn't work in all + situations/environments, thus for useAutoCommit="1" the ConnectionFactory does + no longer set autoCommit to true on connection creation. + To use the old behavior (OJB version 1.0.3 or earlier) set this property + to 'true', then OJB change the autoCommit state (if needed) of + new obtained connections at connection initialization to 'true'. + If 'false' or this property is removed, OJB don't try to change connection + autoCommit state at connection initialization. + --> + <attribute attribute-name="initializationCheck" attribute-value="false" /> + + <!-- ** Attributes with name prefix "platform." are used to allow database + platform class specific settings (PlatformXYZImpl classes) --> + + <!-- If set to value >0 Oracle's implicit statement caching will be enabled by OJB (Oracle9i or higher). + Number of cached statements per connection using implicit caching with Oracle9i Connections. + See http://otn.oracle.com/sample_code/tech/java/sqlj_jdbc/files/jdbc30/StmtCacheSample/Readme.html--> + <attribute attribute-name="platform.oracle.statementCacheSize" attribute-value="15" /> + + <!-- Number of rows pre-fetched by the JDBC-driver for each executed query, when using row + pre-fetching with Oracle Connections (Oracle9i or higher). Note: this setting can be overridden + by specifying a connection-pool attribute with name="jdbc.defaultRowPrefetch". + See http://otn.oracle.com/sample_code/tech/java/sqlj_jdbc/files/advanced/RowPrefetchSample/Readme.html --> + <attribute attribute-name="platform.oracle.prefetchSize" attribute-value="20" /> + + <!-- If set to value >0 Oracle's native batch statement handling will be enabled by OJB + (Oracle9i or higher). If 0 or not specified the JDBC standard batch methods are used. + See http://technet.oracle.com/products/oracle9i/daily/jun07.html --> + <!--<attribute attribute-name="platform.oracle.batchSize" attribute-value="20" />--> + + <!-- alternative cache implementations, see docs section "Caching" --> + <object-cache class="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl"> + <!-- meaning of attributes, please see docs section "Caching" --> + <!-- common attributes --> + <attribute attribute-name="cacheExcludes" attribute-value=""/> + + <!-- ObjectCacheTwoLevelImpl attributes --> + <attribute attribute-name="applicationCache" attribute-value="org.apache.ojb.broker.cache.ObjectCacheDefaultImpl"/> + <attribute attribute-name="copyStrategy" attribute-value="org.apache.ojb.broker.cache.ObjectCacheTwoLevelImpl$CopyStrategyImpl"/> + <attribute attribute-name="forceProxies" attribute-value="false"/> + + <!-- ObjectCacheDefaultImpl attributes --> + <attribute attribute-name="timeout" attribute-value="900"/> + <attribute attribute-name="autoSync" attribute-value="true"/> + <attribute attribute-name="cachingKeyType" attribute-value="0"/> + <attribute attribute-name="useSoftReferences" attribute-value="true"/> + </object-cache> + + <!-- For more info, see section "Connection Handling" in docs (and apche commons-Pool and commons-DBCP) + Supported attributes: + maxActive, minIdle, maxIdle, maxWait, minEvictableIdleTimeMillis, numTestsPerEvictionRun, testOnBorrow + testOnReturn, testWhileIdle, timeBetweenEvictionRunsMillis, whenExhaustedAction, validationQuery, + DBCP specific attributes: removeAbandoned, removeAbandonedTimeout, logAbandoned + Additional custom attributes see below. + --> + <connection-pool + maxActive="30" + validationQuery="@VALIDATION_QUERY@" + whenExhaustedAction="0" + maxWait="10000"> + + <!-- Set initial connection pool size on startup of the pool --> + <!--<attribute attribute-name="initialSize" attribute-value="0"/>--> + + <!-- Set fetchSize to 0 to use driver's default. --> + <attribute attribute-name="fetchSize" attribute-value="0"/> + + <!-- ** Attributes with name prefix "jdbc." are passed directly to the JDBC driver. --> + + <!-- Oracle specific driver setting to enable oracle's specific statement batching. + Oracle Docs: "The value of this property is used as the default batch + size when using Oracle style batching." + Attention: With OracleXE + thin this setting cause unexpected behavior --> + <!--<attribute attribute-name="jdbc.defaultExecuteBatch" attribute-value="20"/>--> + + <!-- Oracle specific driver setting to set the default prefetch size. + Oracle Docs: "The value of this property is used as the default number of rows to prefetch." + Attention: With OracleXE + thin this setting cause unexpected behavior --> + <!--<attribute attribute-name="jdbc.defaultRowPrefetch" attribute-value="20"/>--> + + <!-- ** Attributes determining if ConnectionFactoryDBCPImpl is used --> + <attribute attribute-name="dbcp.poolPreparedStatements" attribute-value="true"/> + <attribute attribute-name="dbcp.maxOpenPreparedStatements" attribute-value="30"/> + <!-- Attribute determining if the Commons DBCP connection wrapper will allow + access to the underlying concrete Connection instance from the JDBC-driver + (by default it's enabled). --> + <!--<attribute attribute-name="dbcp.accessToUnderlyingConnectionAllowed" attribute-value="true"/>--> + </connection-pool> + + <!-- alternative sequence manager implementations, see "Sequence Manager" guide --> + <sequence-manager className="memory"> + <!-- The attribute 'seq.perField': If set 'true' it's possible to define per + field-descriptor sequence manager. This way you can use different sequence + identifier generation strategies. If set 'false' only the default sequence manager + defined within the jdbc-connection-descriptor is used and all sequence descriptors defined + on field-descriptor level are ignored --> + <attribute attribute-name="seq.perField" attribute-value="false"/> + + <!-- attributes supported by SequenceManagerHighLowImpl, + SequenceManagerInMemoryImpl, SequenceManagerNextValImpl + please see "Sequence Manager" guide or/and javadoc of class for more information --> + <attribute attribute-name="seq.start" attribute-value="200000"/> + <attribute attribute-name="seq.autoNaming" attribute-value="true"/> + + <!-- attributes supported by SequenceManagerHighLowImpl + please see "Sequence Manager" guide or/and javadoc of classes for more information --> + <attribute attribute-name="seq.grabSize" attribute-value="20"/> + + <!-- optional attributes supported by SequenceManagerNextValImpl (support depends + on the used database), please see "Sequence Manager" guide or/and javadoc of + classes for more information --> + <!-- attribute attribute-name="seq.as" attribute-value="INTEGER"/ --> + <!-- attribute attribute-name="seq.incrementBy" attribute-value="1"/ --> + <!-- attribute attribute-name="seq.maxValue" attribute-value="999999999999999999999999999"/ --> + <!-- attribute attribute-name="seq.minValue" attribute-value="1"/ --> + <!-- attribute attribute-name="seq.cycle" attribute-value="false"/ --> + <!-- attribute attribute-name="seq.cache" attribute-value="20"/ --> + <!-- attribute attribute-name="seq.order" attribute-value="false"/ --> + + <!-- optional attributes supported by SequenceManagerIdentityImpl, more details + please see "Sequence Manager" guide or/and javadoc of classes for more information --> + <!-- If set 'true' OJB use the JDBC 3.0 method "Statement.getGeneratedKeys()" + to obtain generated database identity keys. If set 'false' OJB use a separate + database specific "last identity call" query to request the generated identity key. --> + <attribute attribute-name="seq.generatedKeys" attribute-value="true"/> + + </sequence-manager> + </jdbc-connection-descriptor> + + <!-- Datasource example --> + <!-- jdbc-connection-descriptor + jcd-alias="default" + default-connection="true" + platform="Hsqldb" + jdbc-level="2.0" + jndi-datasource-name="java:DefaultDS" + username="sa" + password="" + batch-mode="false" + useAutoCommit="0" + ignoreAutoCommitExceptions="false" + > + Add the other elements like object-cache, connection-pool, sequence-manager here. + + </jdbc-connection-descriptor --> + Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_internal.xml URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_internal.xml?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_internal.xml (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_internal.xml Fri Mar 30 16:06:16 2007 @@ -0,0 +1,253 @@ +<!-- OJB INTERNAL MAPPINGS START HERE, DO NOT EDIT --> +<!-- +#/* Copyright 2002-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<!-- The OJB HIGH/LOW SequenceManagerTable --> + <class-descriptor + class="org.apache.ojb.broker.util.sequence.HighLowSequence" + table="OJB_HL_SEQ" + > + + <object-cache class="org.apache.ojb.broker.cache.ObjectCacheEmptyImpl"> + </object-cache> + + <!-- TODO: Rename column TABLENAME to NAME or SEQ_NAME --> + <field-descriptor + name="name" + column="TABLENAME" + jdbc-type="VARCHAR" + primarykey="true" + /> + <field-descriptor + name="maxKey" + column="MAX_KEY" + jdbc-type="BIGINT" + /> + <field-descriptor + name="version" + column="VERSION" + jdbc-type="INTEGER" + locking="true" + /> + </class-descriptor> + + +<!-- THIS IS THE OJB NAMED ROOTS TABLE, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.NamedRootsMap$NamedEntry" + table="OJB_NRM" + > + <field-descriptor + name="name" + column="NAME" + jdbc-type="VARCHAR" + primarykey="true" + /> + <field-descriptor + name="oid" + column="OID_" + jdbc-type="LONGVARBINARY" + /> + </class-descriptor> + +<!-- THIS IS THE OJB DLIST IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DListImpl" + table="OJB_DLIST" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + + <collection-descriptor + name="elements" + element-class-ref="org.apache.ojb.odmg.collections.DListEntry" + auto-retrieve = "true" + auto-update="none" + auto-delete="none" + > + <inverse-foreignkey field-ref="dlistId"/> + </collection-descriptor> + </class-descriptor> + +<!-- THIS IS THE OJB DLIST ENTRY IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DListEntry" + table="OJB_DLIST_ENTRIES" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <field-descriptor + name="dlistId" + column="DLIST_ID" + jdbc-type="INTEGER" + /> + <field-descriptor + name="position" + column="POSITION_" + jdbc-type="INTEGER" + /> + <field-descriptor + name="oid" + column="OID_" + jdbc-type="LONGVARBINARY" + conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion" + /> + </class-descriptor> + + <!-- THIS IS THE OJB DBAG IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DBagImpl" + table="OJB_DLIST" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <collection-descriptor + name="elements" + element-class-ref="org.apache.ojb.odmg.collections.DListEntry" + auto-retrieve = "true" + auto-update="none" + auto-delete="none" + > + <inverse-foreignkey field-ref="dlistId"/> + </collection-descriptor> + </class-descriptor> + +<!-- THIS IS THE OJB DSET IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DSetImpl" + table="OJB_DSET" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <collection-descriptor + name="elements" + element-class-ref="org.apache.ojb.odmg.collections.DSetEntry" + auto-retrieve = "true" + auto-update="none" + auto-delete="none" + > + <inverse-foreignkey field-ref="dlistId"/> + </collection-descriptor> + </class-descriptor> + +<!-- THIS IS THE OJB DSET ENTRY IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DSetEntry" + table="OJB_DSET_ENTRIES" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <field-descriptor + name="dlistId" + column="DLIST_ID" + jdbc-type="INTEGER" + /> + <field-descriptor + name="position" + column="POSITION_" + jdbc-type="INTEGER" + /> + <field-descriptor + name="oid" + column="OID_" + jdbc-type="LONGVARBINARY" + conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion" + /> + </class-descriptor> + +<!-- THIS IS THE OJB DMAP IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DMapImpl" + table="OJB_DMAP" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <collection-descriptor + name="entries" + element-class-ref="org.apache.ojb.odmg.collections.DMapEntry" + collection-class="org.apache.ojb.broker.util.collections.ManageableHashSet" + auto-retrieve = "true" + auto-update="none" + auto-delete="none" + > + <inverse-foreignkey field-ref="dmapId"/> + </collection-descriptor> + </class-descriptor> + +<!-- THIS IS THE OJB DMAP ENTRY IMPLEMENTATION, DO NOT EDIT--> + <class-descriptor + class="org.apache.ojb.odmg.collections.DMapEntry" + table="OJB_DMAP_ENTRIES" + > + <field-descriptor + name="id" + column="ID" + jdbc-type="INTEGER" + primarykey="true" + autoincrement="true" + /> + <field-descriptor + name="dmapId" + column="DMAP_ID" + jdbc-type="INTEGER" + /> + <field-descriptor + name="keyOid" + column="KEY_OID" + jdbc-type="LONGVARBINARY" + conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion" + /> + <field-descriptor + name="valueOid" + column="VALUE_OID" + jdbc-type="LONGVARBINARY" + conversion="org.apache.ojb.broker.accesslayer.conversions.Object2ByteArrFieldConversion" + /> + </class-descriptor> + + + + <!-- END OF OJB INTERNAL MAPPINGS--> Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_user.xml URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_user.xml?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_user.xml (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/repository_user.xml Fri Mar 30 16:06:16 2007 @@ -0,0 +1,22 @@ +<!-- Please keep user defined mappings in this file only + to avoid mixing user defined and system mappings. --> +<!-- Mapping of User defined classes starts here --> +<!-- +#/* Copyright 2002-2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<!-- This file usually contains the mappings for the application classes. --> + +<!-- Mapping of User defined classes ends here --> Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/simplelog.properties URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/simplelog.properties?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/simplelog.properties (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/simplelog.properties Fri Mar 30 16:06:16 2007 @@ -0,0 +1,24 @@ +#<!-- +#/* Copyright 2002-2004 The Apache Software Foundation +# * +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +#--> +# +# simplelog config +# + +#set log levels +org.apache.commons.logging.simplelog.defaultlog=warn +org.apache.commons.logging.simplelog.log.org.apache.ojb.broker.accesslayer.JdbcAccess=warn +org.apache.commons.logging.simplelog.log.org.apache.ojb.broker.accesslayer.SqlGenerator=warn Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/spy.properties URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/spy.properties?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/spy.properties (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/spy.properties Fri Mar 30 16:06:16 2007 @@ -0,0 +1,242 @@ +#<!-- +#/* Copyright 2002-2004 The Apache Software Foundation +# * +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +#--> +################################################################# +# P6Spy Options File # +# See documentation for detailed instructions # +################################################################# + +################################################################# +# MODULES # +# # +# Modules provide the P6Spy functionality. If a module, such # +# as module_log is commented out, that functionality will not # +# be available. If it is not commented out (if it is active), # +# the functionality will be active. # +# # +# Values set in Modules cannot be reloaded using the # +# reloadproperties variable. Once they are loaded, they remain # +# in memory until the application is restarted. # +# # +################################################################# + +module.log=com.p6spy.engine.logging.P6LogFactory +#module.outage=com.p6spy.engine.outage.P6OutageFactory + +################################################################# +# REALDRIVER(s) # +# # +# In your application server configuration file you replace the # +# "real driver" name with com.p6spy.engine.P6SpyDriver. This is # +# where you put the name of your real driver P6Spy can find and # +# register your real driver to do the database work. # +# # +# If your application uses several drivers specify them in # +# realdriver2, realdriver3. See the documentation for more # +# details. # +# # +# Values set in REALDRIVER(s) cannot be reloaded using the # +# reloadproperties variable. Once they are loaded, they remain # +# in memory until the application is restarted. # +# # +################################################################# + +# oracle driver +# realdriver=oracle.jdbc.driver.OracleDriver + +# mysql Connector/J driver +# realdriver=com.mysql.jdbc.Driver + +# informix driver +# realdriver=com.informix.jdbc.IfxDriver + +# ibm db2 driver +# realdriver=COM.ibm.db2.jdbc.net.DB2Driver + +# the mysql open source driver +#realdriver=org.gjt.mm.mysql.Driver + +# the postgresql open source driver +#realdriver=org.postgresql.Driver + +# the hsqldb jdbc driver (OJB testsuite and tutorials) +realdriver=org.hsqldb.jdbcDriver + +#specifies another driver to use +#realdriver2=com.sap.dbtech.jdbc.DriverSapDB +realdriver2=oracle.jdbc.driver.OracleDriver +#specifies a third driver to use +realdriver3=org.gjt.mm.mysql.Driver + +################################################################ +# P6LOG SPECIFIC PROPERTIES # +################################################################ +# no properties currently available + +################################################################ +# P6OUTAGE SPECIFIC PROPERTIES # +################################################################ +# Outage Detection +# +# This feature detects long-running statements that may be indicative of +# a database outage problem. If this feature is turned on, it will log any +# statement that surpasses the configurable time boundary during its execution. +# When this feature is enabled, no other statements are logged except the long +# running statements. The interval property is the boundary time set in seconds. +# For example, if this is set to 2, then any statement requiring at least 2 +# seconds will be logged. Note that the same statement will continue to be logged +# for as long as it executes. So if the interval is set to 2, and the query takes +# 11 seconds, it will be logged 5 times (at the 2, 4, 6, 8, 10 second intervals). +# +# outagedetection=true|false +# outagedetectioninterval=integer time (seconds) +# +outagedetection=false +outagedetectioninterval= + +################################################################ +# COMMON PROPERTIES # +################################################################ + +# comma separated list of tables to include +include = +# comma separated list of tables to exclude +exclude = + +# sql expression to evaluate if using regex +sqlexpression = + +# filter what is logged +filter=false + +# turn on tracing +autoflush = true + +# sets the date format using Java's SimpleDateFormat routine +dateformat= + +#list of categories to explicitly include +includecategories= + +#list of categories to exclude: error, info, batch, debug, statement, +#commit, rollback and result are valid values +excludecategories=info,debug,result,batch,resultset,prepared + +#allows you to use a regex engine or your own matching engine to determine + +#which statements to log +# +#stringmatcher=com.p6spy.engine.common.GnuRegexMatcher +#stringmatcher=com.p6spy.engine.common.JakartaRegexMatcher +stringmatcher= + +# prints a stack trace for every statement logged +stacktrace=false +# if stacktrace=true, specifies the stack trace to print +stacktraceclass= + +# determines if property file should be reloaded +reloadproperties=false +# determines how often should be reloaded in seconds +reloadpropertiesinterval=60 + +#if=true then url must be prefixed with p6spy: +useprefix=false + +#specifies the appender to use for logging +#appender=com.p6spy.engine.logging.appender.Log4jLogger +#appender=com.p6spy.engine.logging.appender.StdoutLogger +appender=com.p6spy.engine.logging.appender.FileLogger + +# name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log) (used for file logger only) +logfile = spy.log + +# append to the p6spy log file. if this is set to false the +# log file is truncated every time. (file logger only) +append=true + +#The following are for log4j logging only +log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender +log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout +log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n + +#log4j.appender.CHAINSAW_CLIENT=org.apache.log4j.net.SocketAppender +#log4j.appender.CHAINSAW_CLIENT.RemoteHost=localhost +#log4j.appender.CHAINSAW_CLIENT.Port=4445 +#log4j.appender.CHAINSAW_CLIENT.LocationInfo=true + +log4j.logger.p6spy=INFO,STDOUT + + +################################################################# +# DataSource replacement # +# # +# Replace the real DataSource class in your application server # +# configuration with the name com.p6spy.engine.spy.P6DataSource,# +# then add the JNDI name and class name of the real # +# DataSource here # +# # +# Values set in this item cannot be reloaded using the # +# reloadproperties variable. Once it is loaded, it remains # +# in memory until the application is restarted. # +# # +################################################################# +#realdatasource=/RealMySqlDS +#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource + +################################################################# +# DataSource properties # +# # +# If you are using the DataSource support to intercept calls # +# to a DataSource that requires properties for proper setup, # +# define those properties here. Use name value pairs, separate # +# the name and value with a semicolon, and separate the # +# pairs with commas. # +# # +# The example shown here is for mysql # +# # +################################################################# +#realdatasourceproperties=port;3306,serverName;ibmhost,databaseName;mydb + +################################################################# +# JNDI DataSource lookup # +# # +# If you are using the DataSource support outside of an app # +# server, you will probably need to define the JNDI Context # +# environment. # +# # +# If the P6Spy code will be executing inside an app server then # +# do not use these properties, and the DataSource lookup will # +# use the naming context defined by the app server. # +# # +# The two standard elements of the naming environment are # +# jndicontextfactory and jndicontextproviderurl. If you need # +# additional elements, use the jndicontextcustom property. # +# You can define multiple properties in jndicontextcustom, # +# in name value pairs. Separate the name and value with a # +# semicolon, and separate the pairs with commas. # +# # +# The example shown here is for a standalone program running on # +# a machine that is also running JBoss, so the JDNI context # +# is configured for JBoss (3.0.4). # +# # +################################################################# +#jndicontextfactory=org.jnp.interfaces.NamingContextFactory +#jndicontextproviderurl=localhost:1099 +#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.nameing:org.jnp.interfaces + +#jndicontextfactory=com.ibm.websphere.naming.WsnInitialContextFactory +#jndicontextproviderurl=iiop://localhost:900 Added: db/ojb/branches/OJB_1_0_RELEASE/src/config/web.xml URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/config/web.xml?view=auto&rev=524308 ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/config/web.xml (added) +++ db/ojb/branches/OJB_1_0_RELEASE/src/config/web.xml Fri Mar 30 16:06:16 2007 @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- +/* Copyright 2002-2004 Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<web-app xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" + version="2.4"> + + <display-name>OJB Lock-Server</display-name> + <description> + The OJB locking server servlet + </description> + + <servlet> + <servlet-name>lockserver</servlet-name> + <servlet-class>org.apache.ojb.broker.locking.LockManagerServlet</servlet-class> + <init-param> + <param-name>lockManager</param-name> + <param-value>org.apache.ojb.broker.locking.LockManagerInMemoryImpl</param-value> + <!--<param-value>org.apache.ojb.broker.locking.LockManagerCommonsImpl</param-value>--> + </init-param> + <init-param> + <param-name>lockTimeout</param-name> + <!-- set lock timeout to 2 minutes (setting in [ms]) --> + <param-value>120000</param-value> + </init-param> + <init-param> + <!-- set block timeout to 1 sec (setting in [ms], if supported by the Impl.) --> + <param-name>blockTimeout</param-name> + <param-value>1000</param-value> + </init-param> + + <!--load-on-startup>1</load-on-startup--> + </servlet> + + <!-- The mapping for the webdav servlet --> + <servlet-mapping> + <servlet-name>lockserver</servlet-name> + <url-pattern>/</url-pattern> + </servlet-mapping> + + <!-- Establish the default list of welcome files --> + <welcome-file-list> + <welcome-file>index.jsp</welcome-file> + <welcome-file>index.html</welcome-file> + <welcome-file>index.htm</welcome-file> + </welcome-file-list> +</web-app>