public class org.springframework.remoting.rmi.JndiRmiServiceExporter extends org.springframework.remoting.rmi.RmiBasedExporter implements org.springframework.beans.factory.InitializingBean, org.springframework.beans.factory.DisposableBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.remoting.rmi.JndiRmiServiceExporter
  super_class: org.springframework.remoting.rmi.RmiBasedExporter
{
  private static java.lang.reflect.Method exportObject;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private static java.lang.reflect.Method unexportObject;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private org.springframework.jndi.JndiTemplate jndiTemplate;
    descriptor: Lorg/springframework/jndi/JndiTemplate;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String jndiName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.rmi.Remote exportedObject;
    descriptor: Ljava/rmi/Remote;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=1, args_size=0
         0: .line 81
            ldc Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            ldc "javax.rmi.PortableRemoteObject"
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
         1: .line 80
            astore 0 /* portableRemoteObject */
        start local 0 // java.lang.Class portableRemoteObject
         2: .line 82
            aload 0 /* portableRemoteObject */
            ldc "exportObject"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/rmi/Remote;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            putstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.exportObject:Ljava/lang/reflect/Method;
         3: .line 83
            aload 0 /* portableRemoteObject */
            ldc "unexportObject"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/rmi/Remote;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            putstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.unexportObject:Ljava/lang/reflect/Method;
        end local 0 // java.lang.Class portableRemoteObject
         4: .line 84
            goto 8
         5: .line 85
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
         6: .line 87
            aconst_null
            putstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.exportObject:Ljava/lang/reflect/Method;
         7: .line 88
            aconst_null
            putstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.unexportObject:Ljava/lang/reflect/Method;
         8: .line 90
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            2    4     0  portableRemoteObject  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           0     4       5  Class java.lang.Throwable

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
         0: .line 70
            aload 0 /* this */
            invokespecial org.springframework.remoting.rmi.RmiBasedExporter.<init>:()V
         1: .line 93
            aload 0 /* this */
            new org.springframework.jndi.JndiTemplate
            dup
            invokespecial org.springframework.jndi.JndiTemplate.<init>:()V
            putfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiTemplate:Lorg/springframework/jndi/JndiTemplate;
         2: .line 70
            return
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;

  public void setJndiTemplate(org.springframework.jndi.JndiTemplate);
    descriptor: (Lorg/springframework/jndi/JndiTemplate;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
        start local 1 // org.springframework.jndi.JndiTemplate jndiTemplate
         0: .line 106
            aload 0 /* this */
            aload 1 /* jndiTemplate */
            ifnull 1
            aload 1 /* jndiTemplate */
            goto 2
      StackMap locals:
      StackMap stack: org.springframework.remoting.rmi.JndiRmiServiceExporter
         1: new org.springframework.jndi.JndiTemplate
            dup
            invokespecial org.springframework.jndi.JndiTemplate.<init>:()V
      StackMap locals: org.springframework.remoting.rmi.JndiRmiServiceExporter org.springframework.jndi.JndiTemplate
      StackMap stack: org.springframework.remoting.rmi.JndiRmiServiceExporter org.springframework.jndi.JndiTemplate
         2: putfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiTemplate:Lorg/springframework/jndi/JndiTemplate;
         3: .line 107
            return
        end local 1 // org.springframework.jndi.JndiTemplate jndiTemplate
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
            0    4     1  jndiTemplate  Lorg/springframework/jndi/JndiTemplate;
    MethodParameters:
              Name  Flags
      jndiTemplate  

  public void setJndiEnvironment(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
        start local 1 // java.util.Properties jndiEnvironment
         0: .line 115
            aload 0 /* this */
            new org.springframework.jndi.JndiTemplate
            dup
            aload 1 /* jndiEnvironment */
            invokespecial org.springframework.jndi.JndiTemplate.<init>:(Ljava/util/Properties;)V
            putfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiTemplate:Lorg/springframework/jndi/JndiTemplate;
         1: .line 116
            return
        end local 1 // java.util.Properties jndiEnvironment
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
            0    2     1  jndiEnvironment  Ljava/util/Properties;
    MethodParameters:
                 Name  Flags
      jndiEnvironment  

  public void setJndiName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
        start local 1 // java.lang.String jndiName
         0: .line 122
            aload 0 /* this */
            aload 1 /* jndiName */
            putfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
         1: .line 123
            return
        end local 1 // java.lang.String jndiName
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
            0    2     1  jndiName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      jndiName  

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
         0: .line 128
            aload 0 /* this */
            invokevirtual org.springframework.remoting.rmi.JndiRmiServiceExporter.prepare:()V
         1: .line 129
            return
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
    Exceptions:
      throws javax.naming.NamingException, java.rmi.RemoteException

  public void prepare();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
         0: .line 137
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
            ifnonnull 2
         1: .line 138
            new java.lang.IllegalArgumentException
            dup
            ldc "Property 'jndiName' is required"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.springframework.remoting.rmi.JndiRmiServiceExporter.getObjectToExport:()Ljava/rmi/Remote;
            putfield org.springframework.remoting.rmi.JndiRmiServiceExporter.exportedObject:Ljava/rmi/Remote;
         3: .line 143
            aload 0 /* this */
            getstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.exportObject:Ljava/lang/reflect/Method;
            invokevirtual org.springframework.remoting.rmi.JndiRmiServiceExporter.invokePortableRemoteObject:(Ljava/lang/reflect/Method;)V
         4: .line 145
            aload 0 /* this */
            invokevirtual org.springframework.remoting.rmi.JndiRmiServiceExporter.rebind:()V
         5: .line 146
            return
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
    Exceptions:
      throws javax.naming.NamingException, java.rmi.RemoteException

  public void rebind();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
         0: .line 154
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 155
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Binding RMI service to JNDI location ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            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.debug:(Ljava/lang/Object;)V
         2: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiTemplate:Lorg/springframework/jndi/JndiTemplate;
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.exportedObject:Ljava/rmi/Remote;
            invokevirtual org.springframework.jndi.JndiTemplate.rebind:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 158
            return
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
    Exceptions:
      throws javax.naming.NamingException

  public void destroy();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
         0: .line 165
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 2
         1: .line 166
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Unbinding RMI service from JNDI location ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            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.debug:(Ljava/lang/Object;)V
         2: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiTemplate:Lorg/springframework/jndi/JndiTemplate;
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.jndiName:Ljava/lang/String;
            invokevirtual org.springframework.jndi.JndiTemplate.unbind:(Ljava/lang/String;)V
         3: .line 169
            aload 0 /* this */
            getstatic org.springframework.remoting.rmi.JndiRmiServiceExporter.unexportObject:Ljava/lang/reflect/Method;
            invokevirtual org.springframework.remoting.rmi.JndiRmiServiceExporter.invokePortableRemoteObject:(Ljava/lang/reflect/Method;)V
         4: .line 170
            return
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
    Exceptions:
      throws javax.naming.NamingException, java.rmi.RemoteException

  private void invokePortableRemoteObject(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
        start local 1 // java.lang.reflect.Method method
         0: .line 174
            aload 1 /* method */
            ifnull 11
         1: .line 176
            aload 1 /* method */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.springframework.remoting.rmi.JndiRmiServiceExporter.exportedObject:Ljava/rmi/Remote;
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 177
            goto 11
         3: .line 178
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 2 /* ex */
        start local 2 // java.lang.reflect.InvocationTargetException ex
         4: .line 179
            aload 2 /* ex */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            astore 3 /* targetEx */
        start local 3 // java.lang.Throwable targetEx
         5: .line 180
            aload 3 /* targetEx */
            instanceof java.rmi.RemoteException
            ifeq 7
         6: .line 181
            aload 3 /* targetEx */
            checkcast java.rmi.RemoteException
            athrow
         7: .line 183
      StackMap locals: java.lang.reflect.InvocationTargetException java.lang.Throwable
      StackMap stack:
            aload 3 /* targetEx */
            invokestatic org.springframework.util.ReflectionUtils.rethrowRuntimeException:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable targetEx
        end local 2 // java.lang.reflect.InvocationTargetException ex
         8: goto 11
         9: .line 185
      StackMap locals: org.springframework.remoting.rmi.JndiRmiServiceExporter java.lang.reflect.Method
      StackMap stack: java.lang.Throwable
            astore 2 /* ex */
        start local 2 // java.lang.Throwable ex
        10: .line 186
            new java.lang.IllegalStateException
            dup
            ldc "PortableRemoteObject invocation failed"
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Throwable ex
        11: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.remoting.rmi.JndiRmiServiceExporter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/springframework/remoting/rmi/JndiRmiServiceExporter;
            0   12     1    method  Ljava/lang/reflect/Method;
            4    8     2        ex  Ljava/lang/reflect/InvocationTargetException;
            5    8     3  targetEx  Ljava/lang/Throwable;
           10   11     2        ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.reflect.InvocationTargetException
           1     2       9  Class java.lang.Throwable
    Exceptions:
      throws java.rmi.RemoteException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
        Name  Flags
      method  
}
SourceFile: "JndiRmiServiceExporter.java"