博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
虚拟主机同时运行多个使用 ImageMagick +Jmagick的网站
阅读量:6529 次
发布时间:2019-06-24

本文共 1772 字,大约阅读时间需要 5 分钟。

hot3.png

       Tomcat虚拟主机同时运行多个使用 ImageMagick +Jmagick的网站,遇到了这个错误:Native Library C:\WINDOWS\system32\jmagick.dll already loaded in another classloader

-----------------------------------------------------

环境说明:

中间件:tomcat6.0.18

开发环境:winXP

服务器:CentOS5.3

         在一个tomcat下,有多个虚拟主机, 运行了多个网站,每个网站都使用  +Jmagick 来处理图片, 须要使用JNI调用本地*.dll文件来处理图片,  每个网站(web应用程序)都有自己的lib,在WebContent\WEB-INF\lib下面.  这样就有重复的jar包, 如jmagick.jar,servlet-api.jar, ***等好多jar包, 在每个网站(web应用程序)都有一份.

-----------------------------------------------------

结果在启动tomcat时会报:

1 忽略了servlet-api.jar .  (具体日志信息没有复制)

2 一个web应用程序处理完图片后,第二个web应用程序再处理图片时会出错:Native Library C:\WINDOWS\system32\jmagick.dll already loaded in another classloader

3 A C3P0Registry mbean is already registered

-----------------------------------------------------

 

我搜索到了  的一篇文章:

1、症状 如果JBoss上的两个web应用需要使用相同的JNI本地库,当第二个web应用加载JNI本地库时,就会出现Native Library xxx.so already loaded in another classloader错误2、原因  Java虚拟机为了在JNI本地库中确保基于classloader的命名空间隔离,因而不允许一个JNI本地库被两个不同的classloader加载。而JBoss中web应用的classloader是独立的,也就是说每个web应用都有一个专属的classloader,这样就出现两个classloader加载同一JNI本地库的情况3、解决方法 在JBoss AS中,虽然不同的web应用使用不同的classloader,但是web应用classloader的父classloader是相同的,这样根据双亲委托模型只要让父classloader加载JNI本地库就可以避免被多个classloader加载。父classloader的classpath为JBoss AS配置(default、all或minimal)的lib目录,因而只要将JNI class单独发布成jar包,并放在配置(default、all或minimal)的lib目录中,问题就可以解决

 以上说明了问题的原因, 上面说 "因而只要将JNI class单独发布成jar包"  , 我使用了 jmagick.jar是在这里调用了JNI ,  所以把jmagick.jar 从WebContent\WEB-INF\lib下 移动到了E:\tomcat-6.0.18\lib下, 就不会被重复加载了.

 

----------------------------------------------------

Tomcat6的类加载顺序

1、最先是$JAVA_HOME/jre/lib/ext/下的jar文件。

2、环境变量CLASSPATH中的jar和class文件。

3、$CATALINA_HOME/lib 下的jar文件。

4、各自具体的webapp /WEB-INF/classes下的class文件。

5、各自具体的webapp /WEB-INF/lib下的jar文件。

 

 

转载于:https://my.oschina.net/pangzhuzhu/blog/317938

你可能感兴趣的文章
CentOS 7 关闭启动防火墙
查看>>
Vue-选项卡切换
查看>>
linux网络命令
查看>>
nodejs ejs 请求路径和静态资源文件路径
查看>>
记一次思维转变的时刻
查看>>
Oil Deposits
查看>>
poj3984 迷宫问题(简单搜索+记录路径)
查看>>
Linux 服务器buff/cache清理
查看>>
算法试题 及其他知识点
查看>>
php课程---Json格式规范需要注意的小细节
查看>>
hadoop hdfs notes
查看>>
Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
查看>>
(2编写网络)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
查看>>
【转】如何使用分区助手完美迁移系统到SSD固态硬盘?
查看>>
NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
查看>>
ios兼容iphonex刘海屏解决方案
查看>>
就是要你懂TCP -- 握手和挥手
查看>>
Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
查看>>
《Python游戏编程快速上手》一1.3 如何使用本书
查看>>
《Visual Studio程序员箴言》----1.2 滚动与导航
查看>>