Java Web 应用程序 - 应用程序启动时加载库
我用 Java-Servlet 开发了一个 Web 应用程序。它在 GlassFish 服务器(在 Windows 平台上)中运行。现在我需要使用 JNI 加载 DLL。我使用 System.loadLibrary(dll) 来执行此操作。我现在正在寻找在应用程序启动时加载此库的方法,以便它可以用于所有应用程序实例。我现在的问题是:
- 我如何定义这样一个启动事件,将其放在哪里以及配置什么,它将被执行
- 我如何必须实现这个启动事件,WebApp 的所有实例都可以在之后执行使用加载的库以及如何从现有的 servlet 中使用它
感谢您的帮助。
托马斯
I have developed an WebApplication with Java-Servlets. It is running in a GlassFish-Server (on a Windows-Plattform). Now I need to load a DLL with JNI. I use System.loadLibrary(dll) to do this. I am now searching the way, to load this Library at the Application-Startup so it can be used of all Application-Instances. My questions are now:
- How does I have to define such a Startup-Event and where to put it and what to configure, that it will be executed
- How does I have to implement this Startup-Event, that all instances of the WebApp can after use the loaded Library and how can I use it from my existing servlets
Thanks for you help.
Thomas
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以实现一个
ServletContextListener
,并在收到contextInitialized
事件后,您可以在此时加载 dll。如果您使用 Spring(甚至更好),您可以静态加载 dll(在 Spring 启动时),然后使用 Spring 获取 dll 的“处理程序”。
但请注意,如果您直接从 Web 应用程序加载 dll,并且 dll 崩溃,您的应用程序也会崩溃。
也许您应该考虑(尽管需要额外的努力)通过另一个进程加载并使用例如 RMI 与 dll 交互。因此,即使 dll 崩溃,您的应用程序仍然完好无损。
You could implement a
ServletContextListener
and upon receiving thecontextInitialized
event you could load the dll at that point.If you are using Spring (even better) you could load the dll statically (upon Spring startup) and then use Spring to get the "handler" to the dll.
Note though that if you directly load the dll from your web application and the dll crashes your application will crash as well.
Perhaps you should consider (although it requires extra effort) loading via another process and use e.g. RMI to interact with the dll. So if the dll crashes your app still remains intact.