Details
-
Type:
Bug
-
Status: Open (View Workflow)
-
Priority:
Critical
-
Resolution: Unresolved
-
Affects Version/s: glassfish_1.0.0.CR1
-
Fix Version/s: None
-
Component/s: GlassFish Containers
-
Labels:None
-
Environment:arquillian-junit-container:1.0.0.CR2
arquillian-glassfish-embedded-3.1:1.0.0.CR1
glassfish-embedded-all:3.1
-
Steps to Reproduce:Hide
1. Create META-INF/validation.xml file in src/main/resources folder
2. Configue arquillian-glassfish-embedded-3.1
3. Create an arquillian test
4. Run test.Show1. Create META-INF/validation.xml file in src/main/resources folder 2. Configue arquillian-glassfish-embedded-3.1 3. Create an arquillian test 4. Run test.
Description
Tests success when no META-INF/validation.xml exist,when META-INF/validation.xml exist,produce the following information:
2011-7-25 6:49:06 org.jboss.arquillian.container.impl.client.container.ContainerRegistryCreator getActivatedConfiguration
信息: Could not read active container configuration: null
2011-7-25 6:49:07 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
信息: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
2011-7-25 6:49:07 org.hibernate.validator.util.Version <clinit>
信息: Hibernate Validator null
2011-7-25 6:49:07 org.hibernate.validator.engine.resolver.DefaultTraversableResolver detectJPA
信息: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
2011-7-25 6:49:07 org.hibernate.validator.xml.ValidationXmlParser getValidationConfig
信息: META-INF/validation.xml found.
2011-7-25 6:49:07 org.hibernate.validator.xml.ValidationXmlParser getValidationConfig
严重: Error parsing validation.xml: null
Gliffy Diagrams
-
Hide
- glassfish-ejb-validation.zip
- 5 kB
- Vineet Reynolds
-
- glassfish-ejb-validation/pom.xml 2 kB
- glassfish-ejb-validation/.../GreetingManager.java 1 kB
- glassfish-ejb-validation/.../GreetingManagerBean.java 1 kB
- glassfish-ejb-validation/src/.../ejb-jar.xml 0.4 kB
- glassfish-ejb-validation/.../validation.xml 0.4 kB
- glassfish-ejb-validation/.../GreetingManagerTest.java 4 kB
-
- server.log
- 91 kB
- Liu Jianhong
Activity
- All
- Comments
- Work Log
- History
- Activity
- Links Hierarchy
How to enable embedded glassfish to write log to file?
I use log4j but it not produce log file:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>$
</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
log4j.rootLogger=DEBUG,CONSOLE,FILE
log4j.addivity.org.apache=true
- \u5E94\u7528\u4E8E\u63A7\u5236\u53F0
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=GBK
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=C:/log4j/file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.Encoding=GBK
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
GF uses java logging => copy glassfish/domains/domain1/config/logging.properties somewhere, replace INFO with FINE and run your test with the following setting:
-Djava.util.logging.config.file=/somepath/target/glassfish/config/logging.properties
server.log
java.lang.RuntimeException: Could not setup GlassFish Embedded Runtime
at org.jboss.arquillian.container.glassfish.embedded_3_1.GlassFishContainer.setup(GlassFishContainer.java:134)
at org.jboss.arquillian.container.glassfish.embedded_3_1.GlassFishContainer.setup(GlassFishContainer.java:62)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$4.perform(ContainerLifecycleController.java:125)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$4.perform(ContainerLifecycleController.java:106)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forContainer(ContainerLifecycleController.java:186)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.setupContainer(ContainerLifecycleController.java:105)
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.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.container.impl.client.ContainerDeploymentContextHandler.createContainerContext(ContainerDeploymentContextHandler.java:57)
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.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:68)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:61)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forEachContainer(ContainerLifecycleController.java:179)
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.setupContainers(ContainerLifecycleController.java:60)
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.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67)
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:82)
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.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)
at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54)
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.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90)
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134)
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114)
at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeSuite(EventTestRunnerAdaptor.java:68)
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:76)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.glassfish.embeddable.GlassFishException: PlainTextActionReporterFAILUREorg.jvnet.hk2.config.TransactionFailure: Unable to parse META-INF/validation.xmlCould not change the attributes: Unable to parse META-INF/validation.xml
at com.sun.enterprise.glassfish.bootstrap.ConfiguratorImpl.configure(ConfiguratorImpl.java:71)
at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.configure(GlassFishImpl.java:71)
at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.<init>(GlassFishImpl.java:65)
at com.sun.enterprise.glassfish.bootstrap.StaticGlassFishRuntime$1.<init>(StaticGlassFishRuntime.java:107)
at com.sun.enterprise.glassfish.bootstrap.StaticGlassFishRuntime.newGlassFish(StaticGlassFishRuntime.java:107)
at org.jboss.arquillian.container.glassfish.embedded_3_1.GlassFishContainer.setup(GlassFishContainer.java:130)
... 61 more
oh, it's during GF startup, not deploy.. interesting.
The exception does not appear to have anything to do with an incorrect validation.xml; at least that is the case, going by the runtime behavior of embedded Glassfish. In actuality, embedded Glassfish throws a ClassNotFoundException when the enclosed Hibernate Validator attempts to load the "com.sun.xml.bind.v2.ContextFactory" class. Atlhough the ContextFactory class appears to be present in the glassfish-embedded-all-3.1.jar, it is not located and loaded by the javax.xml.bind.ContextFinder class. More analysis is required.
Raised a ticket in Glassfish JIRA. Will make changes in Arquillian (possibly a documentation update to include the jaxb-osgi dependency from the Glassfish project, in the java.endorsed.dirs system property, only for embedded Glassfish) if suggested in the ticket.
Uploading testcase to reproduce the issue. This also demonstrates a possible workaround of including jaxb-osgi in the java.endorsed.dirs system property when launching surefire tests.
Do you have any output from server.log or similar that might shed some more light on why validation.xml: null?