2

アプリの1つをGrails1.3.7から2.1.0にアップグレードし、いくつかの追加プラグインをインストールすると、アプリは本番環境で使用されるJBOSSAS5.1にデプロイされなくなります。JBOSSサーバーログから取得するエラーは次のとおりです。

13:39:10,263 ERROR [[/]] Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
            org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Found class org.hibernate.cfg.Mappings, but interface was expected
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
                at org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory.doCreateBean(ReloadAwareAutowireCapableBeanFactory.java:126)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
                at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
                at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:707)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449)
                at org.codehaus.groovy.grails.commons.spring.DefaultRuntimeSpringConfiguration.getApplicationContext(DefaultRuntimeSpringConfiguration.java:153)
                at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:170)
                at org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:127)
                at org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWebApplicationContext(GrailsConfigUtils.java:121)
                at org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:104)
                at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
                at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3910)
                at org.apache.catalina.core.StandardContext.start(StandardContext.java:4393)

以前に発生した別の問題(LifecycleException / ReflectionException:メソッドaddChildが見つかりません...)を解決するために、WEB-INFディレクトリにjboss-classloading.xmlを導入しました。現時点では、これには次の内容が含まれています。

<classloading xmlns="urn:jboss:classloading:1.0" name="ROOT.war" domain="DefaultDomain" top-level-classloader="true" export-all="NON_EMPTY" import-all="true" parent-first="false"> </classloading>

特に、問題のクラスが戦争のlibフォルダー内のjarからではなく、JBOSS libフォルダーからロードされていることがわかったため、現在の問題もクラスのロードに関連していると思われます。

 [Loaded org.hibernate.cfg.Mappings from jar:file:/usr/local/jboss-5.1.0.GA/common/lib/hibernate-core.jar!/]

どうやら、クラスorg.hibernate.cfg.Mappingsは、hibernate-core.jarとアプリのlibフォルダー(hibernate-core-3.6.10.Final.jar)の両方に存在します。したがって、JBOSSにwarファイル内からこの特定のクラスをロードさせるために、さまざまな方法でjboss-classloading.xmlファイルを微調整しようとしましたが、何をしても同じエラー(またははるかに早い段階で異なるエラー)が発生し続けますデプロイサイクルで)。

私の戦争のWEB-INF/libディレクトリの完全な内容:

activation-1.1.jar                        google-collections.jar                     h2-1.3.164.jar                                 sitemesh-2.4.jar
antlr-2.7.7.jar                           grails-bootstrap-2.1.0.jar                 hamcrest-all-1.1.jar                           smartsprites-0.2.1.jar
aopalliance-1.0.jar                       grails-core-2.1.0.jar                      hibernate-commons-annotations-3.2.0.Final.jar  spring-aop-3.1.0.RELEASE.jar
asm-3.1.jar                               grails-crud-2.1.0.jar                      hibernate-core-3.6.10.Final.jar                spring-asm-3.1.0.RELEASE.jar
aspectjrt-1.6.10.jar                      grails-datastore-core-1.0.9.RELEASE.jar    hibernate-ehcache-3.6.10.Final.jar             spring-aspects-3.1.0.RELEASE.jar
aspectjweaver-1.6.10.jar                  grails-datastore-gorm-1.0.9.RELEASE.jar    hibernate-jpa-2.0-api-1.0.1.Final.jar          spring-beans-3.1.0.RELEASE.jar
avalon-framework-4.1.3.jar                grails-datastore-simple-1.0.9.RELEASE.jar  hibernate-validator-4.1.0.Final.jar            spring-binding-2.0.8.RELEASE.jar
axis-1.4.jar                              grails-hibernate-2.1.0.jar                 javase-1.7.jar                                 spring-context-3.1.0.RELEASE.jar
axis-jaxrpc-1.4.jar                       grails-logging-2.1.0.jar                   javassist-3.12.0.GA.jar                        spring-context-support-3.1.0.RELEASE.jar
axis-saaj-1.4.jar                         grails-plugin-codecs-2.1.0.jar             javassist-3.7.ga.jar                           spring-core-3.1.0.RELEASE.jar
axis-wsdl4j-1.5.1.jar                     grails-plugin-controllers-2.1.0.jar        jcaptcha-all-1.0-RC6.jar                       spring-expression-3.1.0.RELEASE.jar
cas-client-core-3.2.1.jar                 grails-plugin-converters-2.1.0.jar         jstl-1.1.2.jar                                 spring-jdbc-3.1.0.RELEASE.jar
cglib-2.2.jar                             grails-plugin-datasource-2.1.0.jar         jta-1.1.jar                                    spring-jms-3.1.0.RELEASE.jar
commons-beanutils-1.8.3.jar               grails-plugin-domain-class-2.1.0.jar       jul-to-slf4j-1.6.2.jar                         spring-js-2.0.8.RELEASE.jar
commons-codec-1.5.jar                     grails-plugin-filters-2.1.0.jar            logkit-1.0.1.jar                               spring-orm-3.1.0.RELEASE.jar
commons-collections-3.2.1.jar             grails-plugin-gsp-2.1.0.jar                mail-1.4.3.jar                                 spring-test-3.1.0.RELEASE.jar
commons-dbcp-1.4.jar                      grails-plugin-i18n-2.1.0.jar               mysql-connector-java-5.1.6.jar                 spring-tx-3.1.0.RELEASE.jar
commons-discovery-0.2.jar                 grails-plugin-log4j-2.1.0.jar              ognl-2.7.3.jar                                 spring-web-3.1.0.RELEASE.jar
commons-el-1.0.jar                        grails-plugin-mimetypes-2.1.0.jar          oro-2.0.8.jar                                  spring-webflow-2.0.8.RELEASE.jar
commons-fileupload-1.2.2.jar              grails-plugin-scaffolding-2.1.0.jar        pjl-comp-filter-1.7.jar                        spring-webmvc-3.1.0.RELEASE.jar
commons-io-2.1.jar                        grails-plugin-services-2.1.0.jar           quartz-1.6.1.jar                               tomcat-catalina-ant-7.0.27.jar
commons-lang-2.6.jar                      grails-plugin-servlets-2.1.0.jar           quartz-2.1.5.jar                               tomcat-embed-core-7.0.27.jar
commons-logging-1.1.jar                   grails-plugin-tomcat-2.1.0.jar             selenium-java-client-driver-1.0.2.jar          tomcat-embed-jasper-7.0.27.jar
commons-pool-1.5.6.jar                    grails-plugin-url-mappings-2.1.0.jar       servlet-api-2.5.jar                            tomcat-embed-logging-juli-7.0.27.jar
commons-validator-1.3.1.jar               grails-plugin-validation-2.1.0.jar         shiro-cas-1.2.0.jar                            tomcat-embed-logging-log4j-7.0.27.jar
concurrentlinkedhashmap-lru-1.2_jdk5.jar  grails-resources-2.1.0.jar                 shiro-core-1.2.0.jar                           utils-0.0.2.jar
core-1.7.jar                              grails-spring-2.1.0.jar                    shiro-ehcache-1.2.0.jar                        validation-api-1.0.0.GA.jar
dom4j-1.6.1.jar                           grails-web-2.1.0.jar                       shiro-quartz-1.2.0.jar                         xpp3_min-1.1.4c.jar
ecj-3.6.2.jar                             grails-webflow-2.1.0.jar                   shiro-spring-1.2.0.jar                         yuicompressor-2.4.2.jar
ehcache-core-2.4.6.jar                    groovy-all-1.8.6.jar                       shiro-web-1.2.0.jar

この問題を回避する方法について誰かが考えを持っていますか?

4

2 に答える 2

2

これにはプラグインがあります:)

http://grails.org/plugin/jbossas

ドキュメントは次の場所にあります。

http://grails-plugins.github.com/grails-jbossas/

これが起こっている理由です:

https://community.jboss.org/thread/156441

休止状態の jar を除外するように JBoss を構成する必要があります。Grails Hibernate jar ではなく、JBoss インストールの common/lib にある JBoss Hibernate jar が最初にロードされます。これは、クラスローダーの順序/設定の問題です。

非常に汚れた解決策は、common/lib の下にある jar を削除するか、推奨されるようにクラスローダーを動作させてそれらの jar を除外することです。

于 2012-08-19T16:15:23.267 に答える
1

プロジェクトに JBoss 6.1 を使用しています。1.3.7 から始めて 2.0.3 に移行し、現在は 2.1 です。

その正確な問題が発生したことはなく、Hibernate との競合も経験していませんが、Quartz との競合は経験しました。

これが私が物事を分離するために使用するものです...

/WEB-INF/jboss-scanning.xml にこれがあります:

<?xml version='1.0' encoding='UTF-8' ?>
<scanning xmlns='urn:jboss:scanning:1.0'>
    <path name='WEB-INF/lib/grails-datastore-gorm-*.jar'>
        <include name='org.grails.datastore' />
    </path>
</scanning>

/WEB-INF/jboss-classloading.xml にこれがあります:

<?xml version="1.0" encoding="UTF-8" ?>
<classloading
        xmlns="urn:jboss:classloading:1.0"
        domain="hotdesk.war"
        export-all="NON_EMPTY"
        import-all="true"
/>

最後に、BuildConfig.groovy に次のように記述します。

dependencies {
    //Added to deal with problems running Quartz on JBoss
    //NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V]
    compile ('cglib:cglib-nodep:2.2')
}

//Added to deal with problems running Quartz on JBoss
//NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V]
grails.war.resources = { stagingDir, args ->
    println "Removing export jars from WEB-INF/lib/"
    delete(file: "${stagingDir}/WEB-INF/lib/cglib-2.2.jar")
}

問題の解決に近づくことを願っています。

于 2012-09-03T01:12:39.183 に答える