1

由最新的 Cobertura (svn rev 794) 检测的 EJB 将不会加载。组装和测试可以与未插桩的 EJB 和使用 1.9.4.1 插桩的 EJB 一起正常工作,所以我很确定它与 Cobertura 有关。

我正在尝试使用最新的 Cobertura 来利用 ignoreTrivial 和 ignoreMethodAnnotation 功能。

在容器启动期间记录以下内容:

    Apache OpenEJB 3.2-SNAPSHOT    build: 20101105-01:53
    http://openejb.apache.org/
    INFO - openejb.home = C:\TEMP
    INFO - openejb.base = C:\TEMP
    DEBUG - Using default 'openejb.assembler=org.apache.openejb.assembler.classic.Assembler'
    DEBUG - Using default 'openejb.jndiname.failoncollision=true'
    DEBUG - Using default 'openejb.configurator=org.apache.openejb.config.ConfigurationFactory'
    DEBUG - Using default 'openejb.validation.skip=false'
    DEBUG - Using default 'openejb.deploymentId.format={ejbName}'
    DEBUG - Using default 'openejb.debuggable-vm-hackery=false'
    DEBUG - Using default 'openejb.webservices.enabled=true'
    DEBUG - Using default 'openejb.vendor.config=ALL'  Possible values are: geronimo, glassfish, jboss, weblogic or NONE or ALL
    DEBUG - Using default 'openejb.provider.default=org.apache.openejb.embedded'
    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
    DEBUG - Using default 'openejb.deployments.classpath=true'
    INFO - Using 'openejb.deployments.classpath.include=.*classes/.*'
    DEBUG - Using default 'openejb.deployments.classpath.exclude=.*'
    DEBUG - Using default 'openejb.deployments.classpath.require.descriptor=client'  Possible values are: ejb, client or NONE or ALL
    INFO - Using 'openejb.deployments.classpath.filter.descriptors=true'
    DEBUG - Using default 'openejb.deployments.classpath.filter.systemapps=true'
    DEBUG - Inspecting classpath for applications: 1 urls.
    INFO - Found EjbModule in classpath: C:\EclipseHeliosBase\CoverageTest\testResults\coverage\instrumented\classes
    DEBUG - URLs after filtering: 10
    DEBUG - Annotations path: file:/C:/EclipseHeliosBase/CoverageTest/testResults/coverage/instrumented/classes/
    DEBUG - Searched 1 classpath urls in 47 milliseconds.  Average 47 milliseconds per url.
    DEBUG - Using default 'openejb.deployments.classpath.ear=true'
    INFO - Beginning load: C:\EclipseHeliosBase\CoverageTest\testResults\coverage\instrumented\classes
    DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
    DEBUG - Using default 'openejb.tempclassloader.skip=none'  Possible values are: none, annotations, enums or NONE or ALL
    INFO - Configuring enterprise application: classpath.ear
    DEBUG - No ejb-jar.xml found assuming annotated beans present: classpath.ear, module: classes
    DEBUG - No beans.xml found assuming annotated beans present: classpath.ear, module: classes
    DEBUG - Searching for annotated application exceptions (see OPENEJB-980)
    FATAL - OpenEJB has encountered a fatal error and cannot be started: The Assembler encountered an unexpected error while attempting to build the container system.
    java.lang.reflect.GenericSignatureFormatError
        at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:103)
        at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:233)
        at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:359)
        at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:157)
        at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:367)
        at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:181)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
        at java.lang.reflect.Method.declaredAnnotations(Method.java:695)
        at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:688)
        at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:175)
        at org.apache.xbean.finder.AbstractFinder$Annotatable.<init>(AbstractFinder.java:301)
        at org.apache.xbean.finder.AbstractFinder$MethodInfo.<init>(AbstractFinder.java:433)
        at org.apache.xbean.finder.ClassFinder.<init>(ClassFinder.java:150)
        at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.createInheritedClassFinder(AnnotationDeployer.java:3591)
        at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1074)
        at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:688)
        at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:236)
        at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:259)
        at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:660)
        at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:618)
        at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:381)
        at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:303)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:282)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:130)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:63)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:276)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:255)
        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.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
        at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:71)
        at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:53)
        at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:42)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at test.EJBBridge.initContext(EJBBridge.java:35)
        at test.EJBBridge.<clinit>(EJBBridge.java:13)
        at test.ejb.InheritsEJBTest.helloTest(InheritsEJBTest.java:14)
        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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
        at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
        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.junit.runners.ParentRunner.run(ParentRunner.java:236)
        at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)
        at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:879)

我记得在 Cobertura 的 svn 日志中看到,他们在某个时候转而使用 ASM 3.0 来执行字节码操作,但不确定这是否是罪魁祸首。

有人对如何让这两个玩得很好有任何想法吗?

谢谢,

吉姆

4

0 回答 0