Some background first: Our main objective is to have a reduced development environment in SmartGWT integrated with Maven, to be able to test some of the components and validate if we can use them in our software.
I set the environment, and update the Maven dependencies, but when I deploy the aplication into the Glassfish server, an exception is thrown.
TL;DR: In order to deploy the application, I ran this goal clean compile gwt:compile war:war
, after that, I tried to deploy the project in Glassfish (using "Add/Remove") but it failed and threw the exception below
[2021-03-16T17:07:59.614-0500] [glassfish 4.1] [SEVERE] [AS-WEB-CORE-00108] [javax.enterprise.web.core] [tid: _ThreadID=221 _ThreadName=admin-listener(6)] [timeMillis: 1615932479614] [levelValue: 1000] [[
ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: com.isomorphic.base.InitListener
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5898)
at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
at org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: com.isomorphic.base.InitListener
at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:3302)
at org.apache.catalina.core.StandardContext.addApplicationListener(StandardContext.java:2508)
at com.sun.enterprise.web.TomcatDeploymentConfig.configureApplicationListener(TomcatDeploymentConfig.java:251)
at com.sun.enterprise.web.TomcatDeploymentConfig.configureWebModule(TomcatDeploymentConfig.java:110)
at com.sun.enterprise.web.WebModuleContextConfig.start(WebModuleContextConfig.java:264)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:486)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:163)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5895)
... 49 more
Caused by: java.lang.ClassNotFoundException: com.isomorphic.base.InitListener
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633)
at org.apache.catalina.core.StandardContext.loadListener(StandardContext.java:5446)
at com.sun.enterprise.web.WebModule.loadListener(WebModule.java:1788)
at org.apache.catalina.core.StandardContext.addListener(StandardContext.java:3300)
... 56 more
]]
I have tried some of the solutions related to this exception, but none of them have worked at my end.
I'm working with:
- SmartGWT 6.0 Pro (6.0-p20170526)
- Project based on built-in-ds sample (from SGWT)
- JDK 1.8.0_241
- GWT Libraries 2.8.1
- Eclipse 2020-03 (4.15.0) Build id: 20200313-1211
- Glassfish 4.1
- Apache Maven 3.6.3
Here is the pom.xml configuration I used:
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>co.focuss</groupId> <artifactId>SamplesSGWT</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SamplesSGWT</name> <properties> <!-- Explictly specify a default encoding to avoid relying on the OS locale. --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Artifact versions --> <gwt.version>2.8.0</gwt.version> <smartgwt.version>6.0-p20170526</smartgwt.version> <asm.version>5.0.3</asm.version> <dbcp.version>1.4</dbcp.version> <sqlserver.version>4.2</sqlserver.version> <servlet.api.version>3.0.1</servlet.api.version> <jstl.version>1.2</jstl.version> <junit.version>4.11</junit.version> <slf4j-log4j.version>1.7.12</slf4j-log4j.version> <!-- Maven GWT compiler version and parameters --> <maven.compiler.version>3.3</maven.compiler.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <compiler.style>OBF</compiler.style> <compiler.log.level>INFO</compiler.log.level> <glassfish.port>8188</glassfish.port> <!-- Maven War plugin version and parameters --> <war.plugin.version>2.6</war.plugin.version> </properties> <dependencies> <!-- Core: GWT --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-servlet</artifactId> <version>${gwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwt.version}</version> <scope>provided</scope> </dependency> <!-- Core: SmartGWT --> <dependency> <groupId>com.isomorphic.smartgwt.pro</groupId> <artifactId>smartgwt-pro</artifactId> <version>${smartgwt.version}</version> </dependency> <!-- Core: SmartGWT Sql Tools --> <dependency> <groupId>com.isomorphic.smartgwt.pro</groupId> <artifactId>isomorphic-sql</artifactId> <version>${smartgwt.version}</version> </dependency> <!-- Additional Dependency: required for proper SmartGWT dev tools compilation --> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> <version>${asm.version}</version> <scope>compile</scope> </dependency> <!-- Core: SmartGWT Developer Tools --> <dependency> <groupId>com.isomorphic.smartgwt.pro</groupId> <artifactId>isomorphic-tools</artifactId> <version>${smartgwt.version}</version> </dependency> <!-- Additional SmartGWT Dependencies: DBCP2--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>${dbcp.version}</version> </dependency> <!-- SQL Server JDBC Driver --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc</artifactId> <version>${sqlserver.version}</version> </dependency> <!-- Servlets --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.api.version}</version> </dependency> <!-- JSTL for JSP page --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <!-- Unit Tests: JUnit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <!-- Logging: Slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j-log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-log4j.version}</version> </dependency> </dependencies> <build> <!-- This will produce a war file named SamplesSGWT.war, rather than SamplesSGWT-${project.version}.war. --> <finalName>SamplesSGWT</finalName> <!-- Make sure classes output dir matches hosted webapp WEB-INF/classes folder, so GWT Hosted browser can see the classes. --> <directory>target</directory> <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> <plugins> <!-- Plugin to compile Java code to JavaScript --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>${gwt.version}</version> <executions> <execution> <goals> <goal>compile</goal> <goal>generateAsync</goal> <goal>test</goal> </goals> </execution> </executions> <configuration> <!-- Compiler parameters --> <extraJvmArgs>-Xss1024K -Xmx1024M</extraJvmArgs> <draftCompile>true</draftCompile> <debugSuspend>false</debugSuspend> <logLevel>${compiler.log.level}</logLevel> <style>${compiler.style}</style> <!-- Launch parameters with external server --> <!-- Add the app to Glassfish embedded server and set the server to publsh automatically after each compile --> <noServer>true</noServer> <runTarget>http://localhost:${glassfish.port}/${project.build.finalName}/${project.build.finalName}.html</runTarget> <!-- Build parameters --> <buildOutputDirectory>${project.build.outputDirectory}</buildOutputDirectory> <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp> <copyWebapp>true</copyWebapp> </configuration> </plugin> <!-- Plugin to compile the project. Included here only to specifically define the source and target versions of the project --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.version}</version> <configuration> <source>${maven.compiler.source}</source> <target>${maven.compiler.target}</target> </configuration> </plugin> <!-- Plugin to package in war file --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>${war.plugin.version}</version> <configuration> <webXml>src/main/webapp/WEB-INF/web.xml</webXml> <!-- Exclude what you want from the final artifact here --> <!-- <warSourceExcludes>.gwt-tmp/**</warSourceExcludes> --> </configuration> </plugin> </plugins> </build>
Would you please help me with to find out what is causing this error and how could I solve it.
If you need anything else to review this case, just let me know.
I thank you in advance for all the help you can provide!