[
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