我需要动态创建 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/