gpt4 book ai didi

java - 从数据库调用类(编译后的java文件)文件并在应用程序服务器上运行时执行它

转载 作者:行者123 更新时间:2023-12-01 13:32:37 24 4
gpt4 key购买 nike

我要求客户保留 .class文件为Bloboracle 11g数据库(由于.class有财务批量和加密的逻辑,所以客户端不希望将其放在应用服务器上)。

我的问题是

应用程序中是否可以具有这样的功能,从数据库检索.class文件(编译后的java文件)并在调用时执行它?

提前致谢。

最佳答案

是的,您需要编写自定义 java.lang.ClassLoader它使用从数据库读取的字节来定义类。

它看起来像这样:

public class DatabaseClassLoader extends ClassLoader
{
private DataSource dataSource;

public DatabaseClassLoader(ClassLoader parent, DataSource dataSource)
{
super(parent);
this.dataSource = dataSource;
}

@Override
public Class<?> loadClass(String name) throws ClassNotFoundException
{
byte[] classDefinition = loadClassDefinition(name);

if (classDefinition != null)
{
Class c = defineClass(name, classDefinition, 0, classDefinition.length);
resolveClass(c);
return c;
}
else
{
return super.loadClass(name);
}
}

private byte[] loadClassDefinition(String name)
{
...
}
}

loadClassDefinition 尝试使用名称作为 SQL 查询中的键来加载表示类的字节 - 您必须自己准确定义它如何执行此操作,但大纲将即,查询表,将 blob 读入数组并返回。

关于java - 从数据库调用类(编译后的java文件)文件并在应用程序服务器上运行时执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com