Java Web 应用程序 - 应用程序启动时加载库

发布于 2024-12-08 16:58:55 字数 327 浏览 0 评论 0原文

我用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零度° 2024-12-15 16:58:55

您可以实现一个 ServletContextListener ,并在收到 contextInitialized 事件后,您可以在此时加载 dll。

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

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

也许您应该考虑(尽管需要额外的努力)通过另一个进程加载并使用例如 RMI 与 dll 交互。因此,即使 dll 崩溃,您的应用程序仍然完好无损。

You could implement a ServletContextListener and upon receiving the contextInitialized 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文