diff --git a/storage/pom.xml b/storage/pom.xml
index 79a241f7..7245ff09 100644
--- a/storage/pom.xml
+++ b/storage/pom.xml
@@ -122,6 +122,11 @@
guava
32.1.2-jre
+
+ org.springframework
+ spring-messaging
+ 5.3.20
+
diff --git a/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java b/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java
index 2b224f03..92db7271 100644
--- a/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java
+++ b/storage/src/main/java/com/zfoo/storage/util/LambdaUtils.java
@@ -34,9 +34,10 @@ public final class LambdaUtils {
}
// 2. 反射读取
try {
- Method method = func.getClass().getDeclaredMethod("writeReplace");
+ Class extends Serializable> clazz = func.getClass();
+ Method method = clazz.getDeclaredMethod("writeReplace");
ReflectionUtils.makeAccessible(method);
- return new ReflectLambdaMeta((SerializedLambda) method.invoke(func), func.getClass().getClassLoader());
+ return new ReflectLambdaMeta((java.lang.invoke.SerializedLambda) method.invoke(func), clazz.getClassLoader());
} catch (Throwable e) {
// 3. 反射失败使用序列化的方式读取
return new ShadowLambdaMeta(SerializedLambda.extract(func));
diff --git a/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java b/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java
index 3ae8e60c..9caf52a9 100644
--- a/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java
+++ b/storage/src/main/java/com/zfoo/storage/util/support/ReflectLambdaMeta.java
@@ -7,11 +7,11 @@ import com.zfoo.protocol.util.StringUtils;
* Created by hcl at 2021/5/14
*/
public class ReflectLambdaMeta implements LambdaMeta {
- private final SerializedLambda lambda;
+ private final java.lang.invoke.SerializedLambda lambda;
private final ClassLoader classLoader;
- public ReflectLambdaMeta(SerializedLambda lambda, ClassLoader classLoader) {
+ public ReflectLambdaMeta(java.lang.invoke.SerializedLambda lambda, ClassLoader classLoader) {
this.lambda = lambda;
this.classLoader = classLoader;
}
diff --git a/storage/src/main/resources/META-INF/native-image/serialization-config.json b/storage/src/main/resources/META-INF/native-image/serialization-config.json
new file mode 100644
index 00000000..7912e89b
--- /dev/null
+++ b/storage/src/main/resources/META-INF/native-image/serialization-config.json
@@ -0,0 +1,24 @@
+{
+ "types": [
+ {
+ "name": "com.zfoo.storage.util.support.SerializedLambda"
+ },
+ {
+ "name": "java.lang.invoke.SerializedLambda"
+ },
+ {
+ "name": "com.zfoo.storage.util.function.Func"
+ },
+ {
+ "name": "com.zfoo.storage.util.function.Func0"
+ },
+ {
+ "name": "com.zfoo.storage.util.function.Func1"
+ }
+ ],
+ "lambdaCapturingTypes": [
+ {
+ "name": "com.zfoo.storage.util.LambdaUtils"
+ }
+ ]
+}