当前位置:  开发笔记 > 运维 > 正文

Java Web应用程序无法使用本机库(.so)

如何解决《JavaWeb应用程序无法使用本机库(.so)》经验,为你挑选了0个好方法。

技术摘要:我正在开发部署在GlassFish v3上的Java Web服务,在CentOS 5上运行.

我的Web服务使用本机库(.so)提供的功能.本机库工作正常,但我没有太多运气正确配置环境以加载本机库但不受Web应用程序重新部署的影响,而无需重新启动应用程序服务器.

到目前为止我所做的是:

最初我在Web服务代码中加载了库(静态{System.load(path/to/libabc.so)};),所有路径设置正确,并且工作正常,直到我重新部署应用程序并且它抱怨该库由另一个ClassLoader加载.我发现本机库只加载一次.

为了尝试解决这个问题,我从Web应用程序中删除了库加载代码,创建了一个Singleton类,将其包装到Lifecyle模块中,将其部署到GlassFish共享库文件夹,然后配置GlassFish以在启动时运行包装器.我们的想法是,现在所有的Web应用程序都能够引用它,因为它不依赖于某个特定的Web应用程序,而是由层次结构中较高的ClassLoader加载.

当GlassFish启动时,本机库成功加载(linux> lsof | grep libabc.so).但是,在我的Web服务Java代码中执行本机方法时,Web服务代码失败并出现UnsatisfiedLinkError.在我看来,Web应用程序中的代码无法访问启动时加载的库.

谁能告诉我我做错了什么?

提前致谢.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有