Uploaded image for project: 'Geronimo'
  1. Geronimo
  2. GERONIMO-602

Ear deployment fails when EJB Jar is in subdirectory

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.0-M4
    • 1.0-M4
    • deployment
    • None
    • Windows XP, Code version# 156064

    Description

      When deploying Attached Ear file where EJB is located under sub directory one would get errors like

      java.io.FileNotFoundException: F:\geronimo\geronimo\modules\assembly\target\gero
      nimo-1.0-SNAPSHOT\config-store\17\testApplication\testEJB.jar (The system cannot
      find the path specified)
      at java.io.FileOutputStream.open(Native Method)
      at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
      at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
      at org.apache.geronimo.deployment.util.DeploymentUtil.copyFile(Deploymen
      tUtil.java:92)
      at org.apache.geronimo.deployment.util.DeploymentUtil.copyToPackedJar(De
      ploymentUtil.java:192)
      at org.apache.geronimo.deployment.DeploymentContext.addIncludeAsPackedJa
      r(DeploymentContext.java:238)
      at org.openejb.deployment.OpenEJBModuleBuilder.installModule(OpenEJBModu
      leBuilder.java:288)
      at org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b
      20.invoke(<generated>)
      at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
      at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
      Invoker.java:38)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
      n.java:118)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
      java:710)
      at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:5
      7)
      at org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(RawOperat
      ionInvoker.java:36)
      at org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(Pro
      xyMethodInterceptor.java:92)
      at org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$3
      80f6faf.installModule(<generated>)
      at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfigurati
      on(EARConfigBuilder.java:316)
      at org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLI
      B$$38e56ec6.invoke(<generated>)
      at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
      at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
      Invoker.java:38)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
      n.java:118)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
      java:710)
      at org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:5
      7)
      at org.apache.geronimo.kernel.proxy.RawOperationInvoker.invoke(RawOperat
      ionInvoker.java:36)
      at org.apache.geronimo.kernel.proxy.ProxyMethodInterceptor.intercept(Pro
      xyMethodInterceptor.java:92)
      at org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$
      $661d6fa5.buildConfiguration(<generated>)
      at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:172)
      at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:85)
      at org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.i
      nvoke(<generated>)
      at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
      at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
      Invoker.java:38)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
      n.java:118)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
      java:745)
      at org.apache.geronimo.kernel.Kernel.invoke(Kernel.java:299)
      at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:121)
      at org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.in
      voke(<generated>)
      at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
      at org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethod
      Invoker.java:38)
      at org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperatio
      n.java:118)
      at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.
      java:745)
      at org.apache.geronimo.kernel.Kernel.invoke(Kernel.java:299)
      at org.apache.geronimo.kernel.jmx.MBeanServerDelegate.invoke(MBeanServer
      Delegate.java:117)
      at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnecti
      onImpl.java:1408)
      at javax.management.remote.rmi.RMIConnectionImpl.access$100(RMIConnectio
      nImpl.java:81)
      at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
      (RMIConnectionImpl.java:1245)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(R
      MIConnectionImpl.java:1348)
      at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImp
      l.java:782)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
      at sun.rmi.transport.Transport$1.run(Transport.java:153)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
      60)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport
      .java:701)
      at java.lang.Thread.run(Thread.java:595)

      On investigation it was found that the copy method in the DeploymentUtil.java didn't handle directories and sub-directories properly.

      Modified the code to handle sub-directories properly and have attached the fix for it.

      I am no sure about standard Geronimo uses for File.separatorChar so I have replaced all possible File Separators with System specific separators.

      Can some one review this fix and if have issues then open up discussion.

      Attachments

        1. deployment_sg.txt
          1 kB
          Sandip Ghayal
        2. TestApplication.ear
          4 kB
          Sandip Ghayal

        Activity

          People

            gianny Gianny Damour
            sghayal Sandip Ghayal
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: