GlassFish V3 Connectors (JavaEE Connector Architecture, Connection Pooling, JDBC-RA) One Pager

[

Unknown macro: {TableOfContents title=' '}

|(TableOfContentstitle='')]

1. Introduction

1.1. Project/Component Working Name:

Connectors, Connection Pool, JDBC features in GlassFish V3

1.2. Name(s) and e-mail address of Document Author(s)/Supplier:

Jagadish Ramu: Jagadish.Ramu@Sun.COM

Shalini Muthukrishnan: Shalini.Muthukrishnan@Sun.COM

1.3. Date of This Document:

12/12/08

1.4. Revision History

Date Change Revision Changes from previous version
11/30/09 Modified description of certain features with erroneous attribute names/descriptions 13 changes
10/05/09 Modified description of Flush connection pool feature 12 changes
09/09/09 Commented postponed features (multiple-associate-with-thread, application-scoped-resources ) and updated 4.7-Admin/Config Impact sections with latest configuration for sun-resources_1_4.dtd, work-security-map, admin-object 11 changes
06/23/09 Modified 4.1.7, 4.1.15 and 4.7-Admin/Config Impact sections based on comments from Bill Shannon 10 changes
05/27/09 Modified 4.1.4, 4.1.9 and 4.1.10 based on comments from Bill Shannon 9 changes
02/09/09 Added sun-resources.dtd to exported interfaces section 8 changes
02/09/09 Updated based on comments from Siva 7 changes
02/02/09 Added Application Scoped Resources 6 changes
01/20/09 Updated Revision History 5 changes
01/20/09 Modified based on comments from Vince and Steve 4 changes
01/06/09 Clarified init-sql, switch-off-pooling, custom-resources sections based on feedback from Binod 3  
12/26/08 Review Ready 2  
12/12/08 Draft Created 1  

2. Project Summary

2.1. Project Description:

This document describes the functionality changes and enhancements to Connectors, Connection Pooling, JDBC-RA

2.2. Risks and Assumptions:

  • Risks: None.
  • Assumptions: None.

3. Problem Summary

3.1. Problem Area:

Following enhancements need to be introduced in GlassFish v3 to overcome or to provide :

  • Absence of statement caching support for jdbc applications
  • Aid to call a user defined validation mechanism
  • No mechanism to execute a user provided SQL for initialization
  • No mechanism to flush a connection pool and re-initialize the connections
  • No mechanism to have application specific (self-contained) resources
  • Ease of use and configurability features
  • Application Server vendor specific support for JSR 322

3.2. Justification:

Enhancements to the existing connectors, pooling, jdbc modules is very useful as the functionality offered by these modules are used widely among the user-base and based on the competitive appservers, these functionality improvements and changes would not only bring in performance improvements but also feature parity. The proposed features will highly enhance the user experience.

4. Technical Description:

4.1. Details:

The Connectors, Pooling, JDBC-RA would provide the following enhancements in this release

4.1.1 Statement Caching

Statement Caching is a feature to cache statements, prepared-statements, callable-statements that are executed repeatedly by applications, thereby improving performance. Instead of preparing the statement each time, the cache is searched for a match. The overhead of parsing and creating new statements each time is prevented.

Statement Caching, in general, is a functionality of the JDBC driver. This proposal is for supporting statement caching that will be useful for drivers that do not support caching. The feature can be enabled by setting a connection pool configuration attribute statement-cache-size. By default, this attribute is set to zero and the statement caching is turned off. Caching is enabled when set to a positive non-zero value eg: 10 implies upto 10 statements can be maintained in the statement cache.

Built-in cache eviction strategy will be LRU-based (Least Recently Used). This is the only cache eviction strategy provided in this release. When a connection pool is flushed, the connections in the statement cache will be recreated.

4.1.2 Custom Validation

Using Custom validation a user can specify his/her own implementation that will be used during connection validation. This feature aids user to call database specific optimized or faster validation routines.

The existing attribute connection-validation-method could be set to a value custom-validation. Other existing validation mechanisms available in JDBC Connection pool are table/auto-commit/metadata.

A public interface org.glassfish.api.jdbc.ConnectionValidation will be introduced which developers can implement to plugin their implementations.

A new attribute validation-classname will be used to specify the fully-qualified name of the Class that implements the ConnectionValidation interface. Administrators or developers could provide the custom validation implementation that should be made available to the application server. When validation is turned on and connection-validation-method is set to custom-validation, the attribute validation-classname is mandatory.

By default, custom validation mechanisms will be provided for Derby, MySQL, Oracle and Postgres for faster and optimized validation routines. Additionally, for JDBC 40 compliant database drivers, a validation mechanism will be provided that uses Connection.isValid(0) implementation.

4.1.3 Init Sql

Init Sql feature aids in executing an arbitrary query provided by the user during connection creation.

Every time a physical connection (ManagedConnection) to the database is created from the pool (not the connections that are reused from the pool), the initSql will be executed to initialize the state of the connection.

A new attribute init-sql is used to specify a SQL string to be executed whenever a connection is created from the pool. This is an optional attribute and should carry a value when initialization SQL is to be executed. This is a useful feature to set the request/session specific properties, suited for homogeneous requests (e.g : for single application usage).

There is no default value and hence enabled only when a value is specified.

4.1.4 Tracing SQL Statements

A feature to trace the SQL statements executed by applications using a jdbc connection pool. In most cases, administrators refer to the database logs for SQL statements analysis. This is made easy by setting an attribute sql-trace-listeners to a comma separated list of listener implementations.

A public interface org.glassfish.api.jdbc.SQLTraceListener will be introduced which administrators/developers can implement to provide a means of recording the SQLTraceRecord objects.

GlassFish provides an inbuilt SQL tracing logger to log the SQL operations in the form of SQLTraceRecord in server.log file. "javax.enterprise.resource.sqltrace" is the module name using which SQL operation will be logged. SQL traces are logged as FINE messages along with the module name to enable easy filtering of the sql logs. A sample SQL trace record would be like

[#|2009-11-27T15:46:52.202+0530|FINE|glassfishv3.0|javax.enterprise.resource.sqltrace.com.sun.gjc.util|_ThreadID=29;_ThreadName=Thread-1;ClassName=com.sun.gjc.util.SQLTraceLogger;MethodName=sqlTrace;|ThreadID=77 | ThreadName=p: thread-pool-1; w: 6 | TimeStamp=1259317012202 | ClassName=com.sun.gjc.spi.jdbc40.PreparedStatementWrapper40 | MethodName=executeUpdate | arg[0]=insert into table1(colName) values(100) | arg[1]=columnNames | |#]

Above trace shows that an executeUpdate(String sql, String[] columnNames) is being done.

4.1.5 Introspection of JDBC drivers

This is a GUI feature that will introspect any newly installed drivers and display the DataSource/Driver implementations. GlassFish displays a predefined list of drivers and its Datasource/Driver implementations. This feature helps the user to configure a pool for an arbitrary (not listed by default in GUI) jdbc driver. Using this feature, the arbitrary driver will be introspected to list the Datasource/Driver implementations during pool creation.

Based on the resource type and database vendor name chosen, the Administration console introspects the available jdbc driver and lists the implementation classname against the datasource/driver classname field. The classnames are listed in a drop-down list box.

The user can select an implementation classname to configure the connection pool whose properties would be listed in the additional properties section.

A default set of classnames for common database vendors are maintained for display in GUI. For uncommon databases, introspection happens to retrieve the classnames.

4.1.6 Flush Connection Pool

Flush connection pool is a feature that re-initializes all the connections in the pool without the need for reconfiguring the whole pool. This is a useful feature for administrators.

Flush connection pool will help to solve the issue by recreating the connections established in the pool and bringing the pool to the steady pool size. The existing "live" connections are killed/destroyed and any existing transactions are lost and must be retired. The main purpose of this command is to kill/destroy any aged or old connections in the pool.

Like ping-connection-pool, flush-connection-pool will be an admin CLI command to be executed whenever needed. A button Flush, similar to Ping will be available in Admin GUI for the same purpose.

4.1.7 Built in factories for Custom Resources

Custom-Resources aid to create various type of resources that can be shared across applications. Defining built-in object factories and resource template files will help the user to get access to most commonly used custom resources. Users can create custom-resources specifying these built-in factory-class-name and necessary properties. Following object factories will be provided in V3 (refer Packaging & Delivery section for the templates availability & usage).

JavaBeanFactory

  • Used to provide instances of specified JavaBean class. JavaBeanFactory will use the properties specified during the creation of custom-resource to configure the JavaBean instance.
  • eg: If the JavaBean has a method named setAccount, user can specify a property named "account" and a value while creating the custom-resource.
  • the JavaBean class has to be accessible for GlassFish instance. eg: GF_INSTALL_DIR/lib

PrimitivesAndStringFactory

  • Used to provide primitives to applications.
  • eg: If the application requires a 'double' of value 22.1, a custom-resource with PrimitivesAndStringFactory can be created with following properties
    • value="22.1"
  • valid values for --restype(resource-type) are int/integer/long/double/float/char/character/short/byte/boolean/string or their fully qualified wrapper class name equivalents.

URLFactory

  • Helps to provide URL instances to applications
  • eg: a custom-resource with URLFactory as factory can be created which will return a URL instance.
  • The URL is composed based on the properties specified.
  • Three constructors of URL is supported
    • URL (protocol, host, port, file)
    • URL (spec)
    • URL (protocol, host, file)
  • User should specify appropriate properties based on the type of constructor that need to be used.

PropertiesFactory

  • Helps to provide properties to applications.
  • User can specify properties file-location or a set of name-value pairs as property of custom-resource or both
  • file-location is specified via the property org.glassfish.resources.custom.factory.PropertiesFactory.fileName
    • If the file-location is relative, it will taken with reference to GlassFish installation location.
    • If the file-location is specified, it is necessary that administrator has provided security access permission for the file to GlassFish server.
    • User can specify properties file or an XML file. If an XML file (file-name ending with .xml) is specified it must match the DTD specified in the API definition of java.util.Properties
    • If both the file-location property and name-value pairs are specified, resulting properties will be the union and the name-value pairs will override the value of the properties, if any, in the file.

4.1.8 Associating multiple connections with a thread

NOTE : This feature is not implemented in v3

  • Proposal to support associating multiple connections with a thread to improve performance. This feature helps to reduce contention in the pool as it will be able to serve connections from the requesting thread.
  • A new attribute associate-with-thread-connections-count set to an int value represents the number of connections that should be associated with a single thread. The associate-with-thread attribute should be set to true for the new attribute to take effect. Default value of associate-with-thread-connections-count would be 1.

4.1.9 Switch off Pooling

Ease-of-use feature that would turn off connection pooling for the specified pool. The new attribute pooling when set to false will disable connection pooling for the specified pool.

By default, this attribute's value will be true. The existing system property 'com.sun.enterprise.connectors.SwitchoffACCConnectionPooling', that turns off connection pooling in ACC and the new attribute pooling do not affect each other.

Associate-with-thread functionality is invalid when pooling is disabled and hence an exception will be thrown if it is set to true. An exception will be thrown if Flush connection pool is done when pooling is disabled.

A warning will be logged when the following attributes are active as they are useful in pooled environment only :

  • connection-validation
  • validate-atmost-once-period
  • match-connections
  • max-connection-usage
  • idle-timeout

4.1.10 Default values of JDBC Connection Pool Attributes

The following attributes will undergo a change in their default values :

  • connection-validation-method "table"
    Since most drivers cache auto-commit and meta-data values, table based validation might prove to be more realistic. The validation-table-name will become a mandatory attribute if is-connection-validation-required is set to true. The connection validation settings will be moved to the Advanced pool settings. The user could set is-connection-validation-required in the Advanced tab after jdbc connection pool creation.

A list of table names would be displayed against the validation-table-name field for the user to choose a table to perform connection validation.

  • wrap-jdbc-objects "true"
    To enable getting wrapped JDBC objects for Statement, PreparedStatement, CallableStatement, ResultSet and DatabaseMetaData. GlassFish always provides a wrapped connection object to the application. It is necessary that Statement.getConnection() has to be the connection that was used to create the statement. (Statement.getConnection())

Since the statement objects are not wrapped by default, user will get access to the physical connection which may affect the pooling infrastructure. This can be prevented by setting wrap-jdbc-objects to
"true", hence making this as default behavior.

4.1.11 Ping Pool during creation

The connection pool will be automatically tested for valid connectivity, when it is created by setting a new attribute ping to true. This feature is useful to identify erroneous values, if any, specified in the jdbc connection pool configuration.

The existing pooling infrastructure does not warn the user of any unsupported/incorrect value of a database connectivity property while it is created. Only at runtime, the pool is initialized with the properties and attributes specified by the user and while getting a connection a warning would be seen.

Default value of ping is false which indicates that the pool will not be tested during creation. The existing "Ping" button in admin GUI and the "asadmin ping-connection-pool" command would exist and be supported in the future.

4.1.12 java.sql.Driver based pooling support

This is a proposal to support configuration of JDBC drivers and applications that use java.sql.Driver implementations.

The res-type attribute when set to java.sql.Driver enables the Driver manager based MCF. A new attribute driver-classname will take implementing driver class name as the value. driver-classname will be a mandatory attribute when the res-type is set to java.sql.Driver.

datasource-classname attribute will be an optional attribute when res-type is set to java.sql.Driver, whereas the driver-classname attribute will be mandatory.

4.1.13 Work Context Security mapping mechanism

JSR-322, Connector Specification introduces Security-Inflow-Context mechanism.
It is possible for a resource-adapter to request for mapping of identities from EIS domain to
application server domain. Application Servers can provide this functionality in a vendor specific
way. GlassFish will have WorkContextSecurityMap(s) configured for a resource-adapter using
CLI/GUI. Refer admin/config impact section for required commands and dtd changes.

4.1.14 Configuring runtime transaction-support-level of MCF

JSR-322 introduces a mechanism using which the transaction-level of MCF can be detected by the container
at runtime. During the configuration of MCF (connector-connection-pool), admin console (GUI) can
instantiate the MCF and show the level of transaction-support.
eg: There are 3 levels, no-tx, local-tx, xa-tx.
If an MCF returns local-tx as the level it can support, it is assumed that xa-tx is not supported and
hence admin console (GUI) will show no-tx and local-tx as the available tx-support levels.
This ease-of-use feature will be provided via admin console (GUI) only.

4.1.15 Application Scoped Resources

NOTE : This feature is not implemented in v3

  • A feature using which applications can be deployed with resource definitions specified within the archive.
  • Helps to achieve a single-click deployment ability for complex archives with various type of resource requirements
  • By being able to specify and hence process the resource definitions that are defined within the archive, this feature will avoid the need to redeploy the application archive that has embedded resource-adapters used by other modules within the archive.

Scope of resources

  • The resources are scoped to the applications that define them ie., they are available only to the applications that defines them.
  • With the introduction of scope for the resource, application is assured that a scoped resource is not used by other applications and be free from unexpected resource starvation or delay in acquiring connections.
  • These scoped resources cannot be referred or looked up by other applications.
  • If the resource definition is provided within an archive (ie., sun-resources.xml within an .ear or other archives), they are assumed to be scoped resources
  • Application scoped resources are specified in jndi-name using the following format :

java:app/jdbc/myDataSource. This is in accordance with the new naming scopes introduced in Java EE 6 Specification. Please refer Resources, Naming and Injection, sub-section JNDI Naming Context of Java EE 6 Specification for more details.

  • When an application looks up the resource by its name (jndi-name), naming manager will check whether the resource is scoped ie., resource-reference by jndi-name of the format java:app. If it is found it will be returned or else naming exception will be thrown. If the jndi-name does not have prefix (java:app), the resource is assumed to be global resource and looked for.
  • When an application tries to look up a scoped resource that does not belong to the application (defined in another application), naming exception will be thrown.
  • It is also possible to specify the global resource using java:global prefix (eg: java:global/jdbc/myDataSource which is equivalent to jdbc/myDataSource) in the jndi-name

sun-resources.xml

  • Resource definitions are specified via sun-resources.xml which should be a valid XML file that conforms to the sun-resources.dtd
  • When used with sun-resources.xml, it provides EOU functionality such that resources are created/destroyed during application deploy/undeploy.
  • All resources created using a sun-resources.xml within an application archive will be scoped.
  • sun-resources.xml should be placed in META-INF directory of the archive.
  • sun-resources.xml can be defined in each archive (sub-module) of an enteprise application (.ear).
    • During deployment of the archive, resource-definitions of all sun-resources.xml in an archive is merged and resources would be created for the merged set.
  • Scoping the resources also help to eliminate most of the conflicts of sun-resources.xml based applications against other applications or resources that already exist in the server.
  • Existing add-resources command uses sun-resources.xml. Resources created using add-resources are global ie., they are not specific to any application.
  • These resources can be reconfigured using admin CLI, GUI. Refer Admin/Config Impact section for more details.

Duplicates & Conflicts

  • Duplicate :
    • If there is a resource definition with same resource-name, resource-type, properties and attributes, it is assumed to be a duplicate.
  • Conflict :
    • A conflict occurs when two resource-definitions with different properties are made for the same resource-name and resource-type.
  • Duplicates & Conflicts can occur within an .ear with sub-modules providing resource-definitions.
  • Duplicates will be logged as WARNING messages and deployment will continue.
  • Conflict will result in deployment failure. Administrator will have to resolve the conflicts.

Deploy, re-deploy, undeploy

  • When an application is undeployed, by default its (scoped) resources will be deleted (--cascade=true).
  • During redeployment of the application, resources will be destroyed and created based on the new resource definition in the archive.

Supported application types

  • j2ee-application, ejb-module, web-module, connector-module, appclient-module
  • v3 represents all these applications via a generic <application> element
    • TODO : Need a criteria (sniffers list or engine list) using which the application types are restricted

Restriction on resource types in various application types

  • resource-adapter-config
    • ra-config can be specified for a connector-module and j2ee-application that has embedded .rar

Tooling support

  • IDEs (Netbeans & Eclipse plugins) can make use of this feature to generate application archives with resource definitions in the projects.

Monitoring & AMX Support

  • Application Scoped resources can be monitored using CLI and AMX.
  • Monitoring information can be displayed as :

server.<application-name>.resources.<resource-name>.*

4.2. Bug/RFE Number(s):

  1. CR 4749421 Change request to support statement caching.
  2. CR 6473767 Change request to support custom validation.
  3. CR 6294004 Change request to support Init SQL.
  4. IT 4124 Issue Tracker for Associate with multiple thread support.
  5. IT 4126 Issue Tracker to support driver manager based MCF.

4.3. In Scope:

  1. Statement caching will be based on the default caching mechanism Least Recently Used.
  2. Interfaces would be exposed by GlassFish for users to implement their own caching mechanisms, custom validators, init-sql functionalities. The implemented mechanisms should be made available to the application server.
  3. Switch Off Connection Pooling will be based on the same mechanism as that used for ACC based pools.

4.4. Out of Scope:

  1. Statement caching could be incrementally enhanced in the future releases by implementing other caching mechanisms.
  2. Statement caching feature could expose a public interface for the users to implement their own caching mechanisms in future releases.
  3. Auto-commit and meta-data based validations would still be supported.
  4. Incremental enhancement could be done for the introspection of the JDBC drivers in the future releases in case of the datasource properties to be introspected by the resource infrastructure automatically.

4.5. Interfaces:

4.5.1 Exported Interfaces

*Interface* *Stability* *Former Stability (if changing)* Comments
org.glassfish.resources.custom.factory.JavaBeanFactory NA   Specify bean property name and value as property of custom-resource
org.glassfish.resources.custom.factory.PropertiesFactory NA   org.glassfish.resources.custom.factory.PropertiesFactory.fileName need to be specified as a property of custom-resource, to indicate the properties file
org.glassfish.resources.custom.factory.PrimitiviesAndStringFactory NA   a property named value that needs to be set for the data-type specified in CLI/GUI --restype
org.glassfish.resources.custom.factory.URLFactory NA   protocol, host, port, file, spec are the properties that need to be set for the custom-resource, in accordance with the constructor of java.net.URL that need to be used.
org.glassfish.api.jdbc.ConnectionValidation Evolving   Custom validation public interface
org.glassfish.api.jdbc.SQLTraceListener Evolving   SQLTraceListener interface for custom sql tracing
org.glassfish.api.jdbc.SQLTraceRecord Evolving   SQLTraceRecord for format of sql trace records
sun-resources.dtd Evolving   sun-resources.xml dtd
  • Custom implementations for connection validation for common databases
    • org.glassfish.api.jdbc.DerbyConnectionValidation
    • org.glassfish.api.jdbc.MySQLConnectionValidation
    • org.glassfish.api.jdbc.PostgresConnectionValidation
    • org.glassfish.api.jdbc.OracleConnectionValidation
  • Inbuilt connection validation implementation for JDBC 4.0 compliant drivers
    • org.glassfish.api.jdbc.JDBC40ConnectionValidation

All of the above implement org.glassfish.api.jdbc.ConnectionValidation interface.

4.5.2 Imported interfaces

4.5.3 Other interfaces (Optional)

4.6. Doc Impact:

  1. Administration Guide
  2. Developer's Guide
  3. Administration Reference Guide
  4. Admin GUI online help
  5. Admin CLI help
  6. Performance Tuning Guide

4.7. Admin/Config Impact:

CLI support :

  • CLI support for new / changed attributes of jdbc-connection-pool & connector-connection-pool is needed. Refer config impact section for the new / changed attributues.
  • A new command flush-connection-pool can be provided
    flush-connection-pool [--terse={true|false}] 
    [--echo={true|false}] [--interactive={true|false}] [--host host] [--port port] 
    [--secure | -s] [--user admin_user] [--passwordfile filename] 
    [--help] pool_name
  • connector work security map can be created, deleted, listed, updated using the following set of new commands
create-connector-work-security-map --raname resource_adapter_name
  --principalsmap eis-principal=server-principal[,eis-principal=server-principal]*
  --groupsmap eis-group=server-group[,eis-group=server-group]*
  [--terse=false] [--echo=false] [--interactive=true] [--host localhost] [--port 4848|4849]
  [--secure | -s] [--user admin_user] [--passwordfile file_name] mapname

delete-connector-work-security-map --raname resource_adapter_name [--terse=false] [--echo=false]
  [--interactive=true] [--host localhost] [--port 4848|4849] [--secure | -s] [--user admin_user]
  [--passwordfile file_name] mapname

list-connector-work-security-map [--terse=false] [--echo=false] [--interactive=true]
  [--host localhost] [--port 4848|4849] [--secure | -s] [--user admin_user]
  [--passwordfile file_name] [--securitymap mapname] [--verbose=false] resource-adapter-name

update-connector-work-security-map --raname resource_adapter_name  [--terse=false] [--echo=false]
  [--interactive=true] [--host localhost] [--port 4848|4849] [--secure | -s] [--user admin_user]
  [--passwordfile file_name]
  [--addprincipals eis-principal=server-principal[,eis-principal=server-principal]*]
  [--addgroups eis-group=server-group[,eis-group=server-group]*]
  [--removeprincipals eis-principal[,eis-principal]*]
  [--removegroups eis-group[,eis-group]*]  mapname
  • Application scoped resources :
    • deploy command when used for redeploy deploy -force=true can to have a new flag -cascade-resources to destroy and create resources in accordance with the modified sun-resources.xml (if any) in the application
      deploy [--force=true] [--cascade-resources=true] myApp.ear
    • scoped resources can be displayed using the following CLI
list-resources [--app-name application-name] 

    eg: 
    list-resources myApp
    resource1 <jdbc-resource>
    resource2 <mail-resource>
    resource3 <jdbc-resource>
    resource4 <custom-resource>
      • --app-name is optional, when not specified, will display all the global resources.
      • when "' is specified as *--app-name, all scoped resources ie., resources of all applications will be displayed
    • Existing list-XXX-resources/list-XXX-connection-pools can take a flag --app-name to display resources of the application.
      list-jdbc-resources [--app-name application-name]
      
          eg:
          list-jdbc-resources --app-name myApp
          resource1 
          resource3
      
          list-jdbc-resources --app-name "*"
      
          resource1 <app-1>
          resource2 <app-2>
  • Built-in custom-resources support :
    • -restype of CLI can be used to automatically select the -factoryclassname if unspecified by the user.
      • eg: if -restype is any of the primitives or string (eg; int, long, java.lang.String, java.lang.Double etc) CLI can default the -factoryclassname as org.glassfish.resources.custom.factory.PrimitivesAndStringFactory
      • Also, if --restype class is a JavaBean (by checking a typical JavaBean characteristics), org.glassfish.resources.custom.factory.JavaBeanFactory can be chosen.
      • For unknown -restype, CLI will behave similar to v2, ie., -factoryclassname is mandatory.
  • Admin-Object-Resource support :
    • With the introduction of admin-object-uniqueness in Connector 1.6 specification, create-admin-object CLI needs an optional parameter -classname so as to determine appropriate admin-object defined in ra.xml. classname represents the admin-object implementation class. This parameter is a must only when there is more than one admin-object for a particular admin-object-type (-restype) is defined in ra.xml

GUI support :

  • In GUI, the new attributes are available in the Advanced or General tabs. The user can edit values from admin GUI.
  • New button in admin GUI for a JDBC Connection pool Flush will be added in effect for the new feature Flush connection pool.
  • Connector-Work-Security-Map can be created using GUI, should be similar to Connector-Security-Map for Connector-Connection-pools
  • Support for introspection of JDBC drivers.
  • Provision to display application scoped resource within applications node.
  • Provision to display monitoring information of scoped resources
  • Connection Validation settings will be moved to the Advanced Jdbc connection pool settings page.
  • For custom-resources, in addition to the current behavior (editable fields for Resource Type and Factory Class) GUI can display the built-in resources list.
    • ie., show a built-in set of Resource Type values and when any of the built-in value is chosen, select the appropriate built-in Factory Class automatically. User is also allowed to change the values (editable field) in case user has implementation of Factory class of his own.
    • GUI can also list the required properties for built-in Factory Class. Refer the feature description for more details.
  • Admin Object Resource Support :
    • Refer Admin Object Resource Support section in the CLI Support for details.

Config Impact

  • DTD changes for JDBC Connection Pool.
  • DTD changes for Connector Connection Pool.
  • DTD changes for Connector-Work-Security-Map.
  • DTD changes for sun-resources.xml.
  • DTD changes for Admin-Object-Resource.

4.8. HA Impact:

None.

4.9. I18N/L10N Impact:

None.

4.10. Packaging & Delivery:

Templates for custom resource factories

  • Template for all the proposed factories will be provided with sample configurations in GlassFish.
  • Using "asadmin> add-resources <resource-template-file>" command, custom resources can be created.
  • Proposed templates will be available at GF_INSTALL_ROOT/lib/install/templates/resources/custom

4.11. Security Impact:

  • Custom implementations provided by the users for the exposed interfaces viz.,
    • org.glassfish.api.jdbc.ConnectionValidation
    • org.glassfish.api.jdbc.SQLTraceListener

need to be accessible (java permission, if needed) by the application server.

4.12. Compatibility Impact

  • connection-validation-type default has changed from auto-commit to table. table mode of validation mandates the attribute validation-table-name. auto-commit is still supported for backward compatibility. No new support is needed from migration tool/upgrade tool as long as they port the configuration values from older version of GlassFish to GlassFish v3.
  • Default value of wrap-jdbc-objects is changed from false to true to be JDBC specification compliant. No new support is needed from migration tool/upgrade tool as long as they port the configuration values from older version of GlassFish to GlassFish v3.

These changes will be documented.

4.13. Dependencies:

5. Reference Documents:

  1. JSR 322 - Java EE Connector Architecture 1.6 Specification
  2. JSR 322 - Reference Implementation - Half Pager
  3. JSR 316 - Java EE 6 Specification

6. Schedule:

6.1. Projected Availability:

Aligned to overall GlassFish V3 Final release schedules.