📄 axisservicecomponent.java
字号:
Map.Entry entry; for (Iterator iterator = params.entrySet().iterator(); iterator.hasNext();) { entry = (Map.Entry)iterator.next(); args.append("<").append(entry.getKey()).append(">"); args.append(entry.getValue()); args.append("</").append(entry.getKey()).append(">"); } if (method == null) { response.setProperty(HttpConstants.HEADER_CONTENT_TYPE, "text/html"); response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "400"); response.write("<h2>" + Messages.getMessage("error00") + ": " + Messages.getMessage("invokeGet00") + "</h2>"); response.write("<p>" + Messages.getMessage("noMethod01") + "</p>"); } else { invokeEndpointFromGet(msgContext, response, method, args.toString()); } } protected void processWsdlRequest(MessageContext msgContext, WriterMessageAdapter response) throws AxisFault { AxisEngine engine = getAxis(); try { engine.generateWSDL(msgContext); Document doc = (Document)msgContext.getProperty("WSDL"); if (doc != null) { response.setProperty(HttpConstants.HEADER_CONTENT_TYPE, "text/xml"); XMLUtils.DocumentToWriter(doc, response.getWriter()); } else { if (logger.isDebugEnabled()) { logger.debug("processWsdlRequest: failed to create WSDL"); } reportNoWSDL(response, "noWSDL02", null); } } catch (AxisFault axisFault) { if (axisFault.getFaultCode().equals(Constants.QNAME_NO_SERVICE_FAULT_CODE)) { processAxisFault(axisFault); response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "404"); reportNoWSDL(response, "noWSDL01", axisFault); } else { throw axisFault; } } } protected void invokeEndpointFromGet(MessageContext msgContext, WriterMessageAdapter response, String method, String args) throws AxisFault { String body = "<" + method + ">" + args + "</" + method + ">"; String msgtxt = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Body>" + body + "</SOAP-ENV:Body>" + "</SOAP-ENV:Envelope>"; Message responseMsg = null; try { ByteArrayInputStream istream = new ByteArrayInputStream(msgtxt.getBytes("ISO-8859-1")); AxisEngine engine = getAxis(); Message msg = new Message(istream, false); msgContext.setRequestMessage(msg); AxisServiceProxy.setProperties(RequestContext.getEvent().getEndpoint().getProperties()); engine.invoke(msgContext); responseMsg = msgContext.getResponseMessage(); response.setProperty(HTTPConstants.HEADER_CACHE_CONTROL, "no-cache"); response.setProperty(HTTPConstants.HEADER_PRAGMA, "no-cache"); if (responseMsg == null) { throw new Exception(Messages.getMessage("noResponse01")); } } catch (AxisFault fault) { processAxisFault(fault); configureResponseFromAxisFault(response, fault); responseMsg = new Message(fault); } catch (Exception e) { response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "500"); responseMsg = convertExceptionToAxisFault(e, responseMsg); } response.setProperty(HTTPConstants.HEADER_CONTENT_TYPE, "text/xml"); response.write(responseMsg.getSOAPPartAsString()); } protected void reportServiceInfo(WriterMessageAdapter response, SOAPService service, String serviceName) { response.setProperty(HttpConstants.HEADER_CONTENT_TYPE, "text/html"); response.write("<h1>" + service.getName() + "</h1>"); response.write("<p>" + Messages.getMessage("axisService00") + "</p>"); response.write("<i>" + Messages.getMessage("perhaps00") + "</i>"); } protected void processListRequest(WriterMessageAdapter response) throws AxisFault { AxisEngine engine = getAxis(); response.setProperty(HTTPConstants.HEADER_CONTENT_TYPE, "text/html"); if (enableList) { Document doc = Admin.listConfig(engine); if (doc != null) { XMLUtils.DocumentToWriter(doc, response.getWriter()); } else { response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "404"); response.write("<h2>" + Messages.getMessage("error00") + "</h2>"); response.write("<p>" + Messages.getMessage("noDeploy00") + "</p>"); } } else { response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "403"); response.write("<h2>" + Messages.getMessage("error00") + "</h2>"); response.write("<p><i>?list</i> " + Messages.getMessage("disabled00") + "</p>"); } } private void reportNoWSDL(WriterMessageAdapter response, String moreDetailCode, AxisFault axisFault) { response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "404"); response.setProperty(HTTPConstants.HEADER_CONTENT_TYPE, "text/html"); response.write("<h2>" + Messages.getMessage("error00") + "</h2>"); response.write("<p>" + Messages.getMessage("noWSDL00") + "</p>"); if (moreDetailCode != null) { response.write("<p>" + Messages.getMessage(moreDetailCode) + "</p>"); } } protected void reportAvailableServices(MuleEventContext context, WriterMessageAdapter response) throws ConfigurationException, AxisFault { AxisEngine engine = getAxis(); response.setProperty(HttpConstants.HEADER_CONTENT_TYPE, "text/html"); response.write("<h2>And now... Some Services</h2>"); String version = MuleManifest.getProductVersion(); if (version == null) { version = "Version Not Set"; } response.write("<h5>(Mule - " + version + ")</h5>"); Iterator i; try { response .write("<table width=\"400\"><tr><th>Mule Component Services</th><th>Axis Services</th></tr><tr><td width=\"200\" valign=\"top\">"); i = engine.getConfig().getDeployedServices(); listServices(i, response); response.write("</td><td width=\"200\" valign=\"top\">"); i = ((MuleConfigProvider)engine.getConfig()).getAxisDeployedServices(); listServices(i, response); response.write("</td></tr></table>"); } catch (ConfigurationException configException) { if (configException.getContainedException() instanceof AxisFault) { throw (AxisFault)configException.getContainedException(); } else { throw configException; } } } private void listServices(Iterator i, WriterMessageAdapter response) { response.write("<ul>"); while (i.hasNext()) { ServiceDesc sd = (ServiceDesc)i.next(); StringBuffer sb = new StringBuffer(512); sb.append("<li>"); String name = sd.getName(); sb.append(name); sb.append(" <a href=\""); if (sd.getEndpointURL() != null) { sb.append(sd.getEndpointURL()); if (!sd.getEndpointURL().endsWith("/")) { sb.append("/"); } } sb.append(name); sb.append("?wsdl\"><i>(wsdl)</i></a></li>"); response.write(sb.toString()); if (sd.getDocumentation() != null) { response.write("<ul><h6>" + sd.getDocumentation() + "</h6></ul>"); } ArrayList operations = sd.getOperations(); if (!operations.isEmpty()) { response.write("<ul>"); OperationDesc desc; for (Iterator it = operations.iterator(); it.hasNext();) { desc = (OperationDesc)it.next(); response.write("<li>" + desc.getName()); } response.write("</ul>"); } } response.write("</ul>"); } protected void reportCantGetAxisService(MuleEventContext context, WriterMessageAdapter response) { response.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, "404"); response.setProperty(HttpConstants.HEADER_CONTENT_TYPE, "text/html"); response.write("<h2>" + Messages.getMessage("error00") + "</h2>"); response.write("<p>" + Messages.getMessage("noService06") + "</p>"); } protected void doPost(MuleEventContext context, WriterMessageAdapter response) throws Exception { String soapAction; Message responseMsg; AxisEngine engine = getAxis(); if (engine == null) { throw new MessagingException(CoreMessages.objectIsNull("Axis Engine"), context.getMessage()); } MessageContext msgContext = new MessageContext(engine); String contentType; try { EndpointURI endpointUri = getEndpoint(context); populateMessageContext(msgContext, context, endpointUri); if (securityProvider != null) { if (logger.isDebugEnabled()) { logger.debug("securityProvider:" + securityProvider); } msgContext.setProperty("securityProvider", securityProvider); } Object request = context.transformMessage(); if (request instanceof File) { request = new FileInputStream((File)request); } else if (request instanceof byte[]) { request = new ByteArrayInputStream((byte[])request); } Message requestMsg = new Message(request, false, context.getMessage().getStringProperty( HTTPConstants.HEADER_CONTENT_TYPE, null), context.getMessage().getStringProperty( HTTPConstants.HEADER_CONTENT_LOCATION, null)); if (logger.isDebugEnabled()) { logger.debug("Request Message:" + requestMsg); } msgContext.setRequestMessage(requestMsg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -