在Java Web应用程序中存储运行时生成的类的位置?

时间:2013-05-25 21:49:23

标签: java jsp web-applications code-generation war

我已经创建了一个项目,可以在运行时动态编写,编译和实例化一个新的java类,当我在命令行或eclipse中运行它时它工作得很好。最终我的目标是创建一种非常类似于JSP的技术;用户提供了一个“模板”文件,我将其翻译成java类并实例化该类。我的问题是,在Web应用程序的上下文中,我似乎无法实例化新编译的类

我的问题的核心是我不知道在哪里放置我的编译类,以便我可以立即实例化它们。

以下是我的目标:

  1. 这将是其他开发人员的通用工具,因此它不能特定于我的文件系统或我的java容器。
  2. 如果用户从容器中取消部署其webapp,则还应删除这些生成的类文件。
  3. 以下是我的想法,但我之前从未做过这样的事情:

    我是否将这些生成的类放入类路径的一个现有条目中,如果是这样的话?我应该让用户提供路径,然后我的库会将此路径添加到类路径中吗?也许他们提供了一个路径,我只是使用自定义类加载器从该路径读取它们?用户已经提供了他们的“模板”的路径(例如WEB-INF / templates),那么我应该将我的编译类与原始模板放在一起吗?我的理解是,翻译的JSP文件存储在特定于该java容器的专有位置,因此我无法跟随JSP文件的脚步。

    啊!我不堪重负!也许有一个开源的java库做类似的东西,我可以研究它来确定它放在哪里生成的文件??

1 个答案:

答案 0 :(得分:0)

基本上你需要定义自己的类加载器并从那里进行加载。

请参阅How do you change the CLASSPATH within Java?