从外部Web应用程序加载Java类

时间:2014-04-11 18:10:40

标签: java

我有一个servlet,它接受一些参数。其中一个参数包括类名,它应根据发送到servlet的其他参数执行一些操作。类名参数是动态的,因此servlet不会事先知道要加载哪个类。

由于类经常更改(用于维护),因此我需要将类保留在Application之外,因为我无法在生产环境中重新启动服务器。 另外我需要记住,如果类更改了servlet需要加载最新版本的类。我最好的选择是什么。

  1. 使用规则引擎。
  2. 使用动态类加载,但我担心在一些内存中会加载太多的类并且permgen空间会受到影响。
  3. 请指教。提前致谢

1 个答案:

答案 0 :(得分:0)

这在安全方面听起来有点危险,但我假设你已经采取措施缓解。

我认为最直接的方法是使用动态类加载。构造一个URL类加载器来加载一个固定的文件系统位置(确保人们不能随意运行他们想要的任何类!)使用它加载类并执行代码(可能通过反射,因为类在Web应用程序中不可见&# 39; s类加载器)并正确处理类加载器和创建的任何对象(这样就没有内存泄漏)正如您所提到的,您可能需要增加PermGen,但这适用于任何涉及加载其他类的解决方案(这是你的要求)