0

Due to environment restrictions, we need to deploy our Mule apps on Websphere. I am doing a PoC to get a Mule app to run on the Liberty profile server. I am however unable to get the Mule app (deployed as a war) to run. I've tried the example at https://stackoverflow.com/a/14859119/387927. The war gets deployed, but when I try to invoke the app, Mule throws an error stating "Server null". Am I missing something? The stack trace is as given below.

ERROR org.mule.transport.servlet.MuleReceiverServlet - message: Null input provided: Server null
java.lang.IllegalArgumentException: Null input provided: Server null
    at com.ibm.ws.genericbnf.internal.BNFHeadersImpl.appendHeader(BNFHeadersImpl.java:397) ~[?:?]
    at com.ibm.ws.http.dispatcher.internal.channel.HttpResponseImpl.addHeader(HttpResponseImpl.java:148) ~[?:?]
    at com.ibm.ws.webcontainer.osgi.response.IResponseImpl.addHeader(IResponseImpl.java:81) ~[?:?]
    at com.ibm.ws.webcontainer.srt.SRTServletResponse.addField(SRTServletResponse.java:350) ~[?:?]
    at com.ibm.ws.webcontainer.srt.SRTServletResponse.addHeader(SRTServletResponse.java:2072) ~[?:?]
    at org.mule.transport.servlet.ServletResponseWriter.setHttpHeadersOnServletResponse(ServletResponseWriter.java:174) ~[?:3.6.2]
    at org.mule.transport.servlet.ServletResponseWriter.writeResponseFromMessage(ServletResponseWriter.java:124) ~[?:3.6.2]
    at org.mule.transport.servlet.ServletResponseWriter.writeResponse(ServletResponseWriter.java:48) ~[?:3.6.2]
    at org.mule.transport.servlet.AbstractReceiverServlet.writeResponse(AbstractReceiverServlet.java:151) [?:3.6.2]
    at org.mule.transport.servlet.MuleReceiverServlet.processHttpRequest(MuleReceiverServlet.java:256) [?:3.6.2]
    at org.mule.transport.servlet.MuleReceiverServlet.doAllMethods(MuleReceiverServlet.java:239) [?:3.6.2]
    at org.mule.transport.servlet.MuleReceiverServlet.doGet(MuleReceiverServlet.java:187) [?:3.6.2]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) [com.ibm.ws.javaee.servlet.3.0_1.0.1.jar:?]
    at org.mule.transport.servlet.MuleReceiverServlet.service(MuleReceiverServlet.java:176) [?:3.6.2]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) [com.ibm.ws.javaee.servlet.3.0_1.0.1.jar:?]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1240) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:760) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:443) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1033) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4499) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:282) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:252) [com.ibm.ws.webcontainer_1.0.3.jar:?]
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:584) [com.ibm.ws.transport.http_1.0.2.jar:?]
    at com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:439) [com.ibm.ws.threading_1.0.3.jar:?]
    at com.ibm.ws.threading.internal.Worker.run(Worker.java:421) [com.ibm.ws.threading_1.0.3.jar:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_79]

Thanks for helping out!

The issue was resolved by adding a message property transformer as shown below

 <message-properties-transformer doc:name="Set the Server property to a dummy value">
        <add-message-property key="Server" value="dummyValue"/>
    </message-properties-transformer>
Community
  • 1
  • 1
Bharat MK
  • 1
  • 1
  • You have to check, whats going on in that method `org.mule.transport.servlet.ServletResponseWriter.setHttpHeadersOnServletResponse` – Gas Sep 09 '15 at 14:20
  • Did you add your servlet xml in your zip ? – Naveen Raj Sep 15 '15 at 05:33
  • 1
    Thanks @Gas I looked into the implementation an for some reason, Mule's inbuilt transformer was creating an attribute called Server in the http header and not setting it to any value (hence null). Ive used a simple message property transformer to manually set the Server to a dummy value and the flow is working well. – Bharat MK Sep 18 '15 at 18:48
  • @Naveen Raj, the web.xml is in the WEB-INF folder under webapp directory. – Bharat MK Sep 18 '15 at 18:51

0 Answers0