These comments are based on the text of
http://wiki.glassfish.java.net/Wiki.jsp?page=GFV3JDBCOnePager&version=72... which appears to be what the text of the document refers to as revision 3....
1. Please include a link from the revision history that is in the document with revision history that is kept by the wiki...
2. It would be nice to see a link to something for features that are being added to achieve feature parity with other servers...
3. You have defined a number of dependencies between attribute values in this spec that may be handled a bit better if they were converted to be elements and sub-elements.
Comments and question by 'section'
Section 4.1.1
Why have the cache size set to zero by default? Would it make sense to have a 'small' cache by default? Is the search overhead that significant compared to the savings?
Is the cache shared across the whole server or is it set on a 'per-pool' basis? You discuss an attribute, statement-cache-size, but don't say what object(s) where it is applicable... A link to the dtd changes doc may be a good idea here... (though the name of the attribute here does not match any name in
http://wiki.glassfish.java.net/Wiki.jsp?page=GFV3JDBCOnePager_DTDChanges&version=9
Is there a way to change the caching strategy in this release or will that be available in the future?
Section 4.1.2
Validator is not a word (
http://www.merriam-webster.com/dictionary/validator). You may want to change 'custom-validator' and 'validator-class-name' to something that is a based on real words.
custom-validator could be 'user-defined', 'custom-validation', etc.
validator-class-name could be 'validation-class-name', 'inspector-class-name', etc.
Why not extend the connection-validation-method attribute to accept the name of a custom validation class and eliminate the need to have two attributes (connection-validation-method and validator-class-name)?
The last paragraph of the section is too ambiguous. I think it says that 'something' will set the value of connection-validation-method to a value custom-validator and set the validator-class-name to some value automatically, if the database is a 'common database'...
Is there a list of 'common databases' or a table that maps the name of a 'common database' to the name of a validator-class-name?
You may want to consider making the connection validation a sub-element of jdbc-connection-pool. It will be hard to have an object that implements ConnectionValidator that has any parameters to it constructor... While objects with zero parameter constructors can be quite useful, the ability to have parameters passed to the constructor might make writing the validation routine a bit easier... just a thought...
Section 4.1.3
What happens if the SQL is not valid (like a syntax error)? What happens if the SQL causes an error in the DB?
The description in this section appears to disagree with the text in
http://wiki.glassfish.java.net/Wiki.jsp?page=GFV3JDBCOnePager_DTDChanges and should be clarified.
The discussion of constructors in my notes about section 4.1.2 probably apply to this list of sql-trace-listeners, too.
Section 4.1.4
Does not exist...
Section 4.1.5
Why only a GUI feature? I would think the ability to find out this data would be useful for someone using the CLI to create a jdbc-connection-pool...
Will the driver be detected BEFORE the server is restarted or AFTER the server is restarted?
I also noticed that this feature wasn't listed in the 'GUI Support' subsection of section 4.7.
Section 4.1.6, 4.1.7, 4.1.8
no comment.
Section 4.1.9
The name of the attribute is clumsy... It is easy to assume that a pool (noun) will pool (verb) by default, so why bot just use a boolean attribute 'disabled', with a default of false.
What is the difference between a pool that is switched off and a pool that has a max-pool-size of 1?
What happens if the exception is thrown? Does the user see a warning in their log? Do their attempts to connect fail? Does the server just refuse to start?
Section 4.1.10
no comment
Section 4.1.11
The attribute name is clumsy... why not just use ping or ping-during-creation?
What is the semantics of the ping failing?
What does 'creation' mean in this context:
1. when the server starts?
2. when the first connection is made?
3. when the jdbc-connection-pool element is added to domain.xml?
If it is #3, would it be better to just add a new command-line operator, like --ping?
I will have some more comments later.
vbk
[Message sent by forum member 'vbkraemer' (vbkraemer)]
http://forums.java.net/jive/thread.jspa?messageID=325102