0
votes

I am having trouble figuring out if the library jars specific to a project has to be added to the server configuration folder(In my case jboss server) or inside the application ear(inside WEB_INF/lib) or, inside both.

Recently i tried deploying an ear in a real time jboss server. And kept on getting the following error.

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/iportalweb].[RBXLoginServlet]] (http-/192.168.150.3:10041-4) JBWEB000236: Servlet.service() for servlet RBXLoginServlet threw exception: java.lang.NoClassDefFoundError: Could not initialize class org.jboss.logmanager.MDC at org.apache.log4j.MDC.remove(MDC.java:23) [log4j-jboss-logmanager-1.1.0.Final-redhat-2.jar:1.1.0.Final-redhat-2] at com.orbidirect.aps.common.Log4jMDCInitializer.removeFromMDC(Log4jMDCInitializer.java:54) [iRetailLib.jar:] at com.polaris.iportal.ws.filters.LogInitializationFilter.doFilter(LogInitializationFilter.java:120) [classes:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94) [CTRenderLib.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at com.polaris.canvas.filters.DeviceDetectFilter.doFilter(DeviceDetectFilter.java:94) [CTRenderLib.jar:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at 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] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.4.10.Final-redhat-1.jar:7.4.10.Final-redhat-1] at 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] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_91]

I know that with eclipse u could always add jars to project deployment assembly and run it in local. But if the server library has the same jars would there be an problem?

1

1 Answers

0
votes

Usually you place your jar library in your ear's lib directory, or your war's lib directory, depending on how you are packing your application. This is the most common way to deploy your library jars.

If you are planning to use the same jar on multiple applications (for example, database drivers), you can declare a jboss module for this jar, and then declare a dependency on your applications that need this jar through MANIFEST.MF file.

It´s not a good idea to deploy jars that jboss already has, because you can have version conflicts.. If you are using maven, you can declare those dependencies as provided, so they won't get copied to you applications lib folder.