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

标签 java servlets glassfish java-native-interface

我用 Java-Servlet 开发了一个 Web 应用程序。它在 GlassFish 服务器(在 Windows 平台上)中运行。现在我需要使用 JNI 加载 DLL。我使用 System.loadLibrary(dll) 来执行此操作。我现在正在寻找在应用程序启动时加载此库的方法,以便它可以用于所有应用程序实例。我现在的问题是:

  • 我必须如何定义这样的启动事件以及将其放置在何处以及配置什么以使其执行
  • 我必须如何实现此启动事件,WebApp 的所有实例都可以使用加载的库,以及如何从现有的 servlet 中使用它

感谢您的帮助。

托马斯

最佳答案

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

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

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

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

关于Java Web 应用程序 - 应用程序启动时加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679913/

相关文章:

java - 如何为 Wildfly 服务器内的 Websocket 创建独立的 tyrus 客户端,以便在两个 Wildfly 实例之间进行通信

oracle - 创建 JDBC 连接池 Glassfish v3 的异常

java - HttpServletRequest 属性和参数获取 "lost"?符合 1.6 JavaEE 规范?

java - JSP和Servlet生命周期方法

java - 使用 JdbcTemplate 进行动态查询

java - Hibernate获取实体名称值

jsp - 防止用户在注销后看到以前访问过的安全页面

Spring 和 tomcat 或 Spring 和 Glassfish

java - Android Studio 路径

java - JTree添加节点和更新