Search code examples
soapmulemule4

Error: Deployed Mule Project Requires a Different Runtime


When I compiled my Mule project and deployed it to mule-standalone-4.5.0, I got the following error:

org.mule.runtime.api.exception.MuleRuntimeException: The artifact bridge-1.0.0-mule-application requires a different runtime. The artifact required runtime is MULE_EE and the runtime is MULE

Searching for a solution, I found https://help.mulesoft.com/s/question/0D52T00005v4UH8SAM/error-while-deploying-domain-application-to-onpremisece-instance-the-artifact-required-runtime-is-muleee-and-the-runtime-is-mule and https://help.mulesoft.com/s/question/0D52T00006BcCs9SAF/getting-error-the-artifact-application-requires-a-different-runtime-the-artifact-required-runtime-is-muleee-and-the-runtime-is-mule-while-deploying-mule-application-in-mulestandalone4302021019-server

These posts seem to suggest that if I am using the Mule Community Edition standalone server, then I can NOT use any EE components such as ee:transform. Is this true? If so, is there a work-around? If not, how can I fix my error?

For reference, here is my project:

<http:listener-config name="listener-config-mule" basePath="/base">
    <http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<apikit-soap:config name="soapkit-config-bridge" wsdlLocation="bridge.wsdl" service="Calculator" port="CalculatorSoap12" />
<wsc:config name="wsc-config-bridge">
    <wsc:connection soapVersion="SOAP12" wsdlLocation="api\bridge.wsdl" service="Calculator" port="CalculatorSoap12" address="http://www.dneonline.com/calculator.asmx" />
</wsc:config>
<flow name="api-main">
    <http:listener config-ref="listener-config-mule" path="/app" />
    <apikit-soap:router config-ref="soapkit-config-bridge">
        <apikit-soap:attributes><![CDATA[#[%dw 2.0
            output application/java
            ---
            {
                headers: attributes.headers,
                method: attributes.method,
                queryString: attributes.queryString
            }]]]></apikit-soap:attributes>
    </apikit-soap:router>
</flow>
<flow name="Add:\soapkit-config-bridge">
    <ee:transform>
        <ee:message>
            <ee:set-payload><![CDATA[%dw 2.0
                output application/xml
                ---
                payload.body]]></ee:set-payload>
        </ee:message>
    </ee:transform>
    <wsc:consume config-ref="wsc-config-bridge" operation="Add" />
    <ee:transform>
        <ee:message>
            <ee:set-payload><![CDATA[%dw 2.0
                output application/xml
                ---
                payload.body]]></ee:set-payload>
        </ee:message>
    </ee:transform>
</flow>

Solution

  • Yes, indeed, you will not be able to use any EE-based namespace and schema location if you use the Mule Community edition called Kernal in Mule 4 and if you run the application you will get the error.

    Alternative:

    • Remove ee:transform or ee-based namespace and schema location from XML and use the set payload component as an alternative component.

    Also please edit the mule-artifact.json to use Mule Runtime as a Kernal using below requiredProduct key.

      {
        "requiredProduct":"MULE",
        "minMuleVersion":"4.5.0"
      }