Jboss 7 class-loading
colective Feb 26, 2012 8:09 AMHi,
i managed to solve most of problems with EAR installation discussed in https://community.jboss.org/thread/195810?tstart=30
now i have few question regarding visibillity between jars and wars in ear file, log4j and lib directories
myear:
|----libs (xml-apis-2.6.2.jar, commons-logging-1.1.1.jar, commons-codec-1.4.jar, castor-1.3.2-xml.jar)
|----oracle (oracle jars)
|----config (config.jar)
|----log4 (log4j-1.2.16.jar)
|
|----jar1.jar
|----jar2.jar
|----jar3.jar
|----config.jar.jar (moved from config directory) (com.web.conf.config.xml.XMLModule)
|
|---- webapp1.war (com.web.webapp.cbs.plugins.CBSPlugin)
|---- webapp2.war (com.web.webapp.authentication.servlets)
my problem is that i cannot change ear structure and move all jars to lib dir (this is Websphere application that cannot be changed)
all jars are simple jars (no ejb)
jar1.jar uses classes from jar2.jar, jar3.jar and jar4.jar and i can solve this by adding in jboss-deployment-structure.xml in EAR/META-INF
config.jar is moved from config dir because i dont know how to tell in jboss-deployment-structure.xml to include jar file which is not in / or in lib directory
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<dependencies>
<module name="deployment.myear.ear.jar1.jar" />
<module name="org.apache.xerces" export="true" />
<module name="org.apache.log4j" />
</dependencies>
</deployment>
<module name="deployment.myear.ear.jar1.jar" slot="1.0" >
<resources>
<resource-root path="jar2.jar"/>
<resource-root path="jar3.jar"/>
<resource-root path="config.jar"/>
</resources>
<dependencies>
<module name="org.apache.xerces"/>
</dependencies>
</module>
</jboss-deployment-structure>
but problem rises when webapp1.war tries to load classes from jar1 and for that i receive java.lang.ClassNotFoundException
how can i adopt jboss-deployment-structure.xml to make visible classes to war files?
this is error from log files (i can send private message with real jar files, ear structure and error)
00:51:44,219 ERROR [] (MSC service thread 1-7) Exception during initialization of module cbsPlugin(class=com.web.webapp.cbs.plugins.CBSPlugin): java.lang.RuntimeException: Error during creation of Module cbsPlugin(class=com.web.webapp.cbs.plugins.CBSPlugin
at com.web.conf.config.xml.XMLModule.createModule(XMLModule.java:230) [config.jar:]
at com.web.conf.config.Configuration.initModule(Configuration.java:573) [config.jar:]
at com.web.conf.config.Component$Base.init(Component.java:48) [config.jar:]
at com.web.conf.config.ActiveComponent$Base.start(ActiveComponent.java:217) [config.jar:]
at com.web.webapp.authentication.servlets.InitServlet.init(InitServlet.java:64) [classes:]
at javax.servlet.GenericServlet.init(GenericServlet.java:242) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1202) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1102) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3655) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3873) [jbossweb-7.0.10.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_27]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_27]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_27]
Caused by: java.lang.ClassNotFoundException: com.web.webapp.cbs.plugins.CBSPlugin from [Module "deployment.myear.ear.jar1.jar:1.0" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
at com.ibm.asmpcee.config.xml.XMLModule.createModule(XMLModule.java:191) [config.jar:]
... 15 more
second question is regarding lib directories
how can i add nondefault lib directories to be used as default?
ear don't have ear/lib it has ear/lib, ear/oracle, ear/config, ear/log4j with lib files which cannot be changed as i said..
and last question regarding log4j
how can i config jboss 7 not to use default jboss logger?
we need to use log4j
i have these error in log
12:10:01,953 INFO [] (MSC service thread 1-8) Using platform default MBean server org.jboss.as.jmx.PluggableMBeanServerImpl@199d4a86 with default domain: DefaultDomain
12:10:01,957 DEBUG [] (MSC service thread 1-8) preRegister called. Server=com.sun.jmx.mbeanserver.JmxMBeanServer@30296f76, name=log4j:logger=
12:10:01,958 ERROR [stderr] (MSC service thread 1-8) LoggerRepository(org.jboss.logmanager.log4j.BridgeRepository@61181c24)
12:10:01,958 ERROR [stderr] (MSC service thread 1-8) logrep.getCurrentLoggers() is empty
12:10:01,958 ERROR [stderr] (MSC service thread 1-8) logrep.getCurrentCategories() is empty
12:10:01,958 ERROR [stderr] (MSC service thread 1-8) rootLogger(org.jboss.logmanager.log4j.BridgeLogger@75dfb148)
12:10:01,959 ERROR [stderr] (MSC service thread 1-8) aaaLogger(org.jboss.logmanager.log4j.BridgeLogger@30f02a6d)
and as outcome, everything is logged only to stderr and not in application log files
thanks
Tomislav