Java Web应用程序 - 应用程序启动时的LoadLibrary

时间:2011-10-06 20:12:18

标签: java servlets glassfish java-native-interface

我使用Java-Servlets开发了一个WebApplication。它在GlassFish-Server中运行(在Windows-Plattform上)。现在我需要加载一个带有JNI的DLL。我使用System.loadLibrary(dll)来执行此操作。我现在正在搜索,在Application-Startup上加载这个库,以便它可以用于所有Application-Instances。我现在的问题是:

  • 我如何定义这样的启动事件以及放置它的位置和配置内容,它将被执行
  • 我如何实现此Startup-Event,WebApp的所有实例都可以在使用加载的库之后,如何在现有的servlet中使用它

谢谢你的帮助。

托马斯

1 个答案:

答案 0 :(得分:2)

您可以实现ServletContextListener,并且在收到contextInitialized事件后,您可以在该点加载dll。

如果你正在使用Spring(甚至更好),你可以静态加载dll(在Spring启动时)然后使用Spring来获取dll的“处理程序”。

请注意,如果您直接从Web应用程序加载dll并且dll崩溃,那么您的应用程序也会崩溃。

也许你应该考虑(虽然需要额外的努力)通过另一个过程加载并使用例如RMI与dll交互。因此,如果dll崩溃,您的应用仍然保持不变。