vgritsenko 2002/06/18 20:21:59 Modified: src/java/org/apache/cocoon/transformation Tag: cocoon_2_0_3_branch SQLTransformer.java Log: Fix bug 6934 Revision Changes Path No revision No revision 1.10.2.1 +36 -10 xml-cocoon2/src/java/org/apache/cocoon/transformation/SQLTransformer.java Index: SQLTransformer.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/transformation/SQLTransformer.java,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -r1.10 -r1.10.2.1 --- SQLTransformer.java 8 Apr 2002 12:47:50 -0000 1.10 +++ SQLTransformer.java 19 Jun 2002 03:21:59 -0000 1.10.2.1 @@ -139,6 +139,23 @@ protected static final int STATE_INSIDE_OUT_PARAMETER_ELEMENT = 7; protected static final int STATE_INSIDE_ESCAPE_STRING = 8; + // + // Configuration + // + + /** Is the old-driver turned on? (default is off) */ + private boolean oldDriver = false; + + /** How many connection attempts to do? (default is 5 times) */ + private int connectAttempts = 5; + + /** How long wait between connection attempts? (default is 5000 ms) */ + private int connectWaittime = 5; + + // + // State + // + /** The list of queries that we're currently working on **/ protected Vector queries; @@ -151,9 +168,6 @@ /** Check if nr of rows need to be written out. **/ protected boolean showNrOfRows; - /** Is the old-driver turned on? (default is off) */ - private boolean oldDriver = false; - /** Namespace prefix to output */ protected String outPrefix; @@ -220,7 +234,9 @@ * dispose */ public void dispose() { - if ( this.dbSelector != null ) this.manager.release( (Component) this.dbSelector ); + if ( this.dbSelector != null ) { + this.manager.release( (Component) this.dbSelector ); + } } /** @@ -229,11 +245,13 @@ public void configure( Configuration conf ) throws ConfigurationException { super.configure( conf ); if ( conf != null ) { - Configuration child = conf.getChild( "old-driver" ); - this.oldDriver = child.getValueAsBoolean( false ); + this.oldDriver = conf.getChild( "old-driver" ).getValueAsBoolean( false ); if (this.getLogger().isDebugEnabled()) { this.getLogger().debug( "old-driver is " + this.oldDriver + " for " + this ); } + + this.connectAttempts = conf.getChild("connect-attempts").getValueAsInteger(5); + this.connectWaittime = conf.getChild("connect-waittime").getValueAsInteger(5000); } } @@ -994,12 +1012,14 @@ try { datasource = (DataSourceComponent) this.transformer.dbSelector.select( connection ); - while ( result == null ) { + for ( int i = 0; i < transformer.connectAttempts && result == null; i++) { try { result = datasource.getConnection(); } catch ( Exception e ) { - final long waittime = 5000; - getTheLogger().debug( "SQLTransformer$Query: could not acquire a Connection -- waiting " + waittime + " ms to try again." ); + final long waittime = transformer.connectWaittime; + transformer.getTheLogger().debug( + "SQLTransformer$Query: could not acquire a Connection -- waiting " + + waittime + " ms to try again." ); try { Thread.sleep( waittime ); } catch ( InterruptedException ie ) { @@ -1010,6 +1030,12 @@ transformer.getTheLogger().error( "Could not use connection: " + connection, cme ); } finally { if ( datasource != null ) this.transformer.dbSelector.release( datasource ); + } + + if (result == null) { + throw new SQLException("Failed to obtain connection. Made " + + transformer.connectAttempts + " attempts with " + + transformer.connectWaittime + "ms interval"); } } } else {
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]