class - 动态创建 java 类并使其可通过网络访问不同的 jvm,即可序列化

标签 class dynamic oracle-coherence javassist

我需要动态创建 java 类并使其可以通过网络访问不同的 jvm。我尝试使用反射和 javassist 工具,但没有任何效果。让我解释一下场景
我们正在使用 Coherence 分布式缓存。它具有跨集群并行进行聚合/过滤的能力。例如,如果一个类有 [dynamic class] 有数量变量和 getAmount/setAmount 方法。然后,如果我们执行 COHERENCE 查询,它将在整个集群中并行启动进程。

我尝试使用 javassist 和反射在运行时创建类。我可以从单个 JVM 访问它,但是当我尝试从其他 jvm [通过一致性集群] 访问同一个类时。我得到了未找到类的异常 [因为远程 jvm 不知道这个类]。我可以通过在远程 jvm 上动态创建相同的类并访问方法来克服这个问题。但是内置方法/函数的一致性无法找到类。
有人能帮我解决这个问题吗

最佳答案

创建的新类必须对集群的所有节点可用。这意味着新创建的字节码必须在每个节点 JVM 的类路径/类加载器上。我认为最简单的方法是将生成的类放在共享网络驱动器上,并让所有 JVM 指向其类路径中的共享网络位置。每次 JVM 找到对新类的引用时,它都应该从网络共享动态加载它。

关于class - 动态创建 java 类并使其可通过网络访问不同的 jvm,即可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718041/

相关文章:

php - 如何在 URL 中放置 MySQL 行数据?

使用动态参数的 C# 方法重载

java - Oracle 一致性 : Transaction Management between two Cache

java - 是否有 Oracle Coherence Java stub ?

java - Sybase 死锁执行存储过程(如果不存在则插入记录)

c++ - __device__ 类成员函数更改设备变量的值后从设备复制到主机时出现 cudaMemcpy 错误

C++模板类编译错误

c# - 我想在整数数组的连续子集中找到公共(public)数字的最大频率

ios - 在不调用 ViewDidLoad 的情况下从另一个类访问方法或属性?

java - 在方法中使用扫描仪类