<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xmlns:file="http://www.mulesoft.org/schema/mule/file"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
About the XML Configuration File
All Mule applications have an XML file that specify the resources that compose the application. Schemas define the configurable attributes of these resources that are referenced in the XML Configuration file. This is how a Mule application both validates and defines its functional components and their configuration.
Read more below about the Spring schemas and Mule namespaces referenced in the XML Configuration file. |
XML Schema
XML schemas are used to validate functional components in a Mule application. They are specified in the header.
Be sure to specify all the necessary schema files. This can be time-consuming when setting up the configuration file by hand, but importing schema files provides the following time-saving benefits:
-
Auto-completion and context-specific help in your favorite IDE
-
Design-time configuration validation
-
Typed properties
Namespaces
Each Mule module or transport has its own XML schema. When you import a schema, it has its own namespace.
To use the standard Spring elements, import one of two standard Spring namespaces:
-
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
-
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
Use
spring-beans-current
to instruct your application to use the latest version of Spring that is available in Mule. When Spring releases new versions, you need not manually update the namespaces in your application.
Default Namespace
Typically, you set the Mule core schema as the default namespace for your configuration file. This means that any XML element without a prefix will come from the Mule core schema, (mule.xsd
). To set the default namespace schema, specify xmlns
immediately followed by the URL of the Mule schema, without the colon or namespace prefix you set in the previous example (e.g., xmlns
instead of xmlns:jms
):
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
...config...
</mule>
Spring Bean Profile Definitions
Although your configuration files appear to be Mule-specific, they are really just Spring configuration files with Mule-specific extensions. This approach allows you to use anything Spring offers within your Mule configuration, such as beans, factory beans, bean profile definitions, resource loaders, EJBs, JNDI, AOP, and even integration with other software such as Gigaspaces, JBoss Rules, etc.
xmlns:spring="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd"
...
<spring:bean id="myBean" class="com.acme.CoolBean">
<spring:property name="sessionFactory">
<spring:ref local="mySessionFactory" />
</spring:property>
<spring:property name="configuration">
<spring:value>my-config.xml</spring:value>
</spring:property>
</spring:bean>
Merging Configuration Files
If you have multiple configuration files, you can import them into one configuration file so that you only have to specify one configuration. For example:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns=http://www.mulesoft.org/schema/mule/core ....>
<spring:beans>
<spring:import resource="mule-sub-config1.xml" />
<spring:import resource="mule-sub-config2.xml" />
</spring:beans>
...
See Also
-
Learn how Mule creates an application context. See Spring Application Contexts