admin@glassfish.java.net

Re: conn. pool related domain.dtd changes for GlassFish V2

From: Jagadish Prasath Ramu <Jagadish.Ramu_at_Sun.COM>
Date: Tue, 22 Aug 2006 10:32:54 +0530

Hi Bill,
Please find my responses in-line.

On Mon, 2006-08-21 at 21:04 -0700, Bill Shannon wrote:

> Jagadish Prasath Ramu wrote:
> >>I don't understand this. It is GUI that needs to show "pages" of
> >>the properties showing most significant ones before others.
> >>Are you saying that we should now distinguishing at the level
> >>of properties themselves? That's confusing.
> >>Why should customer care if we put <property> or
> >><sun-specific-property> in domain.xml? Shouldn't tools
> >>do the right thing?
> >>
> > Eg: of a connection pool having mysql, as well sun-specific properties.
> > Attached (1) & (2)
> > 1) con. pool config in domain.xml
> > 2) con. pool properties when listed using "get" command.
> > (Sun specific properties are "LazyConnectionAssociation",
> > "LazyConnectionEnlistment", "AssociateWithThread")
> >
> >
> > a) This will separate the properties from portability perspective. User
> > will know that these are GlassFish specific.
> > b) Further, what if there is a conflict between db-vendor property and
> > sun-specific-property ?
> > c) When MySQLProperties & Proposed Sun Specific Properties are listed
> > within --properties, it will might lead to confusion.
> >
> > *MySQL Properties*
> > MaxReconnects
> > ConnectTimeout
> > AutoReconnectForPools
> > ReconnectAtTxEnd
> >
> > *Proposed SunSpecificProperties*
> > ConnectionCreationRetry
> > ConnectionCreationRetryAttempts
> > StatementTimeout
>
> My initial reaction was the same as Kedar, so help me understand more about
> how this works...
>
> How do all these properties appear in domain.xml? Is something populating
> domain.xml with all *possible* properties for a JDBC driver, even though
> the user hasn't changed the value from the default? If so, fixing that
> would likely help a lot.

Currently
<jdbc-connection-pool>
        <property name="MaxReconnects" value="3"/>
        <property name="ConnectTimeout" value="30"/>
        <property name="AutoReconnectForPools" value="false"/>
        <property name="ReconnectAtTxEnd" value="false"/>
</jdbc-connection-pool>

During Con.Pool configuration admin-infrastructure will request the
connectors module for properties of datasource.

connectors module will introspect the db-driver provided datasource
class and provide the properties with their default values.

Yes, at present, even if the user has not changed the default value,
they are part of con.pool configuration.


>
> Who interprets these properties? I assume that the db-vendor properties
> are interpreted by the JDBC driver, correct? Are the sun-specific
> properties interpreted only by the app server? If we need two groups,
> maybe that's a better way to distinguish them - JDBC driver properties
> vs. app server properties or connection pool properties or something like
> that.

Properties obtained from con.pool configuration will be intercepted by
app. server and set either as con.pool property or as datasource
object's property appropriately.

>
> Do the properties appear as JavaBeans properties on some object? Do all
> these properties, db-vendor and sun-specific, appear as JavaBeans
> properties on a single object? If so what object, and how exactly does
> that work, how are the properties combined into a single object?

Got as Single object from admin.
[ set of ElementProperty objects of
com.sun.enterprise.config.serverbeans.JdbcConnectionPool ]

>
> I suppose it's too late to distinguish the properties based on a naming
> pattern, e.g., SunStatementTimeout, etc.

We can consider this option too, if introduction of new DTD element is
not agreeable.

[ Our initial plan was to have all sun-specific properties to be
specified explicitly in DTD, since properties like
ConnectionCreationRetry, ConnectionCreationRetryAttempts,
ConnectionCreationTimeout belong to one feature]

i.e.,
instead of
      <sun-specific-property>
        <property name="ConnectionCreationRetry" value="true"/>
        <property name="ConnectionCreationRetryAttempts" value="3"/>
        <property name="ConnectionCreationTimeout" value="30"/>
      </sun-specific-property>

it would have been

        <sun-specific-property>
                <connection-creation-retry retry-attempts="3"
time-out-in-seconds="30"/>
        <sun-specific-property>

Thanks,
-Jagadish