[ 
https://issues.apache.org/jira/browse/TOMEE-223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13291712#comment-13291712
 ] 

Michael Golubev commented on TOMEE-223:
---------------------------------------

First, thanks for the comment at IDEA youtrack, we probably may do TomEE 
specific deployment of EARs and EJBs as you've pointed out.

Regarding your questions: yes, exploded WARs and EARs deployment works for me 
with all my test artifacts, while archive WARs and EARs deployment - is not.

Have attached sample files of archive WAR and EAR and corresponding deployment 
descriptors.

Here's the examples of working exploded artifacts deployment:

WAR case (working for both TomEE and the essesntial Tomcat):
- deployment descriptor (file name is myExplodedWarCtx.xml):
  <?xml version="1.0" encoding="UTF-8"?>
  <Context path="/myExplodedWarCtx" docBase="C:\path\to\myExplodedWar" />
- the application is available via http at the /myExplodedWarCtx context
- the application is also available via jmx under the object name: 
  
Catalina:j2eeType=WebModule,name=//localhost/myExplodedWarCtx,J2EEApplication=none,J2EEServer=none
 
  
EAR case:
- the EAR folder is named 'myExplodedEar'
- EAR application.xml is:
  <application version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee"; 
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/application_1_4.xsd";>
   <display-name>myAppName</display-name>
    <module id="myIncludedWar-Web">
        <web>
            <web-uri>myIncludedWar</web-uri>
            <context-root>myIncludedWarCtx</context-root>
        </web>
    </module>
  </application>
- deployment descriptor (file name is myExplodedEar.xml):
  <?xml version="1.0" encoding="UTF-8"?>
  <Context docBase="C:\path\to\myExplodedEar" />
- the included WAR is available via http at the myIncludedWarCtx
- the EAR is avaiable via jmx under the object name:
  
Catalina:j2eeType=WebModule,name=//localhost/myExplodedEar,J2EEApplication=none,J2EEServer=none
- the included WAR is available via jmx under the object name:
  
Catalina:j2eeType=WebModule,name=//localhost/myIncludedWarCtx,J2EEApplication=none,J2EEServer=none

Also, the similar problems are reproducable when deployment is performed via 
jmx - archive artifacts deployment fails, 
while exploded artifacts deployment is successful.

archive WAR case:
- jmx call:
-- object name: Catalina:type=MBeanFactory
-- operation name: createStandardContext
-- operation arguments:
   #1: Catalina:type=Host,host=localhost
   #2: /myWarCtx
   #3: C:\path\to\myWar.war 
- exception risen: 
javax.management.RuntimeOperationsException: Exception invoking method 
createStandardContext
        at 
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:309)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
        at 
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
        at 
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
        at 
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
        at sun.rmi.transport.Transport$1.run(Transport.java:159)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
        at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
        at 
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
        at 
sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
        at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown 
Source)
        at 
javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1003)
        <my calling code>
Caused by: javax.management.RuntimeOperationsException: Exception invoking 
method manageApp
        at 
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:309)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at 
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:619)
        at 
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:566)
        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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
        at 
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
        at 
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
        at 
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
        at sun.rmi.transport.Transport$1.run(Transport.java:159)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
        at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
        ... 3 more
Caused by: java.lang.IllegalStateException: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component 
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myWarCtx]]
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:898)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
        at 
org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1501)
        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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
        ... 29 more

archive EAR case:
- jmx call:
-- object name: Catalina:type=MBeanFactory
-- operation name: createStandardContext
-- operation arguments:
   #1: Catalina:type=Host,host=localhost
   #2: /myEar
   #3: C:\path\to\myEar.ear 
- the EAR application is available via jmx under object name:
  
Catalina:j2eeType=WebModule,name=//localhost/myEar,J2EEApplication=none,J2EEServer=none
-- its 'stateName' attribute has 'STOPPED' value and invoking 'start' operation 
does not change the state   
- error printed in the server console:
java.lang.IllegalArgumentException: Document base C:\path\to\myEar.ear does not 
exist or is not a readable directory
        at 
org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:140)
        at 
org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4894)
        at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5074)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
        at 
org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1501)
        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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at 
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:619)
        at 
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:566)
        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.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
        at 
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
        at 
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
        at 
javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
        at 
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
        at 
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
        at 
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
        at sun.rmi.transport.Transport$1.run(Transport.java:159)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
        at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)


exploded EAR case:
- jmx call:
-- object name: Catalina:type=MBeanFactory
-- operation name: createStandardContext
-- operation arguments:
   #1: Catalina:type=Host,host=localhost
   #2: /myExplodedEar
   #3: C:\path\to\myExplodedEar 
- the EAR is avaiable via jmx under the object name:
  
Catalina:j2eeType=WebModule,name=//localhost/myExplodedEar,J2EEApplication=none,J2EEServer=none
-- its 'stateName' attribute has 'STOPPED' value and invoking 'start' operation 
changes the state to 'STARTED' and makes included WAR available via http and 
jmx    

                
> An archive artifact is not deployed when using deployment descriptor
> --------------------------------------------------------------------
>
>                 Key: TOMEE-223
>                 URL: https://issues.apache.org/jira/browse/TOMEE-223
>             Project: TomEE
>          Issue Type: Bug
>            Reporter: Michael Golubev
>
> I experience problems with deployment of archive artifacts (WARs and EARs) to 
> TomEE 1.0.0.
> An archive artifact is not deployed (as I expect) when deployment descriptor 
> is placed into <TomEE home>/conf/Catalina/localhost folder. 
> Exactly the same workflow works for exploded artifacts. 
> Exactly the same workflow (for WAR's) works for both archive and exploded 
> artifcats in just-a-Tomcat. 
> I am developing an integration for TomEE and IntelliJ IDEA and can not easily 
> workaround by using different deployment methods.
> WAR case:
> - deployment descriptor:
>  <?xml version="1.0" encoding="UTF-8"?>
>  <Context path="/myWarCtx" docBase="C:\path\to\myWar.war" />
> - error message:
> java.lang.IllegalStateException: ContainerBase.addChild: start:
> org.apache.catalina.LifecycleException: Failed to start component
> [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myWarCtx]]
>        at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:898)
>        at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
>        at 
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
>        at 
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
>        at 
> org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
>        at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:662)
> EAR case:
> - deployment descriptor:
>  <?xml version="1.0" encoding="UTF-8"?>
>  <Context docBase="C:\path\to\myEar.ear" />
> - error message:
> java.lang.IllegalArgumentException: Document base C:\path\to\myEar.ear
> does not exist or is not a readable directory
>        at 
> org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:140)
>        at 
> org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4894)
>        at 
> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5074)
>        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>        at 
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
>        at 
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
>        at 
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
>        at 
> org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
>        at 
> org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
>        at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:662)
> WAR case looks like obvious downgrade from essential Tomcat, since deployment 
> with the sample deployment descriptor on Tomcat is successful.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to