You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Jacek Laskowski (JIRA)" <ji...@apache.org> on 2008/01/14 13:46:34 UTC

[jira] Updated: (OPENEJB-746) Command line tool Deploy/Undeploy asymmetry

     [ https://issues.apache.org/jira/browse/OPENEJB-746?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacek Laskowski updated OPENEJB-746:
------------------------------------

    Attachment: OPENEJB-746.patch

This is a patch that lets delete files upon undeployment on MS Windows. There're so many articles/bug reports for the issue on MS Windows that I had lots of troubles to wind up to the mental state I was before I decided to go for fixing the issue in OpenEJB. Fortunately, there's JarFileClassLoader in XBean that makes undeployment of jars/resources possible. After making sure all classloaders "disconnect" from the module jar file, jar modules can be deleted with File.delete().

But...

It worked fine until I rebuild the entire openejb sources that blew up with the following exception:

INFO - Undeploying app: C:\.m2\org\apache\openejb\openejb-itests-app\3.0.0-SNAPSHOT\openejb-itests-app-3.0.0-SNAPSHOT
ERROR - Application could not be deployed:  C:\.m2\org\apache\openejb\openejb-itests-app\3.0.0-SNAPSHOT\openejb-itests-app-3.0.0-SNAPSHOT
org.apache.openejb.OpenEJBException: createApplication.failed [C:\.m2\org\apache\openejb\openejb-itests-app\3.0.0-SNAPSHOT\openejb-itests-app-3.0.0-SNAPSHOT]: Error building bean 'Basic
CmpBean'.  Exception: class java.lang.NoSuchMethodError: org.apache.openejb.test.entity.cmp.BasicCmpBean.pcGetManagedFieldCount()I: org.apache.openejb.test.entity.cmp.BasicCmpBean.pcGet
ManagedFieldCount()I
        at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:588)
        at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:336)
        at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:248)
        at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:149)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:293)
        at org.apache.openejb.OpenEJB.init(OpenEJB.java:272)
        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:585)
        at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
        at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:62)
        at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:51)
        at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:40)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at org.apache.openejb.test.IvmTestServer.init(IvmTestServer.java:43)
        at org.apache.openejb.test.TestManager.initServer(TestManager.java:142)
        at org.apache.openejb.test.TestManager.init(TestManager.java:72)
        at org.apache.openejb.iTest.setUp(iTest.java:63)
        at org.apache.openejb.test.TestSuite.run(TestSuite.java:44)
        at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81)
        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:165)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:107)
        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:585)
        at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:285)
        at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:976)
Caused by: org.apache.openejb.OpenEJBException: Error building bean 'BasicCmpBean'.  Exception: class java.lang.NoSuchMethodError: org.apache.openejb.test.entity.cmp.BasicCmpBean.pcGetM
anagedFieldCount()I: org.apache.openejb.test.entity.cmp.BasicCmpBean.pcGetManagedFieldCount()I
        at org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:64)
        at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:491)
        ... 33 more
Caused by: java.lang.NoSuchMethodError: org.apache.openejb.test.entity.cmp.BasicCmpBean.pcGetManagedFieldCount()I
        at openejb.org.apache.openejb.test.entity.cmp.BasicCmpBeanX.<clinit>(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.load(EnterpriseBeanBuilder.java:366)
        at org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.loadClass(EnterpriseBeanBuilder.java:346)
        at org.apache.openejb.assembler.classic.EnterpriseBeanBuilder.build(EnterpriseBeanBuilder.java:218)
        at org.apache.openejb.assembler.classic.EjbJarBuilder.build(EjbJarBuilder.java:52)
        ... 34 more

Apply the patch and run mvn test -Dtest=iTest -Ditest=ApplicationTest in container/openejb-core to have it appeared.

It looks Dain had the same issue almost one year ago when he worked on the cmp2jpa conversion - Do mapped superclasses work at all in OpenJPA?  (http://www.mail-archive.com/open-jpa-dev@incubator.apache.org/msg02045.html). I don't think I can tackle the issue without Dain's or Daves' help so I'm reassigning the issue to Dain hoping he can fix it easily ;-)

Very nice and useful tool that helped me to pinpoint what held jar modules is described at Tool for Diagnosing Failed GlassFish Redeployments/Undeployments on Windows due to Locked JARs (http://blogs.sun.com/quinn/entry/tool_for_diagnosing_failed_glassfish). It worked beautifully.

> Command line tool Deploy/Undeploy asymmetry 
> --------------------------------------------
>
>                 Key: OPENEJB-746
>                 URL: https://issues.apache.org/jira/browse/OPENEJB-746
>             Project: OpenEJB
>          Issue Type: Bug
>          Components: deployment, tools
>    Affects Versions: 3.0-beta-1
>            Reporter: David Blevins
>            Assignee: Jacek Laskowski
>             Fix For: 3.0-beta-2
>
>         Attachments: OPENEJB-746.patch
>
>
> If deploy copies the jar into apps/ then undeploy should delete it.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.