public class org.springframework.jdbc.support.DatabaseStartupValidator implements org.springframework.beans.factory.InitializingBean
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.jdbc.support.DatabaseStartupValidator
super_class: java.lang.Object
{
public static final int DEFAULT_INTERVAL;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 1
public static final int DEFAULT_TIMEOUT;
descriptor: I
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 60
protected final org.apache.commons.logging.Log logger;
descriptor: Lorg/apache/commons/logging/Log;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
private javax.sql.DataSource dataSource;
descriptor: Ljavax/sql/DataSource;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
private java.lang.String validationQuery;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
private int interval;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int timeout;
descriptor: I
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
putfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
2: aload 0
iconst_1
putfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
3: aload 0
bipush 60
putfield org.springframework.jdbc.support.DatabaseStartupValidator.timeout:I
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
public void setDataSource(javax.sql.DataSource);
descriptor: (Ljavax/sql/DataSource;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.springframework.jdbc.support.DatabaseStartupValidator.dataSource:Ljavax/sql/DataSource;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
0 2 1 dataSource Ljavax/sql/DataSource;
MethodParameters:
Name Flags
dataSource
public void setValidationQuery(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
0 2 1 validationQuery Ljava/lang/String;
MethodParameters:
Name Flags
validationQuery
public void setInterval(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
0 2 1 interval I
MethodParameters:
Name Flags
interval
public void setTimeout(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield org.springframework.jdbc.support.DatabaseStartupValidator.timeout:I
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
0 2 1 timeout I
MethodParameters:
Name Flags
timeout
public void afterPropertiesSet();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=1
start local 0 0: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.dataSource:Ljavax/sql/DataSource;
ifnonnull 2
1: new java.lang.IllegalArgumentException
dup
ldc "Property 'dataSource' is required"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
ifnonnull 4
3: new java.lang.IllegalArgumentException
dup
ldc "Property 'validationQuery' is required"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iconst_0
istore 1
start local 1 5: invokestatic java.lang.System.currentTimeMillis:()J
lstore 2
start local 2 6: lload 2
getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.timeout:I
i2l
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
ladd
lstore 4
start local 4 7: aconst_null
astore 6
start local 6 8: goto 40
9: StackMap locals: org.springframework.jdbc.support.DatabaseStartupValidator int long long java.sql.SQLException
StackMap stack:
aconst_null
astore 7
start local 7 10: aconst_null
astore 8
start local 8 11: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.dataSource:Ljavax/sql/DataSource;
invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
astore 7
12: aload 7
ifnonnull 16
13: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
new java.lang.StringBuilder
dup
ldc "Failed to execute validation query: DataSource returned null from getConnection(): "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.dataSource:Ljavax/sql/DataSource;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals: java.sql.Connection java.sql.Statement
StackMap stack:
aload 7
invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
astore 8
17: aload 8
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
18: iconst_1
istore 1
19: goto 36
20: StackMap locals:
StackMap stack: java.sql.SQLException
astore 9
start local 9 21: aload 9
astore 6
22: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 24
23: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Validation query ["
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "] threw exception"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 9
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
24: StackMap locals: java.sql.SQLException
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isInfoEnabled:()Z
ifeq 30
25: lload 4
invokestatic java.lang.System.currentTimeMillis:()J
lsub
l2f
ldc 1000.0
fdiv
fstore 10
start local 10 26: fload 10
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
i2f
fcmpl
ifle 30
27: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Database has not started up yet - retrying in "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
28: ldc " seconds (timeout in "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
fload 10
invokevirtual java.lang.StringBuilder.append:(F)Ljava/lang/StringBuilder;
ldc " seconds)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
end local 10 end local 9 30: StackMap locals:
StackMap stack:
aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
31: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
goto 38
32: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
33: aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
34: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
35: aload 11
athrow
36: StackMap locals:
StackMap stack:
aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
37: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
38: StackMap locals:
StackMap stack:
iload 1
ifne 40
39: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
i2l
invokevirtual java.util.concurrent.TimeUnit.sleep:(J)V
end local 8 end local 7 40: StackMap locals:
StackMap stack:
iload 1
ifne 41
invokestatic java.lang.System.currentTimeMillis:()J
lload 4
lcmp
iflt 9
41: StackMap locals:
StackMap stack:
iload 1
ifne 45
42: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
43: new java.lang.StringBuilder
dup
ldc "Database has not started up within "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.timeout:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " seconds"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 6
44: invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;Ljava/sql/SQLException;)V
athrow
45: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isInfoEnabled:()Z
ifeq 51
46: invokestatic java.lang.System.currentTimeMillis:()J
lload 2
lsub
l2f
ldc 1000.0
fdiv
fstore 7
start local 7 47: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
new java.lang.StringBuilder
dup
ldc "Database startup detected after "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
fload 7
invokevirtual java.lang.StringBuilder.append:(F)Ljava/lang/StringBuilder;
ldc " seconds"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
end local 7 end local 6 end local 4 end local 2 end local 1 48: goto 51
49: StackMap locals: org.springframework.jdbc.support.DatabaseStartupValidator
StackMap stack: java.lang.InterruptedException
pop
50: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
51: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
5 48 1 validated Z
6 48 2 beginTime J
7 48 4 deadLine J
8 48 6 latestEx Ljava/sql/SQLException;
10 40 7 con Ljava/sql/Connection;
11 40 8 stmt Ljava/sql/Statement;
21 30 9 ex Ljava/sql/SQLException;
26 30 10 rest F
47 48 7 duration F
Exception table:
from to target type
11 19 20 Class java.sql.SQLException
11 30 32 any
4 48 49 Class java.lang.InterruptedException
}
SourceFile: "DatabaseStartupValidator.java"