OK, the information below is a repeatable scenario that describes the
problem we are having.
Eclipse Version:
Version: 3.2.0
Build id: M20060629-1905
MyEclipse Version:
Version: 5.0.1
Build id: 20060810-5.0.1-GA
Geronimo 1.1
Problem:
Hot deploy fails after thrid attempt causing application to be
unusable.
Scenario:
1) Server initializes and creates a copy of the deployed
application
in
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default
- The folder structure that was created is:
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157720883871\Test-1157720883871.war
- Addionally, the config.xml was updated with the following line:
<module name="default/Test/1157720883871/war"/>
- The following messages were written to the console as the server
started
the application:
Geronimo Application Server started
09:08:03,840 INFO [Hot Deployer] Deploying Test.war
09:08:04,605 WARN [TomcatModuleBuilder] Web application . does not
contain a WEB-INF/geronimo-web.xml deployment plan. This may or may
not
be a problem, depending on whether you have things like resource
references that need to be resolved. You can also give the deployer
a
separate deployment plan file on the command line.
Deployed default/Test/1157720883871/war @
http://RI150WS311:8080/Test
-Running the application produced the correct result.
2) Modified the only JSP in the project and saved. This causes the
application change to be hot deployed.
-The following message was written to the console:
09:13:56,665 INFO [Hot Deployer] Redeploying Test.war
09:13:56,962 WARN [TomcatModuleBuilder] Web application . does not
contain a WEB-INF/geronimo-web.xml deployment plan. This may or may
not
be a problem, depending on whether you have things like resource
references that need to be resolved. You can also give the deployer
a
separate deployment plan file on the command line.
09:13:57,619 INFO [DirectoryMonitor] Hot deployer notified that an
artifact was removed: default/Test/1157720883871/war
Redeployed default/Test/1157721236962/war
-The line in config.xml above was changed to the following:
<module name="default/Test/1157721236962/war"/>
-The C:\TestEclipse\eclipse32\geronimo-1.1\repository\default folder
was
changed to the following
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157720883871
--- Empty
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157721236962\Test-1157721236962.war
--- Now contains the deployed application with the changes made
above.
-Running the application produced the correct result. The changes to
the
JSP were rendered correctly.
3) Modified the only JSP a second time and saved.
-The following message appeared on the console:
09:19:58,413 INFO [Hot Deployer] Redeploying Test.war
09:19:58,757 WARN [TomcatModuleBuilder] Web application . does not
contain a WEB-INF/geronimo-web.xml deployment plan. This may or may
not
be a problem, depending on whether you have things like resource
references that need to be resolved. You can also give the deployer
a
separate deployment plan file on the command line.
09:19:59,429 INFO [DirectoryMonitor] Hot deployer notified that an
artifact was removed: default/Test/1157721236962/war
-The line in config.xml was changed to:
<module name="default/Test/1157721598741/war"/>
-The contents of
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default
were changed to:
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157720883871
--- Empty
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157721236962
--- Empty
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157721598741\Test-1157721598741.war
--- Contains the deployed application with the changes made above.
-Running the application produced the correct result. The changes to
the
JSP were rendered correctly.
4) Modified the only JSP a third time and saved.
-No additional messages were written to the console.
-The Line in config.xml was not modified.
-No additional changes to
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default
-The deploy directory
C:\TestEclipse\eclipse32\geronimo-1.1\deploy\Test.war has the correct
JSP
change.
-Running the application does not display the change made to the JSP.
The
previous change is still deployed.
-Conslusion: Hot deploy was ignored on the Third change.
5) Stop server --- successful, no error messages
6) Start server
-The following is the console log from starting the server. Notice
the
exception thrown in relation to the hot deploy failure from the
previous
run.
Booting Geronimo Kernel (in Java 1.4.2_05)...
Module 1/21 geronimo/rmi-naming/1.1/car started in
.500s
Module 2/21 geronimo/j2ee-server/1.1/car started in
1.125s
Module 3/21 geronimo/j2ee-security/1.1/car started in
1.000s
Module 4/21 geronimo/axis/1.1/car started in
.172s
Module 5/21 geronimo/openejb/1.1/car started in
.703s
Module 6/21 geronimo/system-database/1.1/car started in
3.453s
Module 7/21 geronimo/activemq-broker/1.1/car started in
2.032s
Module 8/21 geronimo/activemq/1.1/car started in
.953s
Module 9/21 geronimo/tomcat/1.1/car started in
4.094s
Module 10/21 geronimo/geronimo-gbean-deployer/1.1/car started in
.516s
Module 11/21 geronimo/j2ee-deployer/1.1/car started in
.516s
Module 12/21 geronimo/openejb-deployer/1.1/car started in
.656s
Module 13/21 geronimo/client-deployer/1.1/car started in
.140s
Module 14/21 geronimo/axis-deployer/1.1/car started in
.203s
Module 15/21 geronimo/sharedlib/1.1/car started in
.031s
Module 16/21 geronimo/tomcat-deployer/1.1/car started in
.156s
Module 17/21 geronimo/welcome-tomcat/1.1/car started in
.609s
Module 18/21 geronimo/webconsole-tomcat/1.1/car started in
7.625s
Module 19/21 geronimo/remote-deploy-tomcat/1.1/car started in
.485s
Module 20/21 geronimo/hot-deployer/1.1/car started in
.640s
Module 21/21 default/Test/1157721598741/war started in
.578s
Startup completed in 31 seconds
Listening on Ports:
1099 0.0.0.0 RMI Naming
1527 0.0.0.0 Derby Connector
4201 0.0.0.0 ActiveIO Connector EJB
4242 0.0.0.0 Remote Login Listener
8009 0.0.0.0 Tomcat Connector AJP
8080 0.0.0.0 Tomcat Connector HTTP
8443 0.0.0.0 Tomcat Connector HTTPS
9999 0.0.0.0 JMX Remoting Connector
61616 0.0.0.0 ActiveMQ Message Broker Connector
Started Application Modules:
EAR: geronimo/webconsole-tomcat/1.1/car
RAR: geronimo/activemq/1.1/car
RAR: geronimo/system-database/1.1/car
WAR: default/Test/1157721598741/war
WAR: geronimo/remote-deploy-tomcat/1.1/car
WAR: geronimo/welcome-tomcat/1.1/car
Web Applications:
http://RI150WS311:8080/
http://RI150WS311:8080/Test
http://RI150WS311:8080/console
http://RI150WS311:8080/console-standard
http://RI150WS311:8080/remote-deploy
Geronimo Application Server started
09:29:59,175 ERROR [DirectoryMonitor] Unable to scan file
C:\TestEclipse\eclipse32\geronimo-1.1\deploy\Test.war during
initialization
java.lang.IllegalArgumentException: Invalid id: Test
at
org.apache.geronimo.kernel.repository.Artifact.create(Artifact.java:49)
at
org.apache.geronimo.deployment.hot.DirectoryHotDeployer.getDeploymentTime(DirectoryHotDeployer.java:215)
at
org.apache.geronimo.deployment.hot.DirectoryMonitor.initialize(DirectoryMonitor.java:233)
at
org.apache.geronimo.deployment.hot.DirectoryMonitor.run(DirectoryMonitor.java:206)
at java.lang.Thread.run(Thread.java:534)
09:30:03,175 INFO [Hot Deployer] Deploying Test.war
09:30:03,612 WARN [TomcatModuleBuilder] Web application . does not
contain a WEB-INF/geronimo-web.xml deployment plan. This may or may
not
be a problem, depending on whether you have things like resource
references that need to be resolved. You can also give the deployer
a
separate deployment plan file on the command line.
09:30:04,737 ERROR [GBeanInstance] Problem in doFail of
default/Test/1157722203222/war?J2EEApplication=null,j2eeType=WebModule,name=default/Test/1157722203222/war
java.lang.RuntimeException: java.lang.NullPointerException
at
org.apache.geronimo.tomcat.TomcatContainer.removeContext(TomcatContainer.java:327)
at
org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$4716170d.removeContext(<generated>)
at
org.apache.geronimo.tomcat.TomcatWebAppContext.doFail(TomcatWebAppContext.java:469)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:1010)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:267)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:540)
at
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:374)
at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:512)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:493)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.kernel.config.EditableConfigurationManager$$EnhancerByCGLIB$$2d60c486.startConfiguration(<generated>)
at
org.apache.geronimo.deployment.plugin.local.StartCommand.run(StartCommand.java:67)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:180)
at
org.apache.catalina.core.StandardContext.getWorkPath(StandardContext.java:1789)
at
org.apache.catalina.startup.ContextConfig.destroy(ContextConfig.java:1269)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:281)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4419)
at
org.apache.geronimo.tomcat.TomcatContainer.removeContext(TomcatContainer.java:325)
... 31 more
09:30:04,737 ERROR [GBeanInstanceState] Error while starting; GBean
is
now
in the FAILED state:
abstractName="default/Test/1157722203222/war?J2EEApplication=null,j2eeType=WebModule,name=default/Test/1157722203222/war"
java.lang.IllegalArgumentException: addChild: Child name '/Test' is
not
unique
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:749)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at
org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:313)
at
org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$4716170d.addContext(<generated>)
at
org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:448)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:981)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:267)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:540)
at
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:374)
at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:512)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:493)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.kernel.config.EditableConfigurationManager$$EnhancerByCGLIB$$2d60c486.startConfiguration(<generated>)
at
org.apache.geronimo.deployment.plugin.local.StartCommand.run(StartCommand.java:67)
at java.lang.Thread.run(Thread.java:534)
org.apache.geronimo.kernel.config.LifecycleException: start of
default/Test/1157722203222/war failed
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:529)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:493)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.kernel.config.EditableConfigurationManager$$EnhancerByCGLIB$$2d60c486.startConfiguration(<generated>)
at
org.apache.geronimo.deployment.plugin.local.StartCommand.run(StartCommand.java:67)
at java.lang.Thread.run(Thread.java:534)
Caused by: org.apache.geronimo.kernel.config.InvalidConfigException:
Unknown start exception
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:440)
at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:512)
... 12 more
Caused by: org.apache.geronimo.gbean.InvalidConfigurationException:
Configuration default/Test/1157722203222/war failed to start due to
the
following reasons:
The service
J2EEApplication=null,j2eeType=WebModule,name=default/Test/1157722203222/war
did not start because the doStart method threw an exception.
java.lang.IllegalArgumentException: addChild: Child name '/Test' is
not
unique
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:749)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at
org.apache.geronimo.tomcat.TomcatContainer.addContext(TomcatContainer.java:313)
at
org.apache.geronimo.tomcat.TomcatContainer$$FastClassByCGLIB$$9370b073.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.tomcat.TomcatContainer$$EnhancerByCGLIB$$4716170d.addContext(<generated>)
at
org.apache.geronimo.tomcat.TomcatWebAppContext.doStart(TomcatWebAppContext.java:448)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:981)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:267)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
at
org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:124)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:540)
at
org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:374)
at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:512)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:493)
at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.kernel.config.EditableConfigurationManager$$EnhancerByCGLIB$$2d60c486.startConfiguration(<generated>)
at
org.apache.geronimo.deployment.plugin.local.StartCommand.run(StartCommand.java:67)
at java.lang.Thread.run(Thread.java:534)
at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:403)
... 14 more
09:30:04,847 WARN [Hot Deployer] Unable to start some modules for
C:\TestEclipse\eclipse32\geronimo-1.1\deploy\Test.war
-The following line was added to the config.xml:
<module load="false" name="default/Test/1157722203222/war"/>
-The contents of
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default
were changed to:
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157720883871
--- Empty
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157721236962
--- Empty
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157721598741\Test-1157721598741.war
--- Contains the deployed application with the changes made in step 3
above
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test\1157722203222\Test-1157722203222.war
--- Contains the deployed application with the changes attempted in
step 4
above.
-The application runs but, displays the changes successfully deployed
in
step 3.
Observations:
1) This scenario has been executed several times and follows the
exact
same sequence each time. So, the number of successful hot deployments
follows the exact same pattern.
2) The only work around is to remove all associated lines from
config.xml
and to delete the following folder and all of its content:
C:\TestEclipse\eclipse32\geronimo-1.1\repository\default\Test
3) When observation #2 is performed and the server restarted, the
exception is not thrown, the application is deployed properly with
the
new
changes intact and runs fine.