2017-06-14 36 views
0

我試圖爲我的grails應用程序(使用Spring Security)實現模塊。由於Spring Security和Grails擁有大量的依賴關係,戰爭規模變得超過80MB。爲了避免這種情況,我試圖從模塊中訪問這些依賴項。部署到JBoss 7.1.1時出現異常,原因如下:org.springframework:main在本地模塊中找不到

但是,試圖在jboss 7.1.1.Final中部署grails WAR時出現以下錯誤。

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.module.service."deployment.IFP.war".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.IFP.war".main: Failed to load module: deployment.IFP.war:main 
    at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0] 
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0] 
Caused by: org.jboss.modules.ModuleNotFoundException: Module org.springframework:main is not found in local module loader @1f88953 (roots: C:\Jboss\jboss-as-7.1.1.Final\modules) 
    at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java:126) 
    at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:275) 
    at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:222) 
    at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.java:94) 
    at org.jboss.modules.Module.addPaths(Module.java:841) 
    at org.jboss.modules.Module.link(Module.java:1181) 
    at org.jboss.modules.Module.relinkIfNecessary(Module.java:1207) 
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:208) 
    at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] 

JBoss的部署,structure.xml

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> 
    <deployment> 
     <dependencies>  
      <module name="com.sits.grails"> 
       <imports> 
        <include path="META-INF**"/> 
        <include path="org**"/> 
       </imports> 
      </module> 
     </dependencies> 
    </deployment> 
</jboss-deployment-structure> 

module.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.1" name="com.sits.grails"> 
    <properties> 
     <property name="jboss.api" value="private"/> 
    </properties> 

    <resources> 
     <resource-root path="activation-1.1.jar"/> 
     <resource-root path="antlr-2.7.7.jar"/> 
     ......... 
     ......... 
     <resource-root path="jboss-logging-3.1.0.GA.jar"/> 
     <resource-root path="jboss-logging-annotations-1.2.0.Beta1.jar"/> 
     <resource-root path="jboss-transaction-api_1.2_spec-1.0.0.Final.jar"/> 
     <resource-root path="jcl-over-slf4j-1.7.5.jar"/> 
     <resource-root path="jsr166y-1.7.0.jar"/> 
     <resource-root path="jul-to-slf4j-1.7.5.jar"/> 
     <resource-root path="liquibase-core-2.0.5.jar"/> 
     <resource-root path="log4j-1.2.17.jar"/> 
     <resource-root path="mysql-connector-java-5.1.13.jar"/> 
     <resource-root path="netty-all-4.0.15.Final.jar"/> 
     <resource-root path="rhino-1.7R4.jar"/> 
     <resource-root path="serializer-2.7.1.jar"/> 
     <resource-root path="sitemesh-2.4.jar"/> 
     <resource-root path="slf4j-api-1.7.5.jar"/> 
     <resource-root path="spring-aop-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-aspects-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-beans-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-context-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-context-support-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-core-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-expression-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-jdbc-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-orm-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-security-core-3.2.7.RELEASE.jar"/> 
     <resource-root path="spring-security-web-3.2.7.RELEASE.jar"/> 
     <resource-root path="spring-tx-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-web-4.0.7.RELEASE.jar"/> 
     <resource-root path="spring-webmvc-4.0.7.RELEASE.jar"/> 
     <resource-root path="tomcat-embed-logging-log4j-7.0.50.jar"/> 
     <resource-root path="tomcat-jdbc-7.0.50.jar"/> 
     <resource-root path="tomcat-juli-7.0.50.jar"/> 
     <resource-root path="validation-api-1.1.0.Final.jar"/>   
    </resources> 

    <dependencies> 
     <module name="javax.api"/> 
     <module name="sun.jdk"/> 
     <module name="org.javassist" optional="true"/> 
     <module name="javax.servlet.api"/> 
     <module name="org.apache.commons.logging"/>  
    </dependencies> 
</module> 

在我的MANIFEST.MF文件有依賴性聲明

Dependencies: org.apache.log4j,com.sits.grails,org.springframework 

我我不明白是什麼導致這個問題即如果有人能幫助我確定會有很大的幫助。謝謝。

的applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <bean id="grailsApplication" class="org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean"> 
     <description>Grails application factory bean</description> 
     <property name="grailsDescriptor" value="/WEB-INF/grails.xml" /> 
    </bean> 

    <bean id="pluginManager" class="org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean"> 
     <description>A bean that manages Grails plugins</description> 
     <property name="grailsDescriptor" value="/WEB-INF/grails.xml" /> 
     <property name="application" ref="grailsApplication" /> 
    </bean> 

    <bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator"> 
     <constructor-arg> 
      <ref bean="grailsApplication" /> 
     </constructor-arg> 
     <property name="pluginManager" ref="pluginManager" /> 
    </bean> 

    <bean id="characterEncodingFilter" class="org.springframework.web.filter.CharacterEncodingFilter"> 
     <property name="encoding"> 
      <value>utf-8</value> 
     </property> 
    </bean> 

    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" /> 
</beans> 

回答

0

在MANIFEST.MF中指定的模塊名稱不包名,但模塊名作爲JBoss中的module.xml定義

你module.xml包含spring jar被命名爲com.sits.grails.Hence你的MANIFEST.MF不應該包含org.springframework,因爲它沒有被定義爲一個單獨的模塊。

+0

我從MANIFEST.MF中刪除了org.springframework。 '錯誤[org.springframework.web.context.ContextLoader](MSC服務線程1-2)上下文初始化失敗:org.springframework.beans.factory.BeanCreationException:創建名爲' pluginManager'在ServletContext資源中定義[/WEB-INF/applicationContext.xml]:調用init方法失敗;嵌套的異常是java.lang.ExceptionInInitializerError' –

+0

現在可以訪問彈簧罐。異常可能是由於您的配置。您可以使用pluginManager bean顯示配置 –

+0

您的意思是** ApplicationContext.xml **文件或** Config.groovy **文件中的配置。 –

相關問題