tomcat8忽略shared.loader属性

时间:2016-12-14 08:12:32

标签: java linux tomcat servlets java-native-interface

我正在尝试编写一个简单的servlet,只需调用本机函数。

首先,我尝试在servlet中加载共享对象,但后来我得到了一个“UnsatisfiedLinkError”,因为该库已经加载到JVM中。在搜索此问题后,我找到了tomcat documentation

它基本上说我必须编写一个在服务器启动时执行的加载程序。所以我写了下面的课:

class MyLibLoader 
{
    static 
    {
        System.loadLibrary("foo");
    }

    native void doFoo();

    public static void main(String[] args)
    {
        System.out.println("Lib loaded");
    }
}

将其编译为.class文件并将其放在“$ CATALINA_HOME / shared / lib /”文件夹中,将“catalina.properties”文件中的属性“shared.loader”编辑为以下内容:

shared.loader="${catalina.home}/shared/lib"

重新启动tomcat后没有错误,我在servlet中得到以下异常:

  

java.lang.UnsatisfiedLinkError中

根据我的理解,这意味着没有加载JNI库。我试图将库名更改为一个肯定不存在的名称,然后你去了:我可以重启tomcat而不会发现找不到库的错误。我还尝试将加载器放在.jar文件中,将属性更改为:

shared.loader="${catalina.home}/shared/lib/*.jar"

它也不起作用。

基于此我假设tomcat只是忽略了“shared.loader”属性。

0 个答案:

没有答案