JBoss for during JSF 1.2 initialization after project conversion to Maven

0

I have a project running perfectly on JBoss AS 5.1 , however this same project was not designed using Maven . This means that the dependency management process is still manual and build is done by Ant.

The project is not very large and does not have many dependencies. So I decided to "convert" it to Maven. So I did the following steps to convert it all:

  • I created an empty project with the Maven structure;
  • I copied the source codes (without making any changes) to the respective directories ( src/java , src/resources and src/webapp );
  • Of course, a lot of things did not compile, so I added in% dependence to the dependency on the same versions of the "original" project;
  • After adding all dependencies, the project compiled!
  • So I went deploy on JBoss AS 5.1. When JBoss will initialize the Java Server Faces to the context of my application, JBoss simply hangs. This means that it is running, but locked in the following line:

    ...    
    INFO  [config] Initializing Mojarra (1.2_16-20110421-1728-SNAPSHOT) for context '/minhaApp'
    

    After ~ 8 minutes, an OutOfMemoryError explodes!

    15:34:06,497 WARN  [ClassLoaderManager] Unexpected error during load of:javax.el.ELResolver
    java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:45)
        at java.lang.StringBuffer.<init>(StringBuffer.java:91)
        at java.net.URLStreamHandler.toExternalForm(URLStreamHandler.java:473)
        at java.net.URL.toExternalForm(URL.java:901)
        at org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getRealURL(ZipEntryHandler.java:259)
        at org.jboss.virtual.plugins.context.DelegatingHandler.getRealURL(DelegatingHandler.java:222)
        at org.jboss.virtual.VFSUtils.getRealURL(VFSUtils.java:1064)
        at org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.getProtectionDomain(VFSClassLoaderPolicy.java:651)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:547)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
        at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:134)
        at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
        at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:452)
        at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:251)
        at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:150)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:265)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1119)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:798)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:63)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:572)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
    15:34:06,498 ERROR [[/minhaApp]] Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
    com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! GC overhead limit exceeded
        at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:214)
        at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:200)
        at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:60)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3910)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4393)
        at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)
        at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142)
        at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461)
        at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118)
        at org.jboss.web.deployers.WebModule.start(WebModule.java:97)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
        at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
        at com.sun.proxy.$Proxy38.start(Unknown Source)
        at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
        at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
        at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
        at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
        at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
        at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
        at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286)
        at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
        at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
        at org.jboss.system.ServiceController.doChange(ServiceController.java:688)
        at org.jboss.system.ServiceController.start(ServiceController.java:460)
        at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163)
        at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99)
        at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
        at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
        at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
        at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098)
        at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
        at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
        at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
        at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781)
        at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
        at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
        at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
        at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
        at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361)
        at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
        at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631)
        at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082)
        at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822)
        at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
        at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306)
        at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271)
        at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461)
        at org.jboss.Main.boot(Main.java:221)
        at org.jboss.Main$1.run(Main.java:556)
        at java.lang.Thread.run(Thread.java:662)
    Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:45)
        at java.lang.StringBuffer.<init>(StringBuffer.java:91)
        at java.net.URLStreamHandler.toExternalForm(URLStreamHandler.java:473)
        at java.net.URL.toExternalForm(URL.java:901)
        at org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getRealURL(ZipEntryHandler.java:259)
        at org.jboss.virtual.plugins.context.DelegatingHandler.getRealURL(DelegatingHandler.java:222)
        at org.jboss.virtual.VFSUtils.getRealURL(VFSUtils.java:1064)
        at org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.getProtectionDomain(VFSClassLoaderPolicy.java:651)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:547)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
        at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:134)
        at org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
        at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:452)
        at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:251)
        at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:150)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:265)
        at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1119)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:798)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:441)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:63)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:572)
        at org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:532)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:530)
        at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:507)
    

    Before the error reported above, Hibernate goes perfectly , validates all tables, Hibernate Envers also goes up and checks the audit tables. All perfect, only crashes even when it arrives at the time of JSF startup and only hangs to the context of my application . For the admin-console context, it initializes JSF perfectly:

    It seems that there is a problem with el-resolver , but I looked for problems like this on Google and found nothing.

    ...
    INFO  [TomcatDeployment] deploy, ctxPath=/admin-console
    INFO  [config] Initializing Mojarra (1.2_16-20110421-1728-SNAPSHOT) for context '/admin-console'
    INFO  [TomcatDeployment] deploy, ctxPath=/
    ...
    

    What I have tried to solve this problem, however unsuccessful :

    • Roll back versions of JSF and Facelets;
    • Change scope in JSF pom.xml to compile;
    • Deploy on Windows, Linux machines using Java 32 or 64 bit;
    • Using JavaEE 7;

    I have tried so many other things that I do not remember. My pom.xml looks like this:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                                 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>br.com.cpny</groupId>
        <artifactId>minhaApp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>Minha Aplicação</name>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>6.0</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>com.sun.facelets</groupId>
                <artifactId>jsf-facelets</artifactId>
                <version>1.1.14</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>org.richfaces.framework</groupId>
                <artifactId>richfaces-impl</artifactId>
                <version>3.3.3.Final</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>org.richfaces.ui</groupId>
                <artifactId>richfaces-ui</artifactId>
                <version>3.3.3.Final</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>org.jboss.seam</groupId>
                <artifactId>jboss-seam</artifactId>
                <version>2.2.2.Final</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>3.3.1.GA</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>3.3.1.ga</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>3.1.0.GA</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-annotations</artifactId>
                <version>3.4.0.GA</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-commons-annotations</artifactId>
                <version>3.1.0.GA</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.jboss.envers</groupId>
                <artifactId>jboss-envers</artifactId>
                <version>1.2.2.GA-hibernate-3.3</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.1</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.0</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.14</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.drools</groupId>
                <artifactId>drools-core</artifactId>
                <version>5.0.1</version>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>org.drools</groupId>
                <artifactId>drools-compiler</artifactId>
                <version>5.0.1</version>
                <scope>compile</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <finalName>minhaApp</finalName>
    
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <showDeprecation>true</showDeprecation>
                        <optimize>true</optimize>
                    </configuration>
                </plugin>
    
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <!-- Repositório JBoss / Hibernate / JPA / EHCache -->
            <repository>
                <id>repository.jboss.org-public</id>
                <name>JBoss repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public</url>
            </repository>
    
            <!-- Sourceforge -->
            <repository>
                <id>sourceforge</id>
                <url>http://oss.sonatype.org/content/groups/sourceforge/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
    
            <!-- EHCache -->
            <repository>
                <id>terracotta-releases</id>
                <url>http://www.terracotta.org/download/reflector/releases</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
    
    </project>
    
        
    asked by anonymous 19.03.2014 / 19:42

    1 answer

    0

    Problem solved!

    My application uses some frameworks and libraries. One such framework is JBoss Seam , in which the version I'm using is 2.2.2.Final . In this version of JBoss Seam, the el-api.jar library is dependency and soon, when building my project, this library is bundled together with my war in the WEB-INF/lib folder. In pom.xml the JBoss Seam statement looks like this:

    <dependency>
        <groupId>org.jboss.seam</groupId>
        <artifactId>jboss-seam</artifactId>
        <version>2.2.2.Final</version>
        <scope>compile</scope>
    </dependency>
    

    The problem occurs because there is also another library (I do not know if same version) in the <JBOSS_HOME>/common/lib folder. So by deploying my application, my library probably conflicts with the library that comes with JBoss, resulting in the error reported in the question.

    The solution is simple, just add the exclusion of that library in pom.xml in the JBoss Seam statement as follows:

    <dependency>
        <groupId>org.jboss.seam</groupId>
        <artifactId>jboss-seam</artifactId>
        <version>2.2.2.Final</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <groupId>javax.el</groupId>
                <artifactId>el-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    After doing this the el-api.jar library will no longer be bundled together with war and deploy is normally done . But as soon as I deployed and tried to access the first page, guess what? Another error . This time the error was:

    ERROR [facelets.compiler] (http-localhost%2F127.0.0.1-8180-1) Missing Built-in Tag Libraries! Make sure they are included within the META-INF directory of Facelets' Jar
    ERROR [facelets.viewhandler] (http-localhost%2F127.0.0.1-8180-1) Error Rendering View[/login.xhtml]
    javax.el.ELException: Function 'rich:element' not found
        at org.jboss.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:187)
        at org.jboss.el.parser.SimpleNode.accept(SimpleNode.java:129)
        at org.jboss.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:138)
        at org.jboss.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:152)
        at org.jboss.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:206)
    

    This error points to something related to facelets. Reading literally, it points to some missing tag library . But that is not the cause of the problem. This is some facelets bug in version 1.1.14 (which I was using). I made the upgrade to version 1.1.15 and the problem stopped. So just update the version of facelets to fix this second problem.

    The declaration of facelets in pom.xml would look like this:

    <dependency>
        <groupId>com.sun.facelets</groupId>
        <artifactId>jsf-facelets</artifactId>
        <version>1.1.15</version>
        <scope>compile</scope>
    </dependency>
    

    So far the application is working perfectly!

        
    20.03.2014 / 18:50