Author: azeez Date: Tue May 15 00:27:37 2007 New Revision: 538077 URL: http://svn.apache.org/viewvc?view=rev&rev=538077 Log: 1. Ability to handle custom states 2. Refactoring
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?view=diff&rev=538077&r1=538076&r2=538077 ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java Tue May 15 00:27:37 2007 @@ -80,6 +80,9 @@ //Parameter name for transport session managemntt public static final String MANAGE_TRANSPORT_SESSION = "manageTransportSession"; + public static final String HTTP_RESPONSE_STATE = "axis2.http.response.state"; + public static final String HTTP_BASIC_AUTH_REALM = "axis2.authentication.realm"; + /** * Field APPLICATION_SCOPE */ Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=538077&r1=538076&r2=538077 ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Tue May 15 00:27:37 2007 @@ -27,18 +27,9 @@ import org.apache.axis2.Constants; import org.apache.axis2.addressing.AddressingHelper; import org.apache.axis2.addressing.EndpointReference; -import org.apache.axis2.context.ConfigurationContext; -import org.apache.axis2.context.ConfigurationContextFactory; -import org.apache.axis2.context.MessageContext; -import org.apache.axis2.context.OperationContext; -import org.apache.axis2.context.SessionContext; +import org.apache.axis2.context.*; import org.apache.axis2.deployment.WarBasedAxisConfigurator; -import org.apache.axis2.description.AxisBindingMessage; -import org.apache.axis2.description.AxisBindingOperation; -import org.apache.axis2.description.Parameter; -import org.apache.axis2.description.TransportInDescription; -import org.apache.axis2.description.TransportOutDescription; -import org.apache.axis2.description.WSDL2Constants; +import org.apache.axis2.description.*; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.engine.AxisEngine; import org.apache.axis2.engine.Handler.InvocationResponse; @@ -58,11 +49,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.namespace.QName; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintWriter; +import java.io.*; import java.net.SocketException; import java.util.Map; @@ -124,7 +111,7 @@ (Boolean) msgContext.getProperty(RequestResponseTransport.HOLD_RESPONSE); if (pi.equals(InvocationResponse.SUSPEND) || - (holdResponse != null && Boolean.TRUE.equals(holdResponse))) { + (holdResponse != null && Boolean.TRUE.equals(holdResponse))) { ((RequestResponseTransport) msgContext .getProperty(RequestResponseTransport.TRANSPORT_CONTROL)) .awaitResponse(); @@ -138,7 +125,7 @@ } response.setContentType("text/xml; charset=" - + msgContext + + msgContext .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING)); if ((contextWritten == null) || !Constants.VALUE_TRUE.equals(contextWritten)) { @@ -146,6 +133,7 @@ } } catch (AxisFault e) { + setResponseState(msgContext, response); log.debug(e); if (msgContext != null) { processAxisFault(msgContext, response, out, e); @@ -154,42 +142,38 @@ } } catch (Throwable t) { log.error(t); - if (msgContext != null) { - try { - // If the fault is not going along the back channel we should be 202ing - if (AddressingHelper.isFaultRedirected(msgContext)) { - response.setStatus(HttpServletResponse.SC_ACCEPTED); - } else { - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - - AxisBindingOperation axisBindingOperation = - (AxisBindingOperation) msgContext - .getProperty(Constants.AXIS_BINDING_OPERATION); - if (axisBindingOperation != null) { - Integer code = (Integer) axisBindingOperation.getFault( - (String) msgContext.getProperty(Constants.FAULT_NAME)) - .getProperty(WSDL2Constants.ATTR_WHTTP_CODE); - if (code != null) { - response.setStatus(code.intValue()); - } + try { + // If the fault is not going along the back channel we should be 202ing + if (AddressingHelper.isFaultRedirected(msgContext)) { + response.setStatus(HttpServletResponse.SC_ACCEPTED); + } else { + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + + AxisBindingOperation axisBindingOperation = + (AxisBindingOperation) msgContext + .getProperty(Constants.AXIS_BINDING_OPERATION); + if (axisBindingOperation != null) { + Integer code = (Integer) axisBindingOperation.getFault( + (String) msgContext.getProperty(Constants.FAULT_NAME)) + .getProperty(WSDL2Constants.ATTR_WHTTP_CODE); + if (code != null) { + response.setStatus(code.intValue()); } } - handleFault(msgContext, out, new AxisFault(t.toString(), t)); - } catch (AxisFault e2) { - log.info(e2); - throw new ServletException(e2); } - } else { - throw new ServletException(t); + handleFault(msgContext, out, new AxisFault(t.toString(), t)); + } catch (AxisFault e2) { + log.info(e2); + throw new ServletException(e2); } closeStaxBuilder(msgContext); } } else { if (!disableREST) { - new ProcessRESTRequest(Constants.Configuration.HTTP_METHOD_POST, request, response) + new RestRequestProcessor(Constants.Configuration.HTTP_METHOD_POST, request, response) .processXMLRequest(); } else { - disableRESTErrorMessage(response); + showRestDisabledErrorMessage(response); } } } @@ -218,15 +202,15 @@ // 2. list services requests // 3. REST requests. if ((query != null) && (query.indexOf("wsdl2") >= 0 || - query.indexOf("wsdl") >= 0 || query.indexOf("xsd") >= 0 || - query.indexOf("policy") >= 0)) { + query.indexOf("wsdl") >= 0 || query.indexOf("xsd") >= 0 || + query.indexOf("policy") >= 0)) { // handling meta data exchange stuff agent.processListService(request, response); } else if (requestURI.endsWith(".xsd") || - requestURI.endsWith(".wsdl")) { + requestURI.endsWith(".wsdl")) { agent.processExplicitSchemaAndWSDL(request, response); } else if (requestURI.endsWith(LIST_SERVICES_SUFIX) || - requestURI.endsWith(LIST_FAUKT_SERVICES_SUFIX)) { + requestURI.endsWith(LIST_FAUKT_SERVICES_SUFIX)) { // handling list services request try { agent.handle(request, response); @@ -234,10 +218,10 @@ throw new ServletException(e); } } else if (!disableREST) { - new ProcessRESTRequest(Constants.Configuration.HTTP_METHOD_GET, request, response) + new RestRequestProcessor(Constants.Configuration.HTTP_METHOD_GET, request, response) .processURLRequest(); } else { - disableRESTErrorMessage(response); + showRestDisabledErrorMessage(response); } } @@ -256,10 +240,10 @@ initContextRoot(request); // this method is also used to serve for the listServices request. if (!disableREST) { - new ProcessRESTRequest(Constants.Configuration.HTTP_METHOD_DELETE, request, response) + new RestRequestProcessor(Constants.Configuration.HTTP_METHOD_DELETE, request, response) .processURLRequest(); } else { - disableRESTErrorMessage(response); + showRestDisabledErrorMessage(response); } } @@ -277,10 +261,10 @@ initContextRoot(request); // this method is also used to serve for the listServices request. if (!disableREST) { - new ProcessRESTRequest(Constants.Configuration.HTTP_METHOD_PUT, request, response) + new RestRequestProcessor(Constants.Configuration.HTTP_METHOD_PUT, request, response) .processXMLRequest(); } else { - disableRESTErrorMessage(response); + showRestDisabledErrorMessage(response); } } @@ -290,13 +274,12 @@ * @param response * @throws IOException */ - protected void disableRESTErrorMessage(HttpServletResponse response) throws IOException { + protected void showRestDisabledErrorMessage(HttpServletResponse response) throws IOException { PrintWriter writer = new PrintWriter(response.getOutputStream()); writer.println("<html><body><h2>Please enable REST support in WEB-INF/conf/axis2.xml " + - "and WEB-INF/web.xml</h2></body></html>"); + "and WEB-INF/web.xml</h2></body></html>"); writer.flush(); response.setStatus(HttpServletResponse.SC_ACCEPTED); - } /** @@ -336,10 +319,18 @@ res.setStatus(HttpServletResponse.SC_ACCEPTED); } else { - res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + String status = + (String) msgContext.getOperationContext(). + getProperty(Constants.HTTP_RESPONSE_STATE); + if (status == null) { + res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } else { + res.setStatus(Integer.parseInt(status)); + } - AxisBindingOperation axisBindingOperation = (AxisBindingOperation) msgContext - .getProperty(Constants.AXIS_BINDING_OPERATION); + AxisBindingOperation axisBindingOperation = + (AxisBindingOperation) msgContext + .getProperty(Constants.AXIS_BINDING_OPERATION); if (axisBindingOperation != null) { AxisBindingMessage fault = axisBindingOperation .getFault((String) msgContext.getProperty(Constants.FAULT_NAME)); @@ -382,7 +373,7 @@ if (valueElement != null) { if (valueElement.getText().trim().indexOf(SOAP12Constants.FAULT_CODE_SENDER) > - -1 && !msgContext.isDoingREST()) { + -1 && !msgContext.isDoingREST()) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } @@ -415,8 +406,8 @@ listenerManager.addListener(transportInDescription, true); listenerManager.start(); ListenerManager.defaultConfigurationContext = configContext; - agent = new ListingAgent(configContext); - + agent = new ListingAgent(configContext); + initParams(); } catch (Exception e) { @@ -498,7 +489,7 @@ * @param req */ public void initContextRoot(HttpServletRequest req) { - if(contextRoot != null && contextRoot.trim().length() != 0){ + if (contextRoot != null && contextRoot.trim().length() != 0) { return; } boolean findContext = true; @@ -563,10 +554,10 @@ EndpointReference endpoint = new EndpointReference("http://" + ip + ":" + port + '/' + - configContext - .getServiceContextPath() + - "/" + - serviceName); + configContext + .getServiceContextPath() + + "/" + + serviceName); return new EndpointReference[]{endpoint}; } @@ -638,10 +629,10 @@ msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST, request); msgContext.setProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE, response); - //setting the RequestResponseTransport object + //setting the RequestResponseTransport object msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, - new ServletRequestResponseTransport(response)); - + new ServletRequestResponseTransport(response)); + return msgContext; } @@ -688,7 +679,7 @@ private CountDownLatch responseReadySignal = new CountDownLatch(1); RequestResponseTransportStatus status = RequestResponseTransportStatus.INITIAL; AxisFault faultToBeThrownOut = null; - + ServletRequestResponseTransport(HttpServletResponse response) { this.response = response; } @@ -696,7 +687,7 @@ public void acknowledgeMessage(MessageContext msgContext) throws AxisFault { log.debug("Acking one-way request"); response.setContentType("text/xml; charset=" - + msgContext + + msgContext .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING)); response.setStatus(HttpServletResponse.SC_ACCEPTED); @@ -711,13 +702,14 @@ } public void awaitResponse() - throws InterruptedException,AxisFault { + throws InterruptedException, AxisFault { log.debug("Blocking servlet thread -- awaiting response"); status = RequestResponseTransportStatus.WAITING; responseReadySignal.await(); - - if (faultToBeThrownOut!=null) - throw faultToBeThrownOut; + + if (faultToBeThrownOut != null) { + throw faultToBeThrownOut; + } } public void signalResponseReady() { @@ -730,32 +722,42 @@ return status; } - public void signalFaultReady(AxisFault fault) { - faultToBeThrownOut = fault; - signalResponseReady(); - } - + public void signalFaultReady(AxisFault fault) { + faultToBeThrownOut = fault; + signalResponseReady(); + } + } + + private void setResponseState(MessageContext messageContext, HttpServletResponse response) { + OperationContext opCtx = messageContext.getOperationContext(); + String state = (String) opCtx.getProperty(Constants.HTTP_RESPONSE_STATE); + if (state != null) { + int stateInt = Integer.parseInt(state); + if (stateInt == HttpServletResponse.SC_UNAUTHORIZED) { // Unauthorized + String realm = (String) opCtx.getProperty(Constants.HTTP_BASIC_AUTH_REALM); + response.addHeader("WWW-Authenticate", + "basic realm=\"" + realm + "\""); + } + } } /** * Ues in processing REST related Requests. * This is the helper Class use in processing of doGet, doPut , doDelete and doPost. */ - public class ProcessRESTRequest { - MessageContext messageContext; - HttpServletRequest request; - HttpServletResponse response; - - public ProcessRESTRequest(String httpMethodString, HttpServletRequest request, - HttpServletResponse response) - throws IOException { + protected class RestRequestProcessor { + private MessageContext messageContext; + private HttpServletRequest request; + private HttpServletResponse response; + + public RestRequestProcessor(String httpMethodString, + HttpServletRequest request, + HttpServletResponse response) throws IOException { this.request = request; this.response = response; messageContext = createMessageContext(this.request, this.response, false); messageContext.setProperty(org.apache.axis2.transport.http.HTTPConstants.HTTP_METHOD, httpMethodString); - - } public void processXMLRequest() throws IOException, ServletException { @@ -767,8 +769,6 @@ processFault(axisFault); } closeStaxBuilder(messageContext); - - } public void processURLRequest() throws IOException, ServletException { @@ -776,19 +776,22 @@ RESTUtil.processURLRequest(messageContext, response.getOutputStream(), request.getContentType()); this.checkResponseWritten(); - } catch (AxisFault axisFault) { - processFault(axisFault); + } catch (AxisFault e) { + setResponseState(messageContext, response); + processFault(e); } closeStaxBuilder(messageContext); } private void checkResponseWritten() { - Object contextWritten = - messageContext.getOperationContext() - .getProperty(Constants.RESPONSE_WRITTEN); - if ((contextWritten == null) || !Constants.VALUE_TRUE.equals(contextWritten)) { - response.setStatus(HttpServletResponse.SC_ACCEPTED); + OperationContext operationContext = messageContext.getOperationContext(); + if (operationContext != null) { + Object contextWritten = + operationContext.getProperty(Constants.RESPONSE_WRITTEN); + if ((contextWritten == null) || !Constants.VALUE_TRUE.equals(contextWritten)) { + response.setStatus(HttpServletResponse.SC_ACCEPTED); + } } } Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=538077&r1=538076&r2=538077 ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Tue May 15 00:27:37 2007 @@ -27,19 +27,14 @@ */ package org.apache.axis2.transport.http.server; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.SocketException; -import java.util.HashMap; -import java.util.Iterator; - +import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch; import org.apache.axis2.AxisFault; import org.apache.axis2.Constants; import org.apache.axis2.addressing.AddressingHelper; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.MessageContext; +import org.apache.axis2.context.OperationContext; import org.apache.axis2.description.TransportInDescription; import org.apache.axis2.description.TransportOutDescription; import org.apache.axis2.engine.AxisEngine; @@ -48,24 +43,18 @@ import org.apache.axis2.util.MessageContextBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.http.ConnectionReuseStrategy; -import org.apache.http.Header; -import org.apache.http.HttpEntityEnclosingRequest; -import org.apache.http.HttpException; -import org.apache.http.HttpInetConnection; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; -import org.apache.http.HttpResponseFactory; -import org.apache.http.HttpStatus; -import org.apache.http.HttpVersion; -import org.apache.http.MethodNotSupportedException; -import org.apache.http.ProtocolException; -import org.apache.http.UnsupportedHttpVersionException; +import org.apache.http.*; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpProcessor; -import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.SocketException; +import java.util.HashMap; +import java.util.Iterator; /** * This class is an extension of the defaulf HTTP service responsible for @@ -117,30 +106,30 @@ public HttpParams getParams() { return this.params; } - + public void setParams(final HttpParams params) { this.params = params; } - - public void handleRequest(final AxisHttpConnection conn, final HttpContext context) - throws IOException, HttpException { - + + public void handleRequest(final AxisHttpConnection conn, final HttpContext context) + throws IOException, HttpException { + MessageContext msgContext = configurationContext.createMessageContext(); msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP); if (conn instanceof HttpInetConnection) { HttpInetConnection inetconn = (HttpInetConnection) conn; msgContext.setProperty(MessageContext.REMOTE_ADDR, - inetconn.getRemoteAddress().getHostAddress()); + inetconn.getRemoteAddress().getHostAddress()); msgContext.setProperty(MessageContext.TRANSPORT_ADDR, - inetconn.getLocalAddress().getHostAddress()); + inetconn.getLocalAddress().getHostAddress()); if (LOG.isDebugEnabled()) { - LOG.debug("Remote address of the connection : " + - inetconn.getRemoteAddress().getHostAddress()); + LOG.debug("Remote address of the connection : " + + inetconn.getRemoteAddress().getHostAddress()); } } - + HttpResponse response; try { HttpRequest request = conn.receiveRequest(this.params); @@ -151,37 +140,37 @@ } response = this.responseFactory.newHttpResponse - (ver, HttpStatus.SC_OK, context); + (ver, HttpStatus.SC_OK, context); response.getParams().setDefaults(this.params); - + if (request instanceof HttpEntityEnclosingRequest) { if (((HttpEntityEnclosingRequest) request).expectContinue()) { HttpResponse ack = this.responseFactory.newHttpResponse - (ver, HttpStatus.SC_CONTINUE, context); + (ver, HttpStatus.SC_CONTINUE, context); ack.getParams().setDefaults(this.params); conn.sendResponse(ack); conn.flush(); } } - + // Create Axis request and response objects AxisHttpRequestImpl axisreq = new AxisHttpRequestImpl( - conn, - request, - this.httpProcessor, - context); + conn, + request, + this.httpProcessor, + context); AxisHttpResponseImpl axisres = new AxisHttpResponseImpl( - conn, - response, - this.httpProcessor, - context); + conn, + response, + this.httpProcessor, + context); // Prepare HTTP request axisreq.prepare(); - + // Run the service doService(axisreq, axisres, context, msgContext); - + // Make sure the request content is fully consumed InputStream instream = conn.getInputStream(); if (instream != null) { @@ -198,25 +187,25 @@ if (outstream != null) { outstream.close(); } - + } catch (HttpException ex) { response = this.responseFactory.newHttpResponse - (HttpVersion.HTTP_1_0, HttpStatus.SC_INTERNAL_SERVER_ERROR, - context); + (HttpVersion.HTTP_1_0, HttpStatus.SC_INTERNAL_SERVER_ERROR, + context); response.getParams().setDefaults(this.params); handleException(ex, response); this.httpProcessor.process(response, context); conn.sendResponse(response); } - + conn.flush(); if (!this.connStrategy.keepAlive(response, context)) { conn.close(); } else { conn.reset(); } - } - + } + protected void handleException(final HttpException ex, final HttpResponse response) { if (ex instanceof MethodNotSupportedException) { response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED); @@ -228,9 +217,9 @@ response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR); } } - + protected void doService( - final AxisHttpRequest request, + final AxisHttpRequest request, final AxisHttpResponse response, final HttpContext context, final MessageContext msgContext) throws HttpException, IOException { @@ -251,7 +240,7 @@ msgContext.setServerSide(true); msgContext.setProperty(HTTPConstants.COOKIE_STRING, sessionKey); msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, - request.getRequestURI()); + request.getRequestURI()); // set the transport Headers HashMap headerMap = new HashMap(); @@ -260,18 +249,18 @@ headerMap.put(header.getName(), header.getValue()); } msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, - headerMap); + headerMap); msgContext.setProperty(Constants.Configuration.CONTENT_TYPE, - request.getContentType()); - + request.getContentType()); + msgContext.setProperty(MessageContext.TRANSPORT_OUT, - response.getOutputStream()); + response.getOutputStream()); msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, - response); + response); msgContext.setTo(new EndpointReference(request.getRequestURI())); msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL, - new SimpleHTTPRequestResponseTransport()); - + new SimpleHTTPRequestResponseTransport()); + this.worker.service(request, response, msgContext); } catch (SocketException ex) { // Socket is unreliable. @@ -284,9 +273,9 @@ AxisEngine engine = new AxisEngine(this.configurationContext); msgContext.setProperty(MessageContext.TRANSPORT_OUT, - response.getOutputStream()); + response.getOutputStream()); msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, - response); + response); MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e); @@ -294,11 +283,22 @@ if (AddressingHelper.isFaultRedirected(msgContext)) { response.setStatus(HttpStatus.SC_ACCEPTED); } else { - response.sendError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal server error"); + OperationContext opCtx = msgContext.getOperationContext(); + String state = (String) opCtx.getProperty(Constants.HTTP_RESPONSE_STATE); + if (state != null) { + int stateInt = Integer.parseInt(state); + response.setStatus(stateInt); + if (stateInt == HttpServletResponse.SC_UNAUTHORIZED) { // Unauthorized + String realm = (String) opCtx.getProperty(Constants.HTTP_BASIC_AUTH_REALM); + response.addHeader("WWW-Authenticate", + "basic realm=\"" + realm + "\""); + } + } else { + response.sendError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal server error"); + } } engine.sendFault(faultContext); } - } class SimpleHTTPRequestResponseTransport implements RequestResponseTransport { @@ -316,8 +316,9 @@ status = RequestResponseTransportStatus.WAITING; responseReadySignal.await(); - if (faultToBeThrownOut != null) + if (faultToBeThrownOut != null) { throw faultToBeThrownOut; + } } public void signalResponseReady() { @@ -335,5 +336,5 @@ } } - + } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]