mule -app foo
Application Deployment
Starting Mule
Start mule by running <MULE_HOME>/bin/mule
or starting Mule as a service. By default, applications in the <MULE_HOME>/apps
directory will be deployed. You can also designate specific applications to start (separated by the colon - :) and Mule 3.0 will respect the order when starting the applications. In this scenario, only the applications specified will be started.
Start Mule by specifying an app to run:
where foo
is a Mule app at $MULE_HOME/apps/foo
.
From this moment, Mule checks every three seconds for the $MULE_HOME/apps/foo/mule-config.xml
updates. One can update the application jar contents and touch/modify this file to have Mule reload the config and class modifications.
Deploying Applications
Mule applications, either zipped or exploded can be dropped into $MULE_HOME/apps. If Mule is already running, the application will be deployed dynamically.
All applications in Mule are unpacked at runtime and original zip removed. This means, e.g. that dropping a zip file into 'apps' dir will create a new folder with the same name (sans 'zip' extension) and delete the zip. |
A successful app deployment is confirmed by:
-
Having an unpacked application folder in the apps dir. E.g. for
stockTrader.zip
-$MULE_HOME/apps/stockTrader
. -
An anchor file created for a running app, e.g.
$MULE_HOME/apps/stockTrader-anchor.txt
If you wish to store your applications in a different location, you can do this on Unix-based systems by creating a symlink to your application directory from $MULE_HOME/apps
Undeploying Applications
It is recommended one doesn’t delete the application folder directly, but rather an app’s anchor file only:
-
Prevents any interference from the hot-deployment layer and doesn’t leave room for concurrent conflicting actions.
-
Avoids potential application jar locking issues on some operation systems and allows for clean shutdown and undeployment.
E.g. if the stockTrader
app is running (app folder is there as well as the $MULE_HOME/apps/stockTrader-anchor.txt
file, just delete the anchor file to have the app removed from the Mule instance at runtime. Application folder will be removed once the app terminates.
Updating Applications at Runtime
Updating a Mule application at runtime can be a complex change involving class modifications, endpoint modifications (e.g. changing ports, etc), as well as reconfigured flows. As a result, any application update does a graceful app shutdown under the hood and reconfigures itself. In practice, this is pretty transparent to the user and happens within seconds.
There are several ways an application can be updated:
-
By dropping the modifications over an existing exploded app folder and touching the 'master' configuration file (
mule-config.xml
in app root by default). -
By dropping a new zipped version of the app into
$MULE_HOME/apps
dir. Mule will detect this as an existing app update and will ensure a clean redeployment of the app. Note that any modifications to the old app folder are discarded - the new app folder is a clean exploded application from a zip.
As you see, both integrate pretty well with existing build tools, the preference for one over another really depends on established development practices only.
Disabling the Mule Container Mode
If you want to run Mule 3 the legacy 2.x way, edit $MULE_HOME/conf/wrapper.conf
file and replace the following line:
`#Java Main classwrapper.java.mainclass=org.mule.module.reboot.MuleContainerBootstrap`
with this one:
`#Java Main classwrapper.java.mainclass=org.mule.module.boot.MuleBootstrap`
When run in this legacy mode, none of the new application deployment features apply