changed proxy creation for local apps to subclass proxies to avoid instanceof errors (like in the tests)

This commit is contained in:
Martin Lippert
2018-08-23 11:24:27 +02:00
parent bff10fa51a
commit f66d8352f4
3 changed files with 6 additions and 14 deletions

View File

@@ -22,9 +22,6 @@ import com.google.common.collect.ImmutableMap;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
public class LocalSpringBootAppCache {
private static final Duration EXPIRE_AFTER = Duration.ofMillis(500); //Limits rate at which we refresh list of apps
@@ -48,10 +45,8 @@ public class LocalSpringBootAppCache {
newAppsBuilder.put(vm, existingApp);
} else {
try {
LocalSpringBootApp localApp = new LocalSpringBootApp(vm);
MethodInterceptor handler = new MemoizingProxy.MemoizingProxyHandler(localApp, Duration.ofMillis(4500));
SpringBootApp proxiedLocalApp = (SpringBootApp) Enhancer.create(SpringBootApp.class, handler);
newAppsBuilder.put(vm, proxiedLocalApp);
LocalSpringBootApp localApp = MemoizingProxy.create(LocalSpringBootApp.class, Duration.ofMillis(4500), new Class[] {VirtualMachineDescriptor.class}, vm);
newAppsBuilder.put(vm, localApp);
} catch (Exception e) {
//Ignore problems attaching to a VM. We will try again on next polling loop, if vm still exists.
//The most likely cause is that the VM already died since we obtained a reference to it.

View File

@@ -99,7 +99,7 @@ public class RemoteSpringBootApp extends AbstractSpringBootApp {
}
public static SpringBootApp create(String jmxUrl, String host) {
return MemoizingProxy.create(RemoteSpringBootApp.class, Duration.ofMillis(4900), jmxUrl, host);
return MemoizingProxy.create(RemoteSpringBootApp.class, Duration.ofMillis(4900), new Class[] {String.class, String.class}, jmxUrl, host);
}
}