ESB Runtime
Mule ESB 3.7.0 Release Notes
Hardware and Software Recommendations
Mule 3.7 was validated on the following; however earlier OS versions can work:
Java |
Oracle JRE 1.7.0 (recommended: JRE 1.7.0_79/80), Oracle JRE 1.8 |
OS |
Mac OS 10.10.0, HP-UX 11i V3, AIX 7.1, Windows 2012 R2 Server, Windows 8.1, Solaris 11.2, RHEL 7.0, Ubuntu Server 14.04 |
Hardware |
|
New Features and Functionality
-
DataWeave (EE only) MuleSoft’s new data transformation and query language
-
Kryo serializer (EE only)
-
WS Consumer support for WS-Security encryption and signatures.
-
Non-blocking processing strategy for HTTP proxy
-
Lifecycle improvements
-
Connect to databases dynamically by using MEL expressions in the database configuration
-
Java 8 support
-
Spring 4.1.6 support
-
CXF 2.7.15 support
-
Libraries updates due to vulnerabilities
-
Database multitenancy
-
More than 100 bug fixes
DataWeave Language and Transformer
This release introduces a new language, called DataWeave, which is a simple, powerful way to query and transform data inside of Mule. It provides JSON-like language that’s purposefully built to make writing transformations as fast as possible and highly maintainable over the long term. It supports a variety of transformations, from simple 1 to 1 mappings, to more elaborate mappings including normalization, grouping, joins, partitioning, pivoting and filtering.
The language is tightly integrated with Mule ESB and Anypoint Studio. There is a DataWeave Transformer that allows you to use the language to query and transform data. It fully supports DataSense, allowing you to leverage metadata from connectors, schemas and sample documents to more easily design your transformations. DataSense provides content assist while you are coding and scaffolds your mappings to help make writing transformations fast and easy. The editor also provides real time feedback as you code, processing sample inputs into sample outputs that are constantly updated as you write your transform.
DataWeave replaces our current DataMapper component as our recommended way of doing data transformation. It comes with a number of advantages over DataMapper, including:
-
Support for more complex transformations
-
Improved performance
-
Better error reporting
-
Support for multiple inputs
-
Support for larger than memory payloads
-
Random access to input documents
Currently there are some features of DataMapper that DataWeave does not yet support and which will be addressed in future releases, including:
-
A graphical drag and drop editor for creating DataWeave transforms
-
Excel support
DataMapper continues to be fully supported in all current and future versions of Mule 3.x.
Non-Blocking Processing Strategies
A new non-blocking processing strategy for HTTP proxy scenarios. This enables higher API scalability with minimal tuning inside the runtime. To support this, there is also a new direct threading profile and a new configuration option to set the default threading profile on the <configuration> element.
Not all Mule components fully support non-blocking operations.
HTTP Connector
The HTTP connector contains may additional security options for the request element, including:
-
NTLM authentication support
-
Preemptive authentication support
-
SNI support
Additional Improvements
-
Set payload, set-variable, set-property and set-session-variable now support setting the mimeType and encoding.
-
Support for custom serializers and a new Kryo serializer which boosts performance for HA, VM Queues and ObjectStore
-
Connect to databases dynamically by using MEL expressions in the database configuration
-
WS-Consumer support for signing and encrypting payloads with WS-Security
-
Many internal libraries have been upgraded, most notably Spring has been upgraded to Spring 4.1.6 and CXF has been upgraded to 2.7.15.
-
Java 8 is now an officially supported runtime, in addition to Java 7
-
Lifecycle improvements: the object lifecycle is now applied on registered objects in the correct order, taking into account both object types and declared dependencies. Also, dependency injection is now supported on all registered objects as defined by JSR-330. Non registered objects can also be injected through the new Injector API. For more information, see Lifecycle Improvements in the Migration Guide section.
-
More than 100 bug fixes
Bundled Runtime Manager Agent
This version of Mule ESB comes bundled with the Runtime Manager Agent Plugin version 1.1.0.
Enterprise Edition Fixed Issues
Issue | Description |
---|---|
EE-4499 |
VM does not honor XA transaction timeout in cluster |
EE-4481 |
ClusterCoreExtension putClusteringTicket fails when .mule directory doesn’t exist |
EE-4472 |
Application folder not being deleted when deployment fail doesn’t allows to deploy the app again with MMC. |
EE-4443 |
VM transaction timeout not being set on cluster |
EE-4430 |
[Regression] Enricher failing with null payload and recordVars as target |
EE-4414 |
Connectors using @RequiresEnterpriseLicense throws ClassNotFoundException on mule-ce |
EE-4389 |
HazelcastManager holds references to HazelcastObjectStore instances after undeploying applications |
EE-4367 |
Issue unzipping Mule plugin |
EE-4297 |
Disable/Remove Alert Definition from MMC agent does not stop the alert from firing |
Community Edition Fixes
Issue | Description |
---|---|
MULE-8693 |
XA transaction must set tx timeout in XA resources |
MULE-8687 |
Passing a JaxB annotated POJO to the HTTP listener response is throwing a transformer error |
MULE-8683 |
Polling from MS SQL Server produces exception when streaming is enabled |
MULE-8682 |
Mule execution folder .mule should be created before every other deployment service |
MULE-8679 |
TestLogConfigurationHelper should decode file path |
MULE-8666 |
Set mime type correct for common files with FTP/File connectors |
MULE-8661 |
Typo in AbstractFlowConstruct |
MULE-8660 |
Commit failure does not trigger exception strategy |
MULE-8656 |
Database Connector artifact located in registry no longer implements Testable and DataSense interfaces |
MULE-8654 |
Can’t use redelivery policy with FTP |
MULE-8653 |
HTTP Listener header section does not allow big headers or query params |
MULE-8651 |
HTTP Requester fails when sending big attachments over HTTPS |
MULE-8648 |
FTP requester is not validating single files |
MULE-8643 |
scatter-gather: can’t access session and flow variables modified when an event failed |
MULE-8635 |
ConcurrentModificationException when hot deploying |
MULE-8632 |
HTTP Listener Connector reject a GET and DELETE that contains a body. |
MULE-8628 |
HTTP Connector should not send/respond http.* properties |
MULE-8612 |
Polling watermark MIN/MAX selectors do not make use of the Comparable interface correctly |
MULE-8606 |
Can’t use redelivery policy |
MULE-8604 |
Incorrect error processing on Jetty transport |
MULE-8603 |
keepAlive is not working correctly in the HTTP requester |
MULE-8602 |
ObservableList doesn’t work with Collections#reverse |
MULE-8594 |
Content-type is not set on HTTP responses |
MULE-8587 |
Add a Base64 decoded which doesn’t automatically unzip |
MULE-8578 |
The Json-to-Object transformer not change the mimeType correctly. It should set application/json |
MULE-8576 |
Inbound properties copied to outbound properties not maintain their datatypes |
MULE-8573 |
Add support for expressions in the authentication configuration of the HTTP connector |
MULE-8572 |
Dependency injection fails when injection candidate is registered on domain |
MULE-8569 |
Applications and corresponding domains should share the same OptionalObjectController |
MULE-8565 |
Add support for preemptive basic authentication in the HTTP module |
MULE-8564 |
Fix jffi version |
MULE-8561 |
DB connector does not correctly detects query types |
MULE-8560 |
Add support in new DB connector for MERGE operation |
MULE-8559 |
Deployment failure if two apps are both using BTM in the same Mule server |
MULE-8553 |
Add max-send-buffer-size entry in wrapper.conf |
MULE-8547 |
Unused resolvePath method in DefaultHttpListenerConfig |
MULE-8533 |
MBeans/JMX Memory Leak on vanilla Mule ESB Standalone |
MULE-8529 |
Async Loggers stop working after reconfiguration |
MULE-8518 |
Provide access to client certificate on 2-way TLS authenticated connections |
MULE-8512 |
Allow default processing strategy to be configured per app |
MULE-8510 |
Setting a NullPayload in a property must behave as setting null |
MULE-8482 |
Provide a builder for HttpRequesterConfig interface |
MULE-8481 |
WSConsumerConfig should use the HttpRequesterConfig interface rather than the internal implementation |
MULE-8471 |
Race condition on <reconnect-forever> and deployment lifecycle |
MULE-8470 |
StaxSource NPE - Location can be null |
MULE-8441 |
Add a way to inject all available core extensions in a core extension |
MULE-8430 |
Domain creates .mule folder on CWD instead of MULE_HOME |
MULE-8429 |
Error with RedShift parameterized queries |
MULE-8420 |
FileMessageDispatcher return subfolders when no files found |
MULE-8417 |
Domain deployment fails on path with spaces |
MULE-8416 |
Domains are not well disposed and get reused on redeploy. |
MULE-8411 |
XmlToXMLStreamReader does not support OutputHandler as source type |
MULE-8405 |
Unable to use a keystore with $ in its path |
MULE-8403 |
Web Service Consumer Does not Support OutputHandler |
MULE-8387 |
PGP decryption fails when the key used to sign the message doesn’t match the key used to encrypt it |
MULE-8384 |
Session vars "lost" in foreach that uses outbound endpoint |
MULE-8383 |
log4j2.xml not being loaded during functional test case |
MULE-8382 |
Can’t uncompress zip files containing no entries for folders |
MULE-8370 |
ObjectAlreadyExistsException when using splitter and until-successful |
MULE-8365 |
json validate-schema doesn’t pick up a schema if it is in the application classpath |
MULE-8361 |
Race condition in ExpressionConfig |
MULE-8356 |
Source attribute in http requester not working when payload is null |
MULE-8349 |
Incorrect anchor file content |
MULE-8345 |
Global transformer not initialized when called from message.getPayload(Class<T>) |
MULE-8341 |
Domain redeployment fails with zip file closed |
MULE-8340 |
HTTPS connectors interfere with each other |
MULE-8338 |
HTTP listener fails when receiving empty request with content type x-www-form-urlencoded |
MULE-8318 |
WS consumer not evaluating flow vars in the serviceAddress when used with the new HTTP connector |
MULE-8311 |
Schema locations for includes are not being fixed. |
MULE-8310 |
FTP client not timing out |
MULE-8307 |
HTTP requester throws timeout errors with POST request |
MULE-8306 |
DB Drivers should be removed from DriverManager when MuleApplicationClassLoader is disposed. |
MULE-8305 |
ObjectToHttpClientMethodRequest ignoring filename on file attachments |
MULE-8303 |
ClassCastException when setting a MEL expression in the config-ref of a Connector’s call |
MULE-8300 |
Using set-variable does not removes variables when assigned value is null |
MULE-8296 |
Undeployment does NOT release pooled database connections |
MULE-8284 |
Http Listener allows inexistent keystore |
MULE-8277 |
OAuth2 postAuthorize() with an expired token fails even if token was refreshed |
MULE-8262 |
Comparator not finding the class in the right classloader |
MULE-8261 |
Avoid to set the same message listener on the message consumer |
MULE-8251 |
HTTP connector throws exception when WSC response is received |
MULE-8247 |
SFTP inbound-endpoint autoDelete="false" does not work |
MULE-8230 |
SFTP connect hangs in pre-authenticated phase |
MULE-8226 |
JMS Durable Subscriber - unexpected behavior in Mule HA Cluster - no failover |
MULE-8206 |
Inconsistent implementation of streamingMode="NEVER" between listener and requestor. |
MULE-8201 |
Exception in HTTP listener when path="/" and basePath="/" |
MULE-8192 |
Outbound endpoints should be correctly disposed when an app with shared resources is undeployed or redeployed. |
MULE-8189 |
Improve HTTP listener logging for usability |
MULE-8184 |
HTTP Listener Server should return Method not supported |
MULE-8181 |
Problem sending outbound attachments in HTTP requester |
MULE-8178 |
Default HTTPS configuration in requester not working correctly |
MULE-8177 |
HttpListener ParameterMap should behave as a Map |
MULE-8172 |
Cannot log to application log for a failed deployment |
MULE-8162 |
HTTP listener fails with NPE when the message is filtered out |
MULE-8146 |
Grizzly thread leaks |
MULE-8142 |
HTTP Listener is storing only the first part of a MultiPart request as attachment |
MULE-8139 |
Thread names are i) lacking app prefix ii) duplicated between http inbound and outbound |
MULE-8130 |
Null pointer exception on the first request causes the listener to close the connection. |
MULE-8127 |
HTTP Listener Module is not adding the WWW-Authenticate header field in the response |
MULE-8124 |
Resource Not Found in HTTP should return a body with a clear message |
MULE-8118 |
Max connections exceeded in the outbound part should block instead of failing |
MULE-8107 |
Default maxThreads is 128 when worker-threading-profile isn’t present but 16 when it is. |
MULE-8105 |
New HTTP Module doesn’t support queries paremters without value |
MULE-8101 |
HTTP requester not sending query parameters when processing a redirect under HTTPS |
MULE-8094 |
HTTP Listener with Basic Auth should return status code 401 when authentication fails |
MULE-7990 |
Create Serialization API |
MULE-7017 |
initialise() phase is triggered before all objects are registered |
MULE-6427 |
#[payload == null] is not true when the payload is NullPayload |
MULE-5849 |
Setting encoding attribute on a transformer has no effect |
MULE-5382 |
XSL Transformation fails with xsl:result-document on repeated transformations |
Community Edition Known Issues
Issue | Description |
---|---|
MULE-8751 |
Missing NamespaceHandler entry for non-blocking-processing-strategy |
MULE-8743 |
Mule registry failing to lookup sub-flows |
MULE-8714 |
DISCARD or DISCARD_OLDEST policies not working as expected when used in the Threading Profile of HTTP Listeners |
MULE-8704 |
Exception thrown in Mule Shutdown Hook |
MULE-8703 |
Logger categories are not working properly. From a custom message processor at debug level is not being output in any log file. |
MULE-8697 |
Class org.mule.routing.EventGroup has a static field (hasNoCommonRootId) that may cause aggregation to fail |
MULE-8652 |
MuleContext’s ExpressionLanguage is not properly initialized |
MULE-8605 |
Using Preemptive basic authentication in the new HTTP Module uses two request where the User/Pass are invalid |
Hardware and Software System Requirements
MuleSoft recommends a minimum of 4 GB RAM on a developer workstation. As applications become complex, consider adding more RAM. You can contact MuleSoft with any questions you may have about system requirements.
Deprecated in this Release
Issue | Description |
---|---|
MULE-8260 |
As ASM 3.3.1 is not fully compliant with Java 8, the class in the packages org.mule.util.scan and org.mule.util.scan.annotations have been deprecated, however you can use them under Java 7. |
MULE-7588 |
Lifecycle has been fixed:
|
MULE-8411 |
@deprecated As of 3.7.0, use \{@link #toXMLStreamReader(javax.xml.stream.XMLInputFactory, org.mule.api.MuleEvent, Object)} instead. |
MULE-8469 |
NoActionTransformer class inside TCK test folder |
MULE-7742 |
class AsyncMessageProcessorWorker |
EE-4371 |
Timeout attribute in <ee:multi-transaction> component |
Updated Libraries
Issue | Description |
---|---|
MULE-8298 |
Spring dependency was upgraded to version 4.1.6.RELEASE. The org.springmodules:spring-modules-cache dependency was removed as is not needed anymore. |
MULE-8548 |
Upgrade Spring security to 4.0.1.RELEASE. |
MULE-8315 |
The following Apache Tomcat libraries were upgraded from version 6.0.29 to version 6.0.41: annotations-api, coyote, el-api, jasper, jasper-el, jsp-api, juli. Removed catalina-6.0.29.jar as is not needed anymore. |
MULE-8308 |
jruby was upgraded to version 1.7.4 because of a security issue with previous version. Artifact jruby-complete was removed and replaced with jruby-core and its dependencies. |
MULE-8297 |
CXF was upgraded to version 2.7.15. Note 1: If you need to use URI parameters add an org.apache.cxf.interceptor.URIMappingInterceptor interceptor to the CXF service in your flow, see Apache CXF. Note 2: jibx binding could have some issues if you use it under Java 8. |
MULE-7941 |
Upgraded Quartz to version 2.2.1. |
MULE-8260 |
As ASM 3.3.1 is not fully compliant with Java 8, the class in the packages org.mule.util.scan and org.mule.util.scan.annotations have been deprecated, however you can use them under Java 7. |
MULE-8583 |
async-http-client was upgraded to 1.9.21. |
MULE-8639 |
Grizzly was upgraded to 2.3.21. |
MULE-8549 |
Update C3P0 to version 0.9.5 |
MULE-8645 |
Remove jasper-jdt-6.0.29.jar from Mule distributions |
Migration Guide
DataMapper is now an optional plugin that must be installed inside the Mule runtime for applications that are using it.
MULE-8583 also introduced hostname validation in the HTTP requester since the upgrade included the fix for this async-http-client security vulnerability. This means that seemingly valid certificates for HTTPS connections in older versions could now be rejected if they contain no Subject Alternative Name extension matching the host of the request.
Issue | Description |
---|---|
EE-4333 |
mule-transport-axis was removed from standalone and embedded EE distributions. Following libraries were also removed as they are not required anymore: axis-1.4.jar, commons-discovery-0.4.jar and geronimo-jaxrpc_1.1_spec-1.1.jar |
SEC-240 |
Mule ESB 3.7.0 requires version of Anypoint Enterprise Security to be 1.5.0 or greater |
EE-4441 |
The wrapper.conf file now contains default garbage collection and memory settings configured to improve performance in an environment with 2 GB+ memory. If you need to run Mule with less than 2 GB of RAM, edit the wrapper.conf file. |
EE-4346 |
To migrate DataMapper applications, install the DataMapper plugin manually following these steps:
|
Mule information:
Issue | Description |
---|---|
MULE-8340 |
TLS configuration is not mapped anymore to the default JVM system properties. In order to keep this behavior, define the following system property: mule.tls.disableSystemPropertiesMapping=false |
MULE-8367 |
Property http.relative.path was added to the inbound properties of the HTTP listener. This property reflects the value of the http.request.path property without the basePath part of the corresponding listener. |
MULE-7588 |
Lifecycle has been fixed. Please have the following considerations:
|
MULE-8430 |
In previous versions of Mule, domain home folders where created relative to current working directory instead of relative to <MULE_HOME> folder. Now that this is fixed, if your Mule instance was started from a folder other than <MULE_HOME> then folder <WORKING_DIRECTORY>/.mule/<DOMAIN_NAME> must be moved to <MULE_HOME>/.mule/<DOMAIN_NAME> |
MULE-8457 |
set-payload element is now implemented using a plain MessageProcessor instead of using a MessageTransformer. This means that <set-payload> continues working as before unless it is used as a transformer. (For example, inside an endpoint.) To use SetPayloadTransformer in the Mule configuration file as a transformer, define it as a <custom-transformer> like this:
|
MULE-8469 |
Applying a message transformer does not changes message’s data type if the payload was not replaced during the transformation. In particular, this changes affects usages of message properties transformer configured like this:
That now must be configure in this way:
Or like this:
|
MULE-8498 |
Applying a message transformer that changes message’s payload updates the message data type, but instead of using transformer’s output data type, it uses a merge between payload’s and transformer data types. If a transformer’s output data type does not provide a MIME type and/or encoding, then the original payload data type MIME type and/or encoding is used. This can cause different transformers to be applied to an application after the upgrade. In case there is a failure, use <set-payload> to set encoding and the MIME type while maintaining the same payload. |
MULE-7990 |
A new API for object serialization has been added through the ObjectSerializer interface. Use the following considerations:
|
MULE-8510 |
setting a message property/variable with the message’s payload when it is NullPayload removes the given property/variable instead of storing NullPayload. |
MULE-8483 |
MULE_ENCODING and Content-Type properties are not added on the outbound scope when message encoding or mimeType are updated. This was done in order to maintain consistency on MuleMessage data type and properties. In case any of these properties is needed, use <set-property> indicating the expected value. |
MULE-8592 |
Default maximum permanent generation has been increased to 256 mb. This property is only used when using Java 7. When using Java 8 the property may lead to a warning. In such case it can be comment out in the wrapper.conf file. |
MULE-8569 |
For those with custom implementation of class org.mule.config.spring.SpringXmlConfigurationBuilder, some important changes have been made:
|
MULE-8645 |
jasper-jdt-6.0.29 is not included anymore on Mule distributions because of detected vulnerabilities. In case this artifact is needed, when using Drools for example, manually add it to <MULE_HOME>/lib/opt |
MULE-8641 |
The wrapper.conf file now contains default garbage collection and memory settings configured to improve performance in an environment with 2 GB+ memory. If you need to run Mule with less memory, edit this file. |
MULE-8628 |
The HTTP connector now ignores its own custom properties (http.* ones) when sending a request and when responding to one, instead of transforming them to headers. This means that:
|
MULE-8660 |
AbstractMessageReceiver.routeMessage(..) no longer return nulls if the endpoint exchange pattern is one-way. It always returns the result of the flow so if a transaction commit fails the exception strategy is executed using the message result of the flow execution. Custom message receivers implementations may need to be updated. |
For a full and detailed list of considerations when migrating from the previous version to this one, see the MIGRATION.txt
file, located in the root folder of Mule ESB.
MMC 3.7.0 Fixes
The following issues were fixed for MMC 3.7.0.
MMC Bug Fixes
Issue | Description |
---|---|
MMC-1791 |
Events Received Graph (Async): Too specific time scale for clustered application |
MMC-1814 |
Anchor file not deleted using MMC REST API |
MMC-1806 |
MMC is not showing the correct status of an application |
MMC-1807 |
Bundle doesn’t come with Mule Server registered |
MMC-1813 |
Cannot explore flow generated from APIKit |
MMC-1820 |
MMC deployments last modified date changing constantly |
MMC-1817 |
Wrong tooltip text |
MMC-1821 |
Portlets "Application status" and "Server Metrics" in the dashboard do not show any information |
MMC-1805 |
Sorting by column on all tables is applied only for each page |
MMC Security Improvements
Issue | Description |
---|---|
MMC-1810 |
Add XSS check |
MMC-1811 |
Make login call works through SSL |
MMC-1809 |
Add password strength validation |