deployment - Deploying grails application on Jboss 7.1.2 with provided dependencies -


i want deploy multiple grails applications on jboss. because use same grails version (2.1.1) want exclude common jars war file , provide them via jboss module. starters, i'm trying 1 application, can't work.

what tried

  1. set defaultdependenciesprovided true in buildconfig.groovy (before inherits("global"))
  2. created module folders: modules/commons/grails/main , put common jars in
  3. created module.xml
  4. added dependencies: commons.grails manifest.mf file inside war
  5. tried deploy app

what happend

10:16:12,800 info  [org.jboss.as.server.deployment] (msc service thread 1-3) jbas015876: starting deployment of "sofmk13-web-0.1.war"  10:16:23,095 warn  [org.jboss.modules] (msc service thread 1-4) failed define class org.codehaus.groovy.grails.web.taglib.jsp.jspinvokegrailstaglibtag in module "commons.grails:main" local module loader @4ec57293 (roots: c:\development\tools\jboss-as-7.1.2.final\modules,c:\development\repository\jboss): java.lang.linkageerror: failed link org/codehaus/groovy/grails/web/taglib/jsp/jspinvokegrailstaglibtag (module "commons.grails:main" local module loader @4ec57293 (roots: c:\development\tools\jboss-as-7.1.2.final\modules,c:\development\repository\jboss))     @ org.jboss.modules.moduleclassloader.defineclass(moduleclassloader.java:396)     @ org.jboss.modules.moduleclassloader.loadclasslocal(moduleclassloader.java:243)     @ org.jboss.modules.moduleclassloader$1.loadclasslocal(moduleclassloader.java:73)     @ org.jboss.modules.module.loadmoduleclass(module.java:527)     @ org.jboss.modules.moduleclassloader.findclass(moduleclassloader.java:182)     @ org.jboss.modules.concurrentclassloader.performloadclassunchecked(concurrentclassloader.java:468)     @ org.jboss.modules.concurrentclassloader.performloadclasschecked(concurrentclassloader.java:456)     @ org.jboss.modules.concurrentclassloader.performloadclass(concurrentclassloader.java:398)     @ org.jboss.modules.concurrentclassloader.loadclass(concurrentclassloader.java:120)     @ java.lang.classloader.defineclass1(native method) [rt.jar:1.7.0_17]     @ java.lang.classloader.defineclass(classloader.java:791) [rt.jar:1.7.0_17]     @ java.security.secureclassloader.defineclass(secureclassloader.java:142) [rt.jar:1.7.0_17]     @ org.jboss.modules.moduleclassloader.dodefineorloadclass(moduleclassloader.java:327)     @ org.jboss.modules.moduleclassloader.defineclass(moduleclassloader.java:391)     @ org.jboss.modules.moduleclassloader.loadclasslocal(moduleclassloader.java:243)     @ org.jboss.modules.moduleclassloader$1.loadclasslocal(moduleclassloader.java:73)     @ org.jboss.modules.module.loadmoduleclass(module.java:527)     @ org.jboss.modules.moduleclassloader.findclass(moduleclassloader.java:182)     @ org.jboss.modules.concurrentclassloader.performloadclassunchecked(concurrentclassloader.java:468)     @ org.jboss.modules.concurrentclassloader.performloadclasschecked(concurrentclassloader.java:456)     @ org.jboss.modules.concurrentclassloader.performloadclass(concurrentclassloader.java:398)     @ org.jboss.modules.concurrentclassloader.loadclass(concurrentclassloader.java:120)     @ java.lang.class.forname0(native method) [rt.jar:1.7.0_17]     @ java.lang.class.forname(class.java:266) [rt.jar:1.7.0_17]     @ org.jboss.as.server.deployment.reflect.deploymentclassindex.classindex(deploymentclassindex.java:54)     @ org.jboss.as.ee.component.deployers.eemoduleconfigurationprocessor.deploy(eemoduleconfigurationprocessor.java:81) [jboss-as-ee-7.1.2.final.jar:7.1.2.final]     @ org.jboss.as.server.deployment.deploymentunitphaseservice.start(deploymentunitphaseservice.java:116)     @ org.jboss.msc.service.servicecontrollerimpl$starttask.startservice(servicecontrollerimpl.java:1811)     @ org.jboss.msc.service.servicecontrollerimpl$starttask.run(servicecontrollerimpl.java:1746)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145) [rt.jar:1.7.0_17]     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615) [rt.jar:1.7.0_17]     @ java.lang.thread.run(thread.java:722) [rt.jar:1.7.0_17] caused by: java.lang.noclassdeffounderror: javax/servlet/jsp/tagext/dynamicattributes     @ java.lang.classloader.defineclass1(native method) [rt.jar:1.7.0_17]     @ java.lang.classloader.defineclass(classloader.java:791) [rt.jar:1.7.0_17]     @ java.security.secureclassloader.defineclass(secureclassloader.java:142) [rt.jar:1.7.0_17]     @ org.jboss.modules.moduleclassloader.dodefineorloadclass(moduleclassloader.java:327)     @ org.jboss.modules.moduleclassloader.defineclass(moduleclassloader.java:391)     ... 31 more caused by: java.lang.classnotfoundexception: javax.servlet.jsp.tagext.dynamicattributes [module "commons.grails:main" local module loader @4ec57293 (roots: c:\development\tools\jboss-as-7.1.2.final\modules,c:\development\repository\jboss)]     @ org.jboss.modules.moduleclassloader.findclass(moduleclassloader.java:190)     @ org.jboss.modules.concurrentclassloader.performloadclassunchecked(concurrentclassloader.java:468)     @ org.jboss.modules.concurrentclassloader.performloadclasschecked(concurrentclassloader.java:456)     @ org.jboss.modules.concurrentclassloader.performloadclass(concurrentclassloader.java:398)     @ org.jboss.modules.concurrentclassloader.loadclass(concurrentclassloader.java:120)     ... 36 more 

there lot of similar warnings different classes.

can point me try next? can't decipher wrong error message.

thanks!

after trial , error managed exclude of jars , provide them modules. hardest part jar dependencies right. brief overview follows. start description of how prepare war archive use modules. describe how modules added jboss.

prepare war archive (assuming modules provided)

  1. create jboss-deployment-structure.xml file inside /web-app/web-inf folder. here specify modules application uses , set appropriate versions (with slot parameter). note these modules provide jars we'll excluded war in next step.

    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">     <deployment>         <dependencies>             <module name="commons.restgrailsjars" slot="2.1.1"/>             <module name="org.springframework" slot="3.1.2.release"/>         </dependencies>    </deployment> </jboss-deployment-structure> 
  2. add code exclude shared jars war file. use grails.war.resources configuration option inside buildconfig.groovy. lets processing before war created, can delete shared jars archive (they listed in list). append following lines file:

    grails.war.resources = { resourcedir ->  file libdir = new file(resourcedir, 'web-inf/lib')  ['aopalliance', 'asm', 'aspectjrt', 'aspectjweaver', 'cglib', 'commons-beanutils', 'commons-codec', 'commons-collections', 'commons-dbcp', 'commons-el', 'commons-fileupload', 'commons-io', 'oro', 'sitemesh', 'slf4j', 'spring-aop', 'spring-asm', 'spring-beans', 'spring-core', 'spring-expression', 'xpp3_min', 'h2', 'servlet-api']         .each { jarnamestart ->                     libdir.eachfile { file ->                         if (file.name.startswith(jarnamestart)) {                             file.delete()                              println "deleted jar $file"                         }                     }          }   }  

adding jboss modules

adding modules pretty easy if know dependencies needed each jar library. here example of adding modules spring version 3.2.3.release.

  1. spring framework jars reside inside modules/org/springframework folder.
  2. create new folder named 3.2.3.release , copy jars can shared*.
  3. put module.xml beside jars. looks this: (notice changed slot value corresponds release version , folder name)

    <module xmlns="urn:jboss:module:1.1" name="org.springframework" slot="3.2.3.release">   <resources>       <resource-root path="spring-asm-3.2.3.release.jar"/>       <resource-root path="spring-core-3.2.3.release.jar"/>       <resource-root path="spring-aop-3.2.3.release.jar"/>       <resource-root path="spring-beans-3.2.3.release.jar"/>       <resource-root path="spring-expression-3.2.3.release.jar"/>           </resources>     <dependencies>     <module name="aopalliance.aopalliance" export="true"/>     <module name="cglib.cglib" export="true"/>     <module name="org.aspectj.aspectjweaver" export="true"/>     <module name="org.apache.commons.logging" export="true"/>     <module name="org.apache.commons.pool" export="true"/>     <module name="javax.servlet.api"/>     <module name="javax.faces.api" slot="1.2" />     <module name="com.sun.jsf-impl" slot="1.2" />     <module name="org.jboss.vfs"/>     <module name="javax.persistence.api"/>     <module name="javax.xml.bind.api"/>     <module name="javax.api"/>     <module name="javax.jms.api"/>     <module name="javax.annotation.api"/>     </dependencies> </module> 

if modules missing, application won't deploy (or will, strange things, email validation failures happen).

you have similar thing libraries want exclude war archive. managed exclude jars listed in 'prepare war archive' section (2.).


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -