mkalen      2005/04/25 20:42:37

  Modified:    src/doc/forrest/src/documentation/content/xdocs/docu/guides
                        Tag: OJB_1_0_RELEASE connection.xml repository.xml
  Log:
  Update connection handling docs (specifically changes made in OJB-14, OJB-31).
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.3   +107 -81   
db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/connection.xml
  
  Index: connection.xml
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/connection.xml,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- connection.xml    24 Mar 2005 17:54:17 -0000      1.1.2.2
  +++ connection.xml    26 Apr 2005 03:42:37 -0000      1.1.2.3
  @@ -1,6 +1,6 @@
   <?xml version="1.0" encoding="UTF-8"?>
   <!--
  -  Copyright 2002-2004 The Apache Software Foundation
  +  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.
  @@ -19,9 +19,10 @@
   
   <document>
       <header>
  -        <title>OJB - Connection Handling</title>
  +        <title>Connection Handling</title>
           <authors>
               <person name="Armin Waibel" email="[EMAIL PROTECTED]"/>
  +            <person name="Martin Kal�n" email="[EMAIL PROTECTED]"/>
           </authors>
       </header>
   
  @@ -29,8 +30,8 @@
           <section>
               <title>Introduction</title>
               <p>
  -                In this section the connection handling within OJB will be 
described. OJB use two
  -                classes which share the connection management:
  +                In this section the connection handling within OJB is 
described.
  +                The connection management is implemented through two OJB 
interfaces:
               </p>
               <ul>
                   
<li><code>org.apache.ojb.broker.accesslayer.ConnectionFactory</code></li>
  @@ -56,74 +57,90 @@
       void releaseAllResources();
   }]]></source>
               <p>
  -                To enable a specific <em>ConnectionFactory</em> 
implementation class in <em>OJB.properties</em>
  -                file, set property <em>ConnectionFactoryClass</em>:
  +                To enable a specific <em>ConnectionFactory</em> 
implementation class in the
  +                <em>OJB.properties</em> file, set property 
<em>ConnectionFactoryClass</em>. Default:
               </p>
               <source><![CDATA[
   
ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl]]></source>
               <p>
  -                OJB was shipped with a bunch of different implementation 
classes which can be used in
  -                different situations, e.g. creation of connection instances 
is costly, so pooling
  -                of connection will increase performance.
  +                OJB is shipped with several different implementation classes 
for use in
  +                different situations. The default implementation for 
example, will pool
  +                created Connection instances for increased performance 
(since instance creation
  +                normally makes a database server roundtrip and thus is 
costly).
               </p>
               <p>
  -                To make it more easier to implement own 
<em>ConnectionFactory</em> classes an abstract base
  -                class called 
<code>org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl</code> 
exists,
  -                most shipped implementation classes inherited from this 
class.
  +                To make it more easier to implement your own 
<em>ConnectionFactory</em> class,
  +                an abstract base class called
  +                
<code>org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl</code> 
exists,
  +                most shipped implementation classes inherit from this class.
               </p>
               <note>
  -                All shipped implementation with support for connection 
pooling only pool direct obtained connections,
  -                <em>DataSources</em> will <strong>never</strong> be pooled.
  +                All shipped implementations of <em>ConnectionFactory</em> 
with support for
  +                connection pooling will only use object pools for 
connections obtained directly
  +                from the JDBC DriverManager. If you are using a 
<em>DataSource</em> configuration,
  +                the JNDI DataSource is responsible for pooling.
               </note>
               <section>
                   <title>ConnectionFactoryPooledImpl</title>
                   <p>
  -                    An <em>ConnectionFactory</em> implementation using <link 
href="ext:commons-pool">commons-pool</link>
  -                    to pool the requested connections. On lookup call a 
connection was borrowed from pool and
  -                    returned on the release call. This implementation was 
used
  -                    as <em>default</em> setting in <link 
href="ext:ojb.properties">OJB.properties</link> file.
  +                    A <em>ConnectionFactory</em> implementation using
  +                    <link href="ext:commons-pool">commons-pool</link> to 
pool the Connection
  +                    instances. On lookupConnection a Connection instance is 
borrowed from the
  +                    object pool, and returned on the releaseConnection call.
  +                    This implementation is used as <em>default</em> setting 
in the
  +                    <link href="ext:ojb.properties">OJB.properties</link> 
file.
                   </p>
                   <p>
  -                    This implementation allows a wide range off different 
settings, more info about the configuration
  -                    properties <link 
href="site:repository/connection-pool">can be found in
  -                    metadata repository <em>connection-pool</em> 
section</link>.
  +                    This implementation allows a wide range of different 
settings,
  +                    more info about the configuration properties can be 
found in the metadata
  +                    repository
  +                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link>
  +                    section.
                   </p>
               </section>
   
               <section>
                   <title>ConnectionFactoryNotPooledImpl</title>
                   <p>
  -                    The name is programm, this implementation creates a new 
connection on each request
  -                    and close it on release call. All
  -                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link> settings
  -                    are ignored by this implementation.
  +                    Implementation that creates a new Connection instance on 
each lookupConnection
  +                    call and closes (destroys) it on releaseConnection. All
  +                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link>
  +                    settings are ignored by this implementation.
                   </p>
               </section>
   
               <section>
                   <title>ConnectionFactoryManagedImpl</title>
                   <p>
  -                    This is a specific implementation for use in <em>managed 
environments</em> like J2EE conform
  -                    application server. In managed environments it is 
<strong>mandatory</strong> to use
  -                    <em>DataSource</em> provided by the application server.
  +                    Implementation specifically for use in <em>managed 
environments</em> like J2EE
  +                    conformant application servers. In managed environments 
it is
  +                    <strong>mandatory</strong> to use <em>DataSource</em> 
configuration, with
  +                    Connection objects provided by the application server. 
OJB will not control
  +                    Connection properties or transaction handling when using 
this implementation.
                   </p>
                   <p>
                       All
  -                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link> settings
  -                    are ignored by this implementation.
  +                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link>
  +                    settings are ignored by this implementation.
                   </p>
               </section>
   
               <section>
                   <title>ConnectionFactoryDBCPImpl</title>
                   <p>
  -                    An implementation using <link 
href="ext:commons-dbcp">commons-dbcp</link> to pool
  -                    the connections.
  +                    Implementation using <link 
href="ext:commons-dbcp">commons-dbcp</link> to pool
  +                    the Connection instances. Since DBCP is using
  +                    <link href="ext:commons-pool">commons-pool</link> 
internally, this
  +                    implementation is very similar to 
<em>ConnectionFactoryPooledImpl</em>, but
  +                    permits additional configuration for logging abandoned 
Connection instances
  +                    (usable under development for detecting bad programming 
patterns).
                   </p>
                   <p>
  -                    This implementation allows a wide range off different 
settings, more info about the configuration
  -                    properties <link 
href="site:repository/connection-pool">can be found in
  -                    metadata repository <em>connection-pool</em> 
section</link>.
  +                    This implementation allows a wide range of different 
settings,
  +                    more info about the configuration properties can be 
found in the metadata
  +                    repository
  +                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link>
  +                    section.
                   </p>
               </section>
   
  @@ -168,7 +185,7 @@
       void clearBatch();
   }]]></source>
               <p>
  -                The <em>ConnectionManager</em> was used by the 
<em>PersistenceBroker</em> to handle
  +                The <em>ConnectionManager</em> is used by the 
<em>PersistenceBroker</em> to handle
                   connection usage lifecycle.
               </p>
           </section>
  @@ -181,36 +198,39 @@
               <section>
                   <title>How does OJB handle connection pooling?</title>
                   <p>
  -                    OJB does connection pooling per default, expect for 
datasources.
  -                    Datasources never will be pooled.
  +                    OJB does connection pooling per default, except for 
datasources that are
  +                    never pooled internally by OJB.
  +                    Pooling of Connection instances when configuring OJB 
with DataSource
  +                    lookup must be configured and performed in the 
DataSource provider.
                   </p>
                   <p>
  -                    Responsible for managing the connections in OJB are 
implementations of the
  +                    The implementations of the
                       
<code>org.apache.ojb.broker.accesslayer.ConnectionFactory.java</code>
  -                    interface. There are several implementations shipped 
with OJB called
  -                    
<code>org.apache.ojb.broker.accesslayer.ConnectionFactoryXXXImpl.java</code>.
  -                    You can find among other things a none pooling 
implementation and a implementation
  -                    using jakarta-DBCP api.
  -                </p>
  -                <p>
  -                    To manage the connection pooling define in your
  -                    <link 
href="site:repository/jdbc-connection-descriptor"><em>jdbc-connection-descriptor</em></link>
  -                    a
  -                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link> element.
  -                    Here you can specify the properties for the used 
<em>ConnectionFactory</em> implementation.
  -                    More common info see <link 
href="site:repository">repository section</link>
  -                    or in <link 
href="ext:ojb/repository.dtd">repository.dtd</link>.
  +                    interface are responsible for managing the connections 
in OJB.
  +                    There are several implementations shipped with OJB called
  +                    
<code>org.apache.ojb.broker.accesslayer.ConnectionFactoryImpl.java</code>.
  +                    There is, among others, a non-pooling implementation and 
an implementation
  +                    using Commons DBCP API.
  +                </p>
  +                <p>
  +                    Configuration of the connection pooling is specified 
using the
  +                    <link 
href="site:repository/connection-pool"><em>connection-pool</em></link>
  +                    element for each
  +                    <link 
href="site:repository/jdbc-connection-descriptor"><em>jdbc-connection-descriptor</em></link>.
  +                    The <em>connection-pool</em> element can be configured 
with properties for
  +                    the specific <em>ConnectionFactory</em> implementation 
or JDBC driver used.
  +                    For general information about the configuration, see the
  +                    <link href="site:repository">repository section</link> 
or read the comments in
  +                    <link 
href="ext:ojb/repository.dtd">repository.dtd</link>.
                   </p>
               </section>
   
               <anchor id="obtain-connection"/>
               <section>
  -                <title>Can I directly obtain a
  -                <code>java.sql.Connection</code> within OJB?</title>
  +                <title>Can I directly obtain a 
<code>java.sql.Connection</code> within OJB?</title>
                   <p>
  -                    The PB-api enabled the possibility to obtain a 
connection from the current
  -                    used
  -                    <code>PersistenceBroker</code> instance:
  +                    It is possible to obtain a Connection using the PB API 
and a
  +                    <code>PersistenceBroker</code> instance. Example:
                   </p>
                   <source><![CDATA[
   PersistenceBroker broker = 
PersistenceBrokerFactory.createPersistenceBroker(myKey);
  @@ -218,47 +238,53 @@
   // do something
   
   Connection con = broker.serviceConnectionManager().getConnection();
  -// perform your connction action and do more
  +// perform your connection action and do more
   // close the created statement and result set
   
   broker.commitTransaction();
   broker.close();]]></source>
                   <p>
  -                    After obtain the connection with
  -                    
<code>broker.serviceConnectionManager().getConnection()</code>, the connection 
can be used
  -                    in a 'normal' way. The user is responsible for cleanup 
of created statements and result
  -                    sets, so close statements and result sets after use.
  +                    After obtaining a Connection with
  +                    
<code>broker.serviceConnectionManager().getConnection()</code>,
  +                    the connection can be used for any JDBC operations 
(except for transaction
  +                    handling, more on this below).
  +                    The user is responsible for cleanup of created Statement 
and ResultSet
  +                    instances, so be sure to guard your call with a finally 
clause and close
  +                    resources after use.
                   </p>
                   <p>
  -                    For read-only operations there is no need to start a 
PB-tx.
  +                    For read-only operations there is no need to start a PB 
transaction
  +                    as in the example.
                   </p>
                   <note>
  -                    Do not commit the connection instance, this will be done 
by OJB when PersistenceBroker
  -                    commit-/abortTransaction was called.
  -                    <br/>
  -                    Never do a <code>Connection.close()</code> call on the 
obtained connection instance
  -                    by hand!!
  -                    <br/>
  -                    This will be handled by the
  -                    <link 
href="#connection-factory"><em>ConnectionFactory</em></link>.
  +                    Do not commit any transactions on the Connection level, 
this should be left to
  +                    OJB's PB API and will be performed automatically by 
calling PersistenceBroker
  +                    commit-/abortTransaction methods.
  +                </note>
  +                <note>
  +                    Do not call <code>Connection.close()</code> on the 
obtained Connection,
  +                    this should be left to OJB's
  +                    <link 
href="#connection-factory"><em>ConnectionFactory</em></link> and will be
  +                    performed automatically when calling 
<code>broker.close()</code>.
                   </note>
                   <p>
  -                    If <strong>no</strong> transaction is running, it is 
possible to release a connection after
  -                    use by hand with call:
  +                    If <strong>no</strong> transaction is running, it is 
possible to release a
  +                    connection "by hand" after use by calling:
                   </p>
                   <source><![CDATA[
  -pBroker.serviceConnectionManager().releaseConnection();]]></source>
  +broker.serviceConnectionManager().releaseConnection();]]></source>
                   <p>
  -                    This call cleanup the used connection and pass the 
instance to release method
  -                    of <link 
href="#connection-factory"><em>ConnectionFactory</em></link> (this will e.g.
  -                    return connection it to pool or close it).
  +                    This call performs cleanup operations on the used 
connection and pass the
  +                    instance to the release method of
  +                    <link 
href="#connection-factory"><em>ConnectionFactory</em></link> (this will
  +                    e.g. return the connection to pool or close it).
                   </p>
                   <p>
  -                    If you don't do any connection cleanup at the latest the 
connection will be released
  -                    on PB.close() call.
  +                    If you do not do any connection cleanup, the connection 
will at the latest be
  +                    released when calling <code>broker.close()</code>.
                   </p>
                   <p>
  -                    Users who interested in this section also interested in
  +                    Users who are interested in this section might also be 
interested in
                       <link href="site:faq/performSQL">'Is it possible to 
perform my own sql-queries in OJB?'</link>.
                   </p>
               </section>
  
  
  
  1.1.2.6   +36 -11    
db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/repository.xml
  
  Index: repository.xml
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/doc/forrest/src/documentation/content/xdocs/docu/guides/repository.xml,v
  retrieving revision 1.1.2.5
  retrieving revision 1.1.2.6
  diff -u -r1.1.2.5 -r1.1.2.6
  --- repository.xml    24 Mar 2005 17:54:17 -0000      1.1.2.5
  +++ repository.xml    26 Apr 2005 03:42:37 -0000      1.1.2.6
  @@ -1,6 +1,6 @@
   <?xml version="1.0" encoding="UTF-8"?>
   <!--
  -  Copyright 2002-2004 The Apache Software Foundation
  +  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.
  @@ -26,6 +26,7 @@
               <person name="Brian McCallister" email="[EMAIL PROTECTED]"/>
               <person name="Armin Waibel" email="[EMAIL PROTECTED]"/>
               <person name="Thomas Dudziak" email="[EMAIL PROTECTED]"/>
  +            <person name="Martin Kal�n" email="[EMAIL PROTECTED]"/>
           </authors>
       </header>
   
  @@ -443,18 +444,42 @@
               <section>
                   <title>connection-pool</title>
                   <p>
  -                    The
  -                    <em>connection-pool</em> element specifies the 
connection pooling parameter. More info
  -                    about the
  -                    <link href="site:connection">connection handling can be 
found here</link>.
  +                    The <em>connection-pool</em> element specifies the 
connection pooling
  +                    and low-level JDBC driver parameters. More info about the
  +                    <link href="site:connection">connection handling</link>.
  +                </p>
  +                <p>
  +                    Use the
  +                    <link href="#custom-attribute"><em>attribute</em></link> 
element to set
  +                    JDBC-level properties.
  +                </p>
  +                <p>
  +                    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.)
  +                </p>
  +                <p>
  +                    JDBC-level attributes used internally in OJB:
  +                </p>
  +                <p>
  +                    <em>fetchSize</em> - 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.
                   </p>
                   <source><![CDATA[
  -<!ELEMENT connection-pool (documentation? )
  ->
  -                    ]]></source>
  +<!ELEMENT connection-pool (
  +    documentation?,
  +    attribute* )
  +>]]></source>
                   <p>
  -                    Valid attributes for the
  -                    <em>connection-pool</em> element are:
  +                    Valid attributes for the <em>connection-pool</em> 
element are:
                   </p>
                   <source><![CDATA[
   <!ATTLIST connection-pool
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to