Package org.jboss.wsf.stack.jbws

Source Code of org.jboss.wsf.stack.jbws.RequestHandlerImpl

/*     */ package org.jboss.wsf.stack.jbws;
/*     */
/*     */ import java.io.IOException;
/*     */ import java.io.InputStream;
/*     */ import java.io.OutputStream;
/*     */ import java.io.OutputStreamWriter;
/*     */ import java.io.Writer;
/*     */ import java.net.URI;
/*     */ import java.net.URL;
/*     */ import java.util.HashMap;
/*     */ import java.util.Map;
/*     */ import javax.servlet.ServletContext;
/*     */ import javax.servlet.ServletException;
/*     */ import javax.servlet.ServletInputStream;
/*     */ import javax.servlet.ServletOutputStream;
/*     */ import javax.servlet.http.HttpServletRequest;
/*     */ import javax.servlet.http.HttpServletResponse;
/*     */ import javax.xml.namespace.QName;
/*     */ import javax.xml.rpc.JAXRPCException;
/*     */ import javax.xml.soap.MimeHeaders;
/*     */ import javax.xml.soap.SOAPBody;
/*     */ import javax.xml.soap.SOAPEnvelope;
/*     */ import javax.xml.soap.SOAPException;
/*     */ import javax.xml.soap.SOAPMessage;
/*     */ import javax.xml.soap.SOAPPart;
/*     */ import javax.xml.ws.addressing.AddressingProperties;
/*     */ import javax.xml.ws.addressing.AttributedURI;
/*     */ import org.jboss.logging.Logger;
/*     */ import org.jboss.ws.Constants;
/*     */ import org.jboss.ws.WSException;
/*     */ import org.jboss.ws.core.CommonBinding;
/*     */ import org.jboss.ws.core.CommonBindingProvider;
/*     */ import org.jboss.ws.core.CommonMessageContext;
/*     */ import org.jboss.ws.core.CommonSOAPFaultException;
/*     */ import org.jboss.ws.core.HTTPMessageImpl;
/*     */ import org.jboss.ws.core.MessageAbstraction;
/*     */ import org.jboss.ws.core.MessageTrace;
/*     */ import org.jboss.ws.core.binding.BindingException;
/*     */ import org.jboss.ws.core.jaxrpc.handler.SOAPMessageContextJAXRPC;
/*     */ import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
/*     */ import org.jboss.ws.core.server.MimeHeaderSource;
/*     */ import org.jboss.ws.core.server.ServiceEndpointInvoker;
/*     */ import org.jboss.ws.core.server.ServletHeaderSource;
/*     */ import org.jboss.ws.core.server.ServletRequestContext;
/*     */ import org.jboss.ws.core.server.WSDLRequestHandler;
/*     */ import org.jboss.ws.core.soap.MessageContextAssociation;
/*     */ import org.jboss.ws.core.soap.MessageFactoryImpl;
/*     */ import org.jboss.ws.core.soap.SOAPConnectionImpl;
/*     */ import org.jboss.ws.core.soap.SOAPMessageImpl;
/*     */ import org.jboss.ws.core.utils.ThreadLocalAssociation;
/*     */ import org.jboss.ws.extensions.addressing.AddressingConstantsImpl;
/*     */ import org.jboss.ws.extensions.xop.XOPContext;
/*     */ import org.jboss.ws.metadata.umdm.EndpointMetaData.Type;
/*     */ import org.jboss.ws.metadata.umdm.ServerEndpointMetaData;
/*     */ import org.jboss.wsf.common.DOMUtils;
/*     */ import org.jboss.wsf.common.DOMWriter;
/*     */ import org.jboss.wsf.spi.SPIProvider;
/*     */ import org.jboss.wsf.spi.SPIProviderResolver;
/*     */ import org.jboss.wsf.spi.deployment.Deployment;
/*     */ import org.jboss.wsf.spi.deployment.Endpoint;
/*     */ import org.jboss.wsf.spi.deployment.Endpoint.EndpointState;
/*     */ import org.jboss.wsf.spi.deployment.Service;
/*     */ import org.jboss.wsf.spi.invocation.InvocationContext;
/*     */ import org.jboss.wsf.spi.invocation.RequestHandler;
/*     */ import org.jboss.wsf.spi.management.EndpointMetrics;
/*     */ import org.jboss.wsf.spi.management.ServerConfig;
/*     */ import org.jboss.wsf.spi.management.ServerConfigFactory;
/*     */ import org.w3c.dom.Document;
/*     */
/*     */ public class RequestHandlerImpl
/*     */   implements RequestHandler
/*     */ {
/* 106 */   private static final Logger log = Logger.getLogger(RequestHandlerImpl.class);
/*     */   private ServerConfig serverConfig;
/*     */   private MessageFactoryImpl msgFactory;
/*     */
/*     */   RequestHandlerImpl()
/*     */   {
/* 113 */     SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
/* 114 */     this.serverConfig = ((ServerConfigFactory)spiProvider.getSPI(ServerConfigFactory.class)).getServerConfig();
/* 115 */     this.msgFactory = new MessageFactoryImpl();
/*     */   }
/*     */
/*     */   public void handleHttpRequest(Endpoint endpoint, HttpServletRequest req, HttpServletResponse res, ServletContext context) throws ServletException, IOException
/*     */   {
/* 120 */     String method = req.getMethod();
/* 121 */     if (method.equals("POST"))
/*     */     {
/* 123 */       doPost(endpoint, req, res, context);
/*     */     }
/* 125 */     else if (method.equals("GET"))
/*     */     {
/* 127 */       doGet(endpoint, req, res, context);
/*     */     }
/*     */     else
/*     */     {
/* 131 */       throw new WSException("Unsupported method: " + method);
/*     */     }
/*     */   }
/*     */
/*     */   private void doGet(Endpoint endpoint, HttpServletRequest req, HttpServletResponse res, ServletContext context)
/*     */     throws ServletException, IOException
/*     */   {
/* 138 */     if ((req.getParameter("wsdl") != null) || (req.getParameter("WSDL") != null))
/*     */     {
/* 140 */       res.setContentType("text/xml");
/* 141 */       ServletOutputStream out = res.getOutputStream();
/*     */       try
/*     */       {
/* 144 */         ServletRequestContext reqContext = new ServletRequestContext(context, req, res);
/* 145 */         handleWSDLRequest(endpoint, out, reqContext);
/*     */       }
/*     */       catch (Exception ioex)
/*     */       {
/* 149 */         handleException(ex);
/*     */       }
/*     */       finally
/*     */       {
/*     */         try
/*     */         {
/* 155 */           out.close();
/*     */         }
/*     */         catch (IOException ioex)
/*     */         {
/* 159 */           log.error("Cannot close output stream");
/*     */         }
/*     */       }
/*     */     }
/*     */     else
/*     */     {
/* 165 */       res.setStatus(405);
/* 166 */       res.setContentType("text/plain");
/* 167 */       Writer out = res.getWriter();
/* 168 */       out.write("HTTP GET not supported");
/* 169 */       out.close();
/*     */     }
/*     */   }
/*     */
/*     */   private void doPost(Endpoint endpoint, HttpServletRequest req, HttpServletResponse res, ServletContext context) throws ServletException, IOException
/*     */   {
/* 175 */     log.debug("doPost: " + req.getRequestURI());
/*     */
/* 177 */     ServletInputStream in = req.getInputStream();
/* 178 */     ServletOutputStream out = res.getOutputStream();
/*     */
/* 180 */     ClassLoader classLoader = endpoint.getService().getDeployment().getRuntimeClassLoader();
/* 181 */     if (classLoader == null) {
/* 182 */       throw new IllegalStateException("Deployment has no classloader associated");
/*     */     }
/*     */
/* 185 */     ClassLoader ctxClassLoader = Thread.currentThread().getContextClassLoader();
/* 186 */     Thread.currentThread().setContextClassLoader(classLoader);
/*     */     try
/*     */     {
/* 189 */       ServletRequestContext reqContext = new ServletRequestContext(context, req, res);
/* 190 */       handleRequest(endpoint, in, out, reqContext);
/*     */     }
/*     */     catch (Exception ioex)
/*     */     {
/* 194 */       handleException(ex);
/*     */     }
/*     */     finally
/*     */     {
/* 199 */       Thread.currentThread().setContextClassLoader(ctxClassLoader);
/*     */       try
/*     */       {
/* 203 */         out.close();
/*     */       }
/*     */       catch (IOException ioex)
/*     */       {
/* 207 */         log.error("Cannot close output stream");
/*     */       }
/*     */     }
/*     */   }
/*     */
/*     */   public void handleRequest(Endpoint endpoint, InputStream inStream, OutputStream outStream, InvocationContext invContext)
/*     */   {
/* 214 */     log.debug("handleRequest: " + endpoint.getName());
/*     */
/* 216 */     ServerEndpointMetaData sepMetaData = (ServerEndpointMetaData)endpoint.getAttachment(ServerEndpointMetaData.class);
/* 217 */     if (sepMetaData == null) {
/* 218 */       throw new IllegalStateException("Cannot obtain endpoint meta data");
/*     */     }
/* 220 */     EndpointMetaData.Type type = sepMetaData.getType();
/*     */     CommonMessageContext msgContext;
/* 224 */     if (type == EndpointMetaData.Type.JAXRPC)
/*     */     {
/* 226 */       CommonMessageContext msgContext = new SOAPMessageContextJAXRPC();
/* 227 */       invContext.addAttachment(javax.xml.rpc.handler.MessageContext.class, msgContext);
/*     */     }
/*     */     else
/*     */     {
/* 231 */       msgContext = new SOAPMessageContextJAXWS();
/* 232 */       msgContext.put("javax.xml.ws.handler.message.outbound", new Boolean(false));
/* 233 */       msgContext.put("javax.xml.ws.binding.attachments.inbound", new HashMap());
/* 234 */       invContext.addAttachment(javax.xml.ws.handler.MessageContext.class, msgContext);
/*     */     }
/*     */
/* 238 */     HttpServletResponse httpResponse = null;
/* 239 */     ServletHeaderSource headerSource = null;
/* 240 */     if ((invContext instanceof ServletRequestContext))
/*     */     {
/* 242 */       ServletRequestContext reqContext = (ServletRequestContext)invContext;
/*     */
/* 244 */       ServletContext servletContext = reqContext.getServletContext();
/* 245 */       HttpServletRequest httpRequest = reqContext.getHttpServletRequest();
/* 246 */       httpResponse = reqContext.getHttpServletResponse();
/* 247 */       headerSource = new ServletHeaderSource(httpRequest, httpResponse);
/*     */
/* 249 */       if (type == EndpointMetaData.Type.JAXRPC)
/*     */       {
/* 251 */         msgContext.put("javax.xml.ws.servlet.context", servletContext);
/* 252 */         msgContext.put("javax.xml.ws.servlet.request", httpRequest);
/* 253 */         msgContext.put("javax.xml.ws.servlet.response", httpResponse);
/*     */       }
/*     */       else
/*     */       {
/* 257 */         msgContext.put("javax.xml.ws.http.request.headers", headerSource.getHeaderMap());
/* 258 */         msgContext.put("javax.xml.ws.http.request.method", httpRequest.getMethod());
/* 259 */         msgContext.put("javax.xml.ws.http.request.querystring", httpRequest.getQueryString());
/* 260 */         msgContext.put("javax.xml.ws.http.request.pathinfo", httpRequest.getPathInfo());
/* 261 */         msgContext.put("javax.xml.ws.servlet.context", servletContext);
/* 262 */         msgContext.put("javax.xml.ws.servlet.request", httpRequest);
/* 263 */         msgContext.put("javax.xml.ws.servlet.response", httpResponse);
/*     */       }
/*     */
/*     */     }
/*     */
/* 268 */     MessageContextAssociation.pushMessageContext(msgContext);
/* 269 */     msgContext.setEndpointMetaData(sepMetaData);
/*     */     try
/*     */     {
/* 273 */       MessageAbstraction resMessage = processRequest(endpoint, headerSource, invContext, inStream);
/*     */
/* 276 */       msgContext = MessageContextAssociation.peekMessageContext();
/*     */
/* 278 */       Map headers = (Map)msgContext.get("javax.xml.ws.http.response.headers");
/* 279 */       if ((headerSource != null) && (headers != null)) {
/* 280 */         headerSource.setHeaderMap(headers);
/*     */       }
/* 282 */       Integer code = (Integer)msgContext.get("javax.xml.ws.http.response.code");
/* 283 */       if ((httpResponse != null) && (code != null)) {
/* 284 */         httpResponse.setStatus(code.intValue());
/*     */       }
/* 286 */       boolean isFault = false;
/* 287 */       if ((resMessage instanceof SOAPMessage))
/*     */       {
/* 289 */         SOAPPart part = ((SOAPMessage)resMessage).getSOAPPart();
/* 290 */         if (part == null) {
/* 291 */           throw new SOAPException("Cannot obtain SOAPPart from response message");
/*     */         }
/*     */
/* 298 */         SOAPEnvelope soapEnv = part.getEnvelope();
/* 299 */         isFault = (soapEnv != null) && (soapEnv.getBody().hasFault());
/* 300 */         if ((httpResponse != null) && (isFault))
/*     */         {
/* 302 */           httpResponse.setStatus(500);
/*     */         }
/*     */       }
/*     */
/* 306 */       if (outStream != null)
/* 307 */         sendResponse(outStream, msgContext, isFault);
/*     */     }
/*     */     catch (Exception ex)
/*     */     {
/* 311 */       WSException.rethrow(ex);
/*     */     }
/*     */     finally
/*     */     {
/* 317 */       CommonMessageContext.cleanupAttachments(MessageContextAssociation.peekMessageContext());
/*     */
/* 320 */       MessageContextAssociation.popMessageContext();
/*     */
/* 323 */       ThreadLocalAssociation.clear();
/* 324 */       DOMUtils.clearThreadLocals();
/*     */     }
/*     */   }
/*     */
/*     */   private void sendResponse(OutputStream outputStream, CommonMessageContext msgContext, boolean isFault) throws SOAPException, IOException
/*     */   {
/* 330 */     MessageAbstraction resMessage = msgContext.getMessageAbstraction();
/* 331 */     String wsaTo = null;
/*     */
/* 334 */     AddressingProperties outProps = (AddressingProperties)msgContext.get("javax.xml.ws.addressing.context.outbound");
/* 335 */     if ((outProps != null) && (outProps.getTo() != null))
/*     */     {
/* 337 */       AddressingConstantsImpl ADDR = new AddressingConstantsImpl();
/* 338 */       wsaTo = outProps.getTo().getURI().toString();
/* 339 */       if (wsaTo.equals(ADDR.getAnonymousURI()))
/* 340 */         wsaTo = null;
/*     */     }
/* 342 */     if (wsaTo != null)
/*     */     {
/* 344 */       log.debug("Sending response to addressing destination: " + wsaTo);
/* 345 */       new SOAPConnectionImpl().callOneWay((SOAPMessage)resMessage, wsaTo);
/*     */     }
/*     */     else
/*     */     {
/* 349 */       resMessage.writeTo(outputStream);
/*     */     }
/*     */   }
/*     */
/*     */   private MessageAbstraction processRequest(Endpoint ep, MimeHeaderSource headerSource, InvocationContext reqContext, InputStream inputStream)
/*     */     throws BindingException
/*     */   {
/* 359 */     CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
/*     */
/* 361 */     ServerEndpointMetaData sepMetaData = (ServerEndpointMetaData)ep.getAttachment(ServerEndpointMetaData.class);
/* 362 */     if (sepMetaData == null) {
/* 363 */       throw new IllegalStateException("Cannot obtain endpoint meta data");
/*     */     }
/* 365 */     long beginProcessing = 0L;
/* 366 */     ClassLoader ctxClassLoader = Thread.currentThread().getContextClassLoader();
/*     */     try
/*     */     {
/* 369 */       Endpoint.EndpointState state = ep.getState();
/* 370 */       if (state != Endpoint.EndpointState.STARTED)
/*     */       {
/* 372 */         QName faultCode = Constants.SOAP11_FAULT_CODE_SERVER;
/* 373 */         String faultString = "Endpoint cannot handle requests in state: " + state;
/* 374 */         throw new CommonSOAPFaultException(faultCode, faultString);
/*     */       }
/*     */
/* 377 */       log.debug("BEGIN handleRequest: " + ep.getName());
/* 378 */       beginProcessing = initRequestMetrics(ep);
/*     */
/* 380 */       MimeHeaders headers = headerSource != null ? headerSource.getMimeHeaders() : null;
/*     */
/* 384 */       String bindingID = sepMetaData.getBindingId();
/*     */       MessageAbstraction reqMessage;
/*     */       MessageAbstraction reqMessage;
/* 385 */       if ("http://www.w3.org/2004/08/wsdl/http".equals(bindingID))
/*     */       {
/* 387 */         reqMessage = new HTTPMessageImpl(headers, inputStream);
/*     */       }
/*     */       else
/*     */       {
/* 392 */         this.msgFactory.setServiceMode(sepMetaData.getServiceMode());
/* 393 */         this.msgFactory.setStyle(sepMetaData.getStyle());
/*     */
/* 395 */         reqMessage = (SOAPMessageImpl)this.msgFactory.createMessage(headers, inputStream);
/*     */       }
/*     */
/* 399 */       msgContext.setMessageAbstraction(reqMessage);
/*     */
/* 402 */       MessageTrace.traceMessage("Incoming Request Message", reqMessage);
/*     */
/* 405 */       ClassLoader classLoader = sepMetaData.getClassLoader();
/* 406 */       Thread.currentThread().setContextClassLoader(classLoader);
/*     */
/* 409 */       ServiceEndpointInvoker epInvoker = (ServiceEndpointInvoker)ep.getAttachment(ServiceEndpointInvoker.class);
/* 410 */       if (epInvoker == null) {
/* 411 */         throw new IllegalStateException("Cannot obtain ServiceEndpointInvoker");
/*     */       }
/*     */
/* 414 */       epInvoker.invoke(reqContext);
/*     */
/* 417 */       msgContext = MessageContextAssociation.peekMessageContext();
/*     */
/* 420 */       MessageAbstraction resMessage = msgContext.getMessageAbstraction();
/* 421 */       if (resMessage != null) {
/* 422 */         postProcessResponse(headerSource, resMessage);
/*     */       }
/* 424 */       MessageAbstraction localMessageAbstraction1 = resMessage;
/*     */       MessageAbstraction resMessage;
/*     */       return localMessageAbstraction1;
/*     */     }
/*     */     catch (Exception ex)
/*     */     {
/* 428 */       MessageAbstraction resMessage = msgContext.getMessageAbstraction();
/*     */
/* 432 */       if ((resMessage == null) || (!resMessage.isFaultMessage()))
/*     */       {
/* 434 */         bindingProvider = new CommonBindingProvider(sepMetaData);
/* 435 */         CommonBinding binding = bindingProvider.getCommonBinding();
/* 436 */         resMessage = binding.bindFaultMessage(ex);
/*     */       }
/*     */
/* 439 */       if (resMessage != null) {
/* 440 */         postProcessResponse(headerSource, resMessage);
/*     */       }
/* 442 */       CommonBindingProvider bindingProvider = resMessage;
/*     */       MessageAbstraction resMessage;
/*     */       return bindingProvider;
/*     */     }
/*     */     finally
/*     */     {
/*     */       try
/*     */       {
/* 448 */         MessageAbstraction resMessage = msgContext.getMessageAbstraction();
/* 449 */         if (resMessage != null)
/*     */         {
/* 451 */           if (resMessage.isFaultMessage())
/*     */           {
/* 453 */             processFaultMetrics(ep, beginProcessing);
/*     */           }
/*     */           else
/*     */           {
/* 457 */             processResponseMetrics(ep, beginProcessing);
/*     */           }
/*     */         }
/*     */       }
/*     */       catch (Exception ex)
/*     */       {
/* 463 */         log.error("Cannot process metrics", ex);
/*     */       }
/*     */
/* 467 */       Thread.currentThread().setContextClassLoader(ctxClassLoader);
/* 468 */       log.debug("END handleRequest: " + ep.getName()); } throw localObject;
/*     */   }
/*     */
/*     */   private long initRequestMetrics(Endpoint endpoint)
/*     */   {
/* 474 */     long beginTime = 0L;
/*     */
/* 476 */     EndpointMetrics metrics = endpoint.getEndpointMetrics();
/* 477 */     if (metrics != null) {
/* 478 */       beginTime = metrics.processRequestMessage();
/*     */     }
/* 480 */     return beginTime;
/*     */   }
/*     */
/*     */   private void processResponseMetrics(Endpoint endpoint, long beginTime)
/*     */   {
/* 485 */     EndpointMetrics metrics = endpoint.getEndpointMetrics();
/* 486 */     if (metrics != null)
/* 487 */       metrics.processResponseMessage(beginTime);
/*     */   }
/*     */
/*     */   private void processFaultMetrics(Endpoint endpoint, long beginTime)
/*     */   {
/* 492 */     EndpointMetrics metrics = endpoint.getEndpointMetrics();
/* 493 */     if (metrics != null)
/* 494 */       metrics.processFaultMessage(beginTime);
/*     */   }
/*     */
/*     */   private void postProcessResponse(MimeHeaderSource headerSource, MessageAbstraction resMessage)
/*     */   {
/*     */     try
/*     */     {
/* 504 */       if ((headerSource != null) && ((resMessage instanceof SOAPMessage)))
/*     */       {
/* 506 */         XOPContext.eagerlyCreateAttachments();
/* 507 */         ((SOAPMessage)resMessage).saveChanges();
/* 508 */         headerSource.setMimeHeaders(resMessage.getMimeHeaders());
/*     */       }
/*     */
/* 512 */       MessageTrace.traceMessage("Outgoing Response Message", resMessage);
/*     */     }
/*     */     catch (Exception ex)
/*     */     {
/* 516 */       WSException.rethrow("Faild to post process response message", ex);
/*     */     }
/*     */   }
/*     */
/*     */   public void handleWSDLRequest(Endpoint endpoint, OutputStream outputStream, InvocationContext context)
/*     */   {
/* 522 */     log.debug("handleWSDLRequest: " + endpoint.getName());
/*     */
/* 524 */     ServerEndpointMetaData epMetaData = (ServerEndpointMetaData)endpoint.getAttachment(ServerEndpointMetaData.class);
/* 525 */     if (epMetaData == null) {
/* 526 */       throw new IllegalStateException("Cannot obtain endpoint meta data");
/*     */     }
/* 528 */     ServletRequestContext reqContext = (ServletRequestContext)context;
/* 529 */     HttpServletRequest req = reqContext.getHttpServletRequest();
/*     */     try
/*     */     {
/* 534 */       String resPath = req.getParameter("resource");
/* 535 */       URL reqURL = new URL(req.getRequestURL().toString());
/*     */
/* 537 */       String wsdlHost = reqURL.getProtocol() + "://" + reqURL.getHost();
/* 538 */       if (reqURL.getPort() != -1) {
/* 539 */         wsdlHost = wsdlHost + ":" + reqURL.getPort();
/*     */       }
/* 541 */       if (!"jbossws.undefined.host".equals(this.serverConfig.getWebServiceHost())) {
/* 542 */         wsdlHost = this.serverConfig.getWebServiceHost();
/*     */       }
/* 544 */       log.debug("WSDL request, using host: " + wsdlHost);
/*     */
/* 546 */       WSDLRequestHandler wsdlRequestHandler = new WSDLRequestHandler(epMetaData);
/* 547 */       Document document = wsdlRequestHandler.getDocumentForPath(reqURL, wsdlHost, resPath);
/*     */
/* 549 */       OutputStreamWriter writer = new OutputStreamWriter(outputStream);
/* 550 */       new DOMWriter(writer).setPrettyprint(true).print(document.getDocumentElement());
/*     */     }
/*     */     catch (RuntimeException rte)
/*     */     {
/* 554 */       throw rte;
/*     */     }
/*     */     catch (IOException ex)
/*     */     {
/* 558 */       throw new WSException(ex);
/*     */     }
/*     */   }
/*     */
/*     */   private void handleException(Exception ex) throws ServletException
/*     */   {
/* 564 */     log.error("Error processing web service request", ex);
/*     */
/* 566 */     if ((ex instanceof JAXRPCException)) {
/* 567 */       throw ((JAXRPCException)ex);
/*     */     }
/* 569 */     throw new ServletException(ex);
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.wsf.stack.jbws.RequestHandlerImpl
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.wsf.stack.jbws.RequestHandlerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.