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;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
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:
iconst_0
istore 1
start local 1 3: invokestatic java.lang.System.currentTimeMillis:()J
lstore 2
start local 2 4: 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 5: aconst_null
astore 6
start local 6 6: goto 44
7: StackMap locals: org.springframework.jdbc.support.DatabaseStartupValidator int long long java.sql.SQLException
StackMap stack:
aconst_null
astore 7
start local 7 8: aconst_null
astore 8
start local 8 9: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.dataSource:Ljavax/sql/DataSource;
invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
astore 7
10: aload 7
ifnonnull 14
11: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
new java.lang.StringBuilder
dup
ldc "Failed to execute validation: DataSource returned null from getConnection(): "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
12: 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;
13: invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: java.sql.Connection java.sql.Statement
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
ifnonnull 17
15: aload 7
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
invokeinterface java.sql.Connection.isValid:(I)Z
istore 1
16: goto 40
17: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
astore 8
18: aload 8
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
invokeinterface java.sql.Statement.execute:(Ljava/lang/String;)Z
pop
19: iconst_1
istore 1
20: goto 40
21: StackMap locals:
StackMap stack: java.sql.SQLException
astore 9
start local 9 22: aload 9
astore 6
23: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
ifeq 28
24: aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.validationQuery:Ljava/lang/String;
ifnull 27
25: 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
26: goto 28
27: StackMap locals: java.sql.SQLException
StackMap stack:
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.logger:Lorg/apache/commons/logging/Log;
ldc "Validation check threw exception"
aload 9
invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
28: 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 34
29: lload 4
invokestatic java.lang.System.currentTimeMillis:()J
lsub
l2f
ldc 1000.0
fdiv
fstore 10
start local 10 30: fload 10
aload 0
getfield org.springframework.jdbc.support.DatabaseStartupValidator.interval:I
i2f
fcmpl
ifle 34
31: 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;
32: 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;
33: invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
end local 10 end local 9 34: StackMap locals:
StackMap stack:
aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
35: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
goto 42
36: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
37: aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
38: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
39: aload 11
athrow
40: StackMap locals:
StackMap stack:
aload 8
invokestatic org.springframework.jdbc.support.JdbcUtils.closeStatement:(Ljava/sql/Statement;)V
41: aload 7
invokestatic org.springframework.jdbc.support.JdbcUtils.closeConnection:(Ljava/sql/Connection;)V
42: StackMap locals:
StackMap stack:
iload 1
ifne 44
43: 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 44: StackMap locals:
StackMap stack:
iload 1
ifne 45
invokestatic java.lang.System.currentTimeMillis:()J
lload 4
lcmp
iflt 7
45: StackMap locals:
StackMap stack:
iload 1
ifne 49
46: new org.springframework.jdbc.CannotGetJdbcConnectionException
dup
47: 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
48: invokespecial org.springframework.jdbc.CannotGetJdbcConnectionException.<init>:(Ljava/lang/String;Ljava/sql/SQLException;)V
athrow
49: 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 55
50: invokestatic java.lang.System.currentTimeMillis:()J
lload 2
lsub
l2f
ldc 1000.0
fdiv
fstore 7
start local 7 51: 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 52: goto 55
53: StackMap locals: org.springframework.jdbc.support.DatabaseStartupValidator
StackMap stack: java.lang.InterruptedException
pop
54: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
55: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lorg/springframework/jdbc/support/DatabaseStartupValidator;
3 52 1 validated Z
4 52 2 beginTime J
5 52 4 deadLine J
6 52 6 latestEx Ljava/sql/SQLException;
8 44 7 con Ljava/sql/Connection;
9 44 8 stmt Ljava/sql/Statement;
22 34 9 ex Ljava/sql/SQLException;
30 34 10 rest F
51 52 7 duration F
Exception table:
from to target type
9 20 21 Class java.sql.SQLException
9 34 36 any
2 52 53 Class java.lang.InterruptedException
}
SourceFile: "DatabaseStartupValidator.java"