* @param message The ESB Aware (normalized) SOAP request message.
* @return The SOAP response message.
* @throws ActionProcessingException
*/
public Message process(Message message) throws ActionProcessingException {
Endpoint endpoint = WebServiceUtils.getServiceEndpoint(jbossws_endpoint, jbossws_context);
byte[] soapMessage;
if(endpoint == null) {
throw new ActionProcessingException("Unknown Service Endpoint '" + jbossws_endpoint + "'.");
}
soapMessage = getSOAPMessagePayload(message);
try {
messageTL.set(message);
RequestHandler requestHandler = endpoint.getRequestHandler();
final Map<String, List<String>> headers = new HashMap<String, List<String>>() ;
final Properties properties = message.getProperties() ;
final String[] names = properties.getNames() ;
for(final String name: names)
{
final Object value = properties.getProperty(name) ;
if (value != null)
{
String normalisedName = name.toLowerCase() ;
if ("content-type".equals(normalisedName))
{
if ("application/octet-stream".equals(value))
{
continue;
}
else
{
// CXF needs it to be case sensitive
normalisedName = "Content-Type";
}
}
final List<String> values = headers.get(normalisedName) ;
if (values == null)
{
final List<String> newValues = new ArrayList<String>() ;
newValues.add(value.toString()) ;
headers.put(normalisedName, newValues) ;
}
else
{
values.add(value.toString()) ;
}
}
}
//CXF throws NPE in handler if content-length not set
List<String> newValues = new ArrayList<String>();
newValues.add(String.valueOf(soapMessage.length));
headers.put("content-length", newValues);
final String endpointAddress = endpoint.getAddress() ;
String path = null ;
if (endpointAddress != null)
{
try
{