Problems testing a Session Bean in an embedded glassfish container
bangthebank Nov 11, 2010 11:05 AMHi there,
Sorry to bother you again but I'm still trying to configure the environment for Integration Testing with Arquillian. I think it's almost done (I hope!). Maybe Arquillian tries to read a web.xml file or something like that? Actually, I don't understand why the container tries to "xml parse" the glassfish-embedded-all jar file (see the exceptions below).
Any idea???
I won't post my simple source code since it doesn't seem to be relevant to the problem.
Here how I configured so far (if anyone wants the details, let me know):
Environment: NetBeans 6.9.1, Maven2, Embedded GlassFish for testing.
1) I used a different Maven profile for ejb testing with a dependency to glassfish-embedded-all library, to avoid problems/conflicts with javaee-api (used in the default profile)
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.0.1-b02</version>
</dependency>
2) I use the following arquillian.xml configuration file with a reference to a sun-resources.xml file (and with a non-standard port to avoid any conflict with other services)
<glassfish:container>
<glassfish:bindHttpPort>9988</glassfish:bindHttpPort>
<glassfish:instanceRoot>src/test/glassfish</glassfish:instanceRoot>
<glassfish:autoDelete>false</glassfish:autoDelete>
<glassfish:sunResourcesXml>src/test/glassfish/config/sun-resources.xml</glassfish:sunResourcesXml>
</glassfish:container>
3) The sun-resources.xml file contains definitions for DS pools and resources. This gives the possibility to not include a domain.xml file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems Inc.//DTD Application Server 9.0 Domain//EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_4.dtd">
<resources>
<jdbc-connection-pool datasource-classname="oracle.jdbc.pool.OracleDataSource" res-type="javax.sql.DataSource" name="oracle-thin_edea_efgprd_metadataPool">
<property name="URL" value="jdbc:oracle:thin:@edea:1521:edea" />
<property name="driverClass" value="oracle.jdbc.OracleDriver" />
<property name="Password" value="xxxx" />
<property name="portNumber" value="1521" />
<property name="databaseName" value="edea" />
<property name="User" value="xxxx" />
<property name="serverName" value="edea" />
</jdbc-connection-pool>
<jdbc-resource pool-name="oracle-thin_edea_efgprd_metadataPool" jndi-name="jdbc/efgprd_metadata_edea" />
</resources>
Below the exception fired by Arquillian:
LoginMethodTest(eu.ec.jrc.ies.efas.efg.ejbtests.LoginBeanTest) Time elapsed: 0.002 sec <<< ERROR!
org.jboss.arquillian.impl.event.FiredEventException: java.lang.IllegalStateException: Error launching test eu.ec.jrc.ies.efas.efg.ejbtests.LoginBeanTest public void eu.ec.jrc.ies.efas.efg.ejbtests.LoginBeanTest.LoginMethodTest()
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:68)
at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:157)
at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:244)
at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:207)
at org.jboss.arquillian.junit.Arquillian$5$1.evaluate(Arquillian.java:225)
at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:163)
at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186)
at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
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.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: java.lang.IllegalStateException: Error launching test eu.ec.jrc.ies.efas.efg.ejbtests.LoginBeanTest public void eu.ec.jrc.ies.efas.efg.ejbtests.LoginBeanTest.LoginMethodTest()
at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.invoke(ServletMethodExecutor.java:61)
at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:50)
at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:40)
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
... 31 more
Caused by: java.lang.IllegalStateException: Error launching test at http://localhost:9988/test/ArquillianServletRunner?outputMode=serializedObject&className=efg.ejbtests.LoginBeanTest&methodName=LoginMethodTest. Got 500 (Internal Server Error)
at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.execute(ServletMethodExecutor.java:103)
at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.invoke(ServletMethodExecutor.java:57)
... 34 more
...and this is the exception I see in the output console in NetBeans..I hope it's the relevant part
INFO: Virtual server server loaded system default web module
Nov 11, 2010 4:47:59 PM org.apache.catalina.core.StandardContext callServletContainerInitializers
SEVERE: PWC1420: Error invoking ServletContainerInitializer org.apache.jasper.runtime.TldScanner
org.apache.jasper.JasperException: PWC6177: XML parsing error on file file:/C:/Users/nappodo/MavenRepository/org/glassfish/extras/glassfish-embedded-all/3.0.1-b02/glassfish-embedded-all-3.0.1-b02.jar
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:325)
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:366)
at org.apache.jasper.runtime.TldScanner.scanTld(TldScanner.java:526)
at org.apache.jasper.runtime.TldScanner.scanJar(TldScanner.java:369)
at org.apache.jasper.runtime.TldScanner.scanJars(TldScanner.java:633)
at org.apache.jasper.runtime.TldScanner.scanTlds(TldScanner.java:282)
at org.apache.jasper.runtime.TldScanner.onStartup(TldScanner.java:228)
at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5279)
at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:550)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5190)
at com.sun.enterprise.web.WebModule.start(WebModule.java:499)
at org.apache.catalina.core.ContainerBase.startChildren(ContainerBase.java:1523)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1190)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:975)
at org.apache.catalina.core.ContainerBase.startChildren(ContainerBase.java:1523)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1190)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:529)
at org.apache.catalina.startup.Embedded.start(Embedded.java:946)
at com.sun.enterprise.web.WebContainer.postConstruct(WebContainer.java:583)
at com.sun.hk2.component.AbstractWombImpl.inject(AbstractWombImpl.java:174)
at com.sun.hk2.component.ConstructorWomb$1.run(ConstructorWomb.java:87)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.hk2.component.ConstructorWomb.initialize(ConstructorWomb.java:84)
at com.sun.hk2.component.AbstractWombImpl.get(AbstractWombImpl.java:77)
at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:58)
at com.sun.hk2.component.LazyInhabitant.get(LazyInhabitant.java:107)
at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:60)
at org.glassfish.web.embed.impl.EmbeddedWebContainer.start(EmbeddedWebContainer.java:207)
at org.glassfish.api.embedded.Server$1.start(Server.java:444)
at org.glassfish.api.embedded.Server.start(Server.java:558)
at org.jboss.arquillian.container.glassfish.embedded_3.GlassFishEmbeddedContainer.start(GlassFishEmbeddedContainer.java:135)
at org.jboss.arquillian.impl.handler.ContainerStarter.callback(ContainerStarter.java:52)
at org.jboss.arquillian.impl.handler.ContainerStarter.callback(ContainerStarter.java:41)
at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeSuite(EventTestRunnerAdaptor.java:68)
at org.jboss.arquillian.junit.Arquillian.<init>(Arquillian.java:89)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at org.apache.maven.surefire.junit4.JUnit4TestSet.<init>(JUnit4TestSet.java:45)
at org.apache.maven.surefire.junit4.JUnit4DirectoryTestSuite.createTestSet(JUnit4DirectoryTestSuite.java:56)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:96)
at org.apache.maven.surefire.Surefire.createSuiteFromDefinition(Surefire.java:209)
at org.apache.maven.surefire.Surefire.run(Surefire.java:156)
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.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:296)
... 57 more
Nov 11, 2010 4:47:59 PM org.apache.catalina.core.StandardContext start
SEVERE: PWC1306: Startup of context failed due to previous errors
Nov 11, 2010 4:47:59 PM org.apache.catalina.core.StandardContext start
SEVERE: PWC1305: Exception during cleanup after start failed
org.apache.catalina.LifecycleException: PWC2769: Manager has not yet been started