tomcat解决含有linux动态链接库的文件so的deploy web项目不需要重启tomcat的方法

这个问题困扰我很久了,到现在依然不太懂其原理,但是好在成功解决了这个问题,网上有答案,但是比较简单,无法做到跟着一步一步就可以成功,为此,特意写这个,希望能帮到更多的人。

1.libTest.so文件放到linux系统的java.library.path目录下(System.getProperty(“java.library.pah”)可以得到)

2.新建一个加载soloadjava项目

static {

String soPath="Test";

System.loadLibrary(soPath);

}

注意这里不带lib前缀和so后缀

public native int Test(int x,int y);

将文件打包为jarsoload.jar,然后将jar包包含到maven结构的web项目中

<dependency>

<groupId>com.baidu.java</groupId>  <!--自定义 -->

<artifactId>soload</artifactId>    <!--自定义 -->

<version>1.0</version> <!--自定义 -->

<scope>system</scope> <!--system,类似provided,需要显式提供依赖的jar以后,Maven就不会在Repository中查找它 -->

<systemPath>${basedir}/lib/soload.jar</systemPath> <!--项目根目录下的lib文件夹下 -->

</dependency>

这里不需要将jar包包含到war包中

1. 将soload.jar包上传到${tomcat}/server/lib目录下,没有server/lib目录则创建,然后修改${tomcat}/conf/catalina.properties文件的server.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar

shared.loader=${catalina.base}/server/classes,${catalina.base}/server/lib/*.jar

注意:server.loader和shared.loader的是一样的

表示tomcat启动后会自动加载${tomcat}/server/lib目录下的jar

2. 将war包上传到webapp中,然后启动tomcat,当再次需要发布war项目时(没有修改soload.jar)直接将war包上传到webapp中,不需要重启tomcat



猜你喜欢

转载自blog.csdn.net/wumanxin2018/article/details/79834443