import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.security.Provider;
import java.util.Collections;
import java.util.Map;
import java.util.WeakHashMap;
import com.vordel.trace.Trace;

final class Init {
    static {
        try {
            Trace.info("Patching java crypto JCE provider");
            Map<Provider, Object> map = Collections.synchronizedMap(new WeakHashMap<>());

            Class cl = Class.forName("javax.crypto.JceSecurity");
            Field field = cl.getDeclaredField("verificationResults");
            field.setAccessible(true);

            Field modifiersField = Field.class.getDeclaredField( "modifiers" );
            modifiersField.setAccessible( true );
            modifiersField.setInt( field, field.getModifiers() & ~Modifier.FINAL );

            Map<Provider, Object> verificationResults = (Map<Provider, Object>) field.get(null);
            map.putAll(verificationResults);
            field.set(null, map);
        } catch (final Throwable e) {
            Trace.fatal(e);
        }
    }
}

Init a = new Init();

def invoke(msg)
{
       for (int i = 0; i < 1000; i++) {
            com.sun.crypto.provider.SunJCE jceProvider = new com.sun.crypto.provider.SunJCE();
            javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES", jceProvider);
       } 
	return true;
}
