protected void processXMLRequest(Request request,
Response response,
AxisService service,
MessageContext msgContext) throws Exception {
String contentType = request.getHeader(HTTPConstants.HEADER_CONTENT_TYPE);
String soapAction = request.getHeader(HTTPConstants.HEADER_SOAP_ACTION);
if (soapAction == null) {
soapAction = "\"\"";
}
ConfigurationContext configurationContext = msgContext.getConfigurationContext();
configurationContext.fillServiceContextAndServiceGroupContext(msgContext);
setMsgContextProperties(request, response, service, msgContext);
ServiceContext serviceContext = msgContext.getServiceContext();
serviceContext.setProperty(ServiceContext.SERVICE_OBJECT, this.endpointInstance);
try {
if (!HTTPTransportUtils.isRESTRequest(contentType)) {
HTTPTransportUtils.processHTTPPostRequest(msgContext,
request.getInputStream(),
response.getOutputStream(),
contentType,
soapAction,
request.getURI().getPath());
} else {
RESTUtil.processXMLRequest(msgContext,
request.getInputStream(),
response.getOutputStream(),
contentType);
}
} finally {
// de-associate JAX-WS MessageContext with the thread
// (association happens in POJOEndpointLifecycleManager.createService() call)
POJOWebServiceContext.clear();
}
}
|