如何在 WebSphere 中创建共享库以共享 jar 文件
How to create shared libraries in WebSphere to share jar files
我可以从日志文件中看到 class 路径
was.install.root = /IBM/WebSphere/AppServer
user.install.root = /IBM/WebSphere/AppServer/profiles/AppSrv01
Java Home = /IBM/WebSphere/AppServer/java/8.0/jre
ws.ext.dirs = /IBM/WebSphere/AppServer/java/8.0/lib:/IBM/WebSphere/AppServer/profiles/AppSrv01/classes:/IBM/WebSphere/AppServer/classes:/IBM/WebSphere/AppServer/lib:/IBM/WebSphere/AppServer/installedChannels:/IBM/WebSphere/AppServer/lib/ext:/IBM/WebSphere/AppServer/web/help:/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime
Classpath = /IBM/WebSphere/AppServer/profiles/AppSrv01/properties:/IBM/WebSphere/AppServer/properties:/IBM/WebSphere/AppServer/lib/startup.jar:/IBM/WebSphere/AppServer/lib/bootstrap.jar:/IBM/WebSphere/AppServer/lib/jsf-nls.jar:/IBM/WebSphere/AppServer/lib/lmproxy.jar:/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/IBM/WebSphere/AppServer/deploytool/itp/batch2.jar:/IBM/WebSphere/AppServer/java/8.0/lib/tools.jar
Java Library path = /IBM/WebSphere/AppServer/lib/native/linux/x86_64/:/IBM/WebSphere/AppServer/java/8.0/jre/lib/amd64/compressedrefs:/IBM/WebSphere/AppServer/java/8.0/jre/lib/amd64:/IBM/WebSphere/AppServer/bin:/IBM/WebSphere/AppServer/nulldllsdir:/usr/lib64:/usr/lib:
Orb Version = IBM Java ORB build orb80-20170207.00
我在应用程序服务器的 /WEB-INF/lib
路径中有一些 jar 文件,在 /WEB_INF/class
路径中有一些 class 文件。
在 /WEB_INF/lib
路径中,我有以下 jar 文件。
aopalliance-1.0.jar
commons-io-1.4.jar
jcl-over-slf4j-1.6.1.jar
spring-aop-4.2.5.RELEASE.jar
spring-expression-4.2.5.RELEASE.jar
bcprov-jdk16-1.46.jar
freemarker-2.3.16.jar
log4j-1.2.14.jar
spring-beans-4.2.5.RELEASE.jar
spring-web-4.2.5.RELEASE.jar
commons-codec-1.4.jar
ibmpkcs-8.0.jar
slf4j-api-1.6.1.jar
spring-context-4.2.5.RELEASE.jar
spring-webmvc-4.2.5.RELEASE.jar
commons-fileupload-1.2.2.jar
javassist-3.19.0-GA.jar
slf4j-log4j12-1.6.1.jar
spring-core-4.2.5.RELEASE.jar
我想将 javassist-3.19.0-GA.jar
移动到共享库以避免 class 冲突。我已经阅读了在 IBM 的 WebSphere 中配置和添加共享库的步骤。现在我想知道我应该在共享库路径中写什么?是不是像 ${WAS_INSTALL_ROOT}/WEB_INF/lib/javassist-3.19.0-GA.jar
?我应该从 /lib 路径中删除 javassist-3.19.0-GA.jar
吗?
在 WebSphere 中,您可以创建共享库来本地化或共享不同应用程序之间的依赖关系。
这是相同的 IBM 帮助文档。
如果您需要帮助,请添加评论或收件箱。
并且您应该记住,这两种类型的文件(服务器共享库和应用程序库)最终都会出现在类路径中供您的应用程序读取。如果您以任意组合提供两个不同的版本,它总是会产生歧义。
$WAS_INSTALL_ROOT 会让你达到 /IBM/WebSphere/AppServer;使用默认服务器变量最接近应用程序二进制文件的是 $USER_INSTALL_ROOT,它将进入 profiles/AppSrv01,应用程序二进制文件位于该位置的 "installedApps" 目录中。
也就是说,指向共享库中的应用程序二进制文件是一个非常糟糕的主意。如果您不希望 WAR class 加载程序加载该 jar,则将其从那里取出并放在其他地方。我要指出的是,我不完全理解您为什么要将它放入共享库(它与什么有冲突?),所以也许一些澄清也会对此有所帮助。
我可以从日志文件中看到 class 路径
was.install.root = /IBM/WebSphere/AppServer
user.install.root = /IBM/WebSphere/AppServer/profiles/AppSrv01
Java Home = /IBM/WebSphere/AppServer/java/8.0/jre
ws.ext.dirs = /IBM/WebSphere/AppServer/java/8.0/lib:/IBM/WebSphere/AppServer/profiles/AppSrv01/classes:/IBM/WebSphere/AppServer/classes:/IBM/WebSphere/AppServer/lib:/IBM/WebSphere/AppServer/installedChannels:/IBM/WebSphere/AppServer/lib/ext:/IBM/WebSphere/AppServer/web/help:/IBM/WebSphere/AppServer/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime
Classpath = /IBM/WebSphere/AppServer/profiles/AppSrv01/properties:/IBM/WebSphere/AppServer/properties:/IBM/WebSphere/AppServer/lib/startup.jar:/IBM/WebSphere/AppServer/lib/bootstrap.jar:/IBM/WebSphere/AppServer/lib/jsf-nls.jar:/IBM/WebSphere/AppServer/lib/lmproxy.jar:/IBM/WebSphere/AppServer/lib/urlprotocols.jar:/IBM/WebSphere/AppServer/deploytool/itp/batchboot.jar:/IBM/WebSphere/AppServer/deploytool/itp/batch2.jar:/IBM/WebSphere/AppServer/java/8.0/lib/tools.jar
Java Library path = /IBM/WebSphere/AppServer/lib/native/linux/x86_64/:/IBM/WebSphere/AppServer/java/8.0/jre/lib/amd64/compressedrefs:/IBM/WebSphere/AppServer/java/8.0/jre/lib/amd64:/IBM/WebSphere/AppServer/bin:/IBM/WebSphere/AppServer/nulldllsdir:/usr/lib64:/usr/lib:
Orb Version = IBM Java ORB build orb80-20170207.00
我在应用程序服务器的 /WEB-INF/lib
路径中有一些 jar 文件,在 /WEB_INF/class
路径中有一些 class 文件。
在 /WEB_INF/lib
路径中,我有以下 jar 文件。
aopalliance-1.0.jar
commons-io-1.4.jar
jcl-over-slf4j-1.6.1.jar
spring-aop-4.2.5.RELEASE.jar
spring-expression-4.2.5.RELEASE.jar
bcprov-jdk16-1.46.jar
freemarker-2.3.16.jar
log4j-1.2.14.jar
spring-beans-4.2.5.RELEASE.jar
spring-web-4.2.5.RELEASE.jar
commons-codec-1.4.jar
ibmpkcs-8.0.jar
slf4j-api-1.6.1.jar
spring-context-4.2.5.RELEASE.jar
spring-webmvc-4.2.5.RELEASE.jar
commons-fileupload-1.2.2.jar
javassist-3.19.0-GA.jar
slf4j-log4j12-1.6.1.jar
spring-core-4.2.5.RELEASE.jar
我想将 javassist-3.19.0-GA.jar
移动到共享库以避免 class 冲突。我已经阅读了在 IBM 的 WebSphere 中配置和添加共享库的步骤。现在我想知道我应该在共享库路径中写什么?是不是像 ${WAS_INSTALL_ROOT}/WEB_INF/lib/javassist-3.19.0-GA.jar
?我应该从 /lib 路径中删除 javassist-3.19.0-GA.jar
吗?
在 WebSphere 中,您可以创建共享库来本地化或共享不同应用程序之间的依赖关系。 这是相同的 IBM 帮助文档。 如果您需要帮助,请添加评论或收件箱。
并且您应该记住,这两种类型的文件(服务器共享库和应用程序库)最终都会出现在类路径中供您的应用程序读取。如果您以任意组合提供两个不同的版本,它总是会产生歧义。
$WAS_INSTALL_ROOT 会让你达到 /IBM/WebSphere/AppServer;使用默认服务器变量最接近应用程序二进制文件的是 $USER_INSTALL_ROOT,它将进入 profiles/AppSrv01,应用程序二进制文件位于该位置的 "installedApps" 目录中。
也就是说,指向共享库中的应用程序二进制文件是一个非常糟糕的主意。如果您不希望 WAR class 加载程序加载该 jar,则将其从那里取出并放在其他地方。我要指出的是,我不完全理解您为什么要将它放入共享库(它与什么有冲突?),所以也许一些澄清也会对此有所帮助。