在实时部署期间在哪里添加 jar?
Posted
技术标签:
【中文标题】在实时部署期间在哪里添加 jar?【英文标题】:Where to add jars during real time Deployment? 【发布时间】:2017-02-07 06:44:33 【问题描述】:我无法确定是否必须将特定于项目的库 jar 添加到服务器配置文件夹(在我的情况下为 jboss 服务器)或应用程序耳内(在 WEB_INF/lib 内)或两者内。
最近我尝试在实时 jboss 服务器中部署 ear。并不断收到以下错误。
错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/iportalweb].[RBXLoginServlet]] (http-/192.168.150.3:10041-4) JBWEB000236: Servlet.service() 为 servlet RBXLoginServlet 抛出异常: java.lang.NoClassDefFoundError:无法初始化类 org.jboss.logmanager.MDC 在 org.apache.log4j.MDC.remove(MDC.java:23) [log4j-jboss-logmanager-1.1.0.Final-redhat-2.jar:1.1.0.Final-redhat-2] 在 com.orbidirect.aps.common.Log4jMDCInitializer.removeFromMDC(Log4jMDCInitializer.java:54) [iRetailLib.jar:] 在 com.polaris.iportal.ws.filters.LogInitializationFilter.doFilter(LogInitializationFilter.java:120) [班级:] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94) [CTRenderLib.jar:] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94) [CTRenderLib.jar:] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.4.3.Final-redhat-2.jar:7.4.3.Final-redhat-2] 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] 在 java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_91]
我知道使用 Eclipse,你总是可以将 jars 添加到项目部署程序集并在本地运行它。但是如果服务器库有相同的jars会不会有问题?
【问题讨论】:
【参考方案1】:通常你将你的 jar 库放在你 ear 的 lib 目录,或者你的 war 的 lib 目录中,这取决于你如何打包你的应用程序。这是部署库 jar 的最常用方法。
如果您打算在多个应用程序(例如,数据库驱动程序)上使用同一个 jar,您可以为这个 jar 声明一个 jboss 模块,然后通过 MANIFEST.MF 文件声明对需要这个 jar 的应用程序的依赖.
部署 jboss 已有的 jars 不是一个好主意,因为您可能会遇到版本冲突。如果您使用的是 maven,您可以将这些依赖项声明为已提供,因此它们不会被复制到您的应用程序lib 文件夹。
【讨论】:
以上是关于在实时部署期间在哪里添加 jar?的主要内容,如果未能解决你的问题,请参考以下文章
mongodb 监控工具 mongo-monitor 安装部署
解决IDEA Java Web项目没问题,但部署时出错的问题