Return-Path: Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 23425 invoked by uid 500); 7 Feb 2003 19:50:12 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 23415 invoked by uid 500); 7 Feb 2003 19:50:12 -0000 Delivered-To: apmail-xml-axis-cvs@apache.org Date: 7 Feb 2003 19:50:11 -0000 Message-ID: <20030207195011.90564.qmail@icarus.apache.org> From: jmsnell@apache.org To: xml-axis-cvs@apache.org Subject: cvs commit: xml-axis/addons/wsil README X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N jmsnell 2003/02/07 11:50:11 Added: addons/wsil/src/org/apache/axis/components/wsil InspectionServlet.java addons/wsil README Log: Simple WS-Inspection servlet that lists all of the services deployed in the Axis registry as an inspection.wsil file. Requires Apache WSIL. Tested with Axis 1.0 and 1.1beta. Revision Changes Path 1.1 xml-axis/addons/wsil/src/org/apache/axis/components/wsil/InspectionServlet.java Index: InspectionServlet.java =================================================================== package org.apache.axis.components.wsil; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.wsil.Abstract; import org.apache.wsil.Description; import org.apache.wsil.Service; import org.apache.wsil.ServiceName; import org.apache.wsil.WSILDocument; import org.apache.wsil.WSILDocumentFactory; import org.apache.wsil.WSILException; import org.apache.wsil.extension.wsdl.Reference; import org.apache.wsil.extension.wsdl.WSDLConstants; import org.apache.wsil.impl.extension.wsdl.WSDLExtensionBuilder; import org.apache.wsil.xml.XMLWriter; import org.apache.axis.AxisEngine; import org.apache.axis.AxisFault; import org.apache.axis.ConfigurationException; import org.apache.axis.EngineConfiguration; import org.apache.axis.configuration.EngineConfigurationFactoryFinder; import org.apache.axis.description.ServiceDesc; import org.apache.axis.server.AxisServer; /** * Generates a WS-Inspection document from the collection * of services deployed into the Axis server. * * @author James M Snell */ public class InspectionServlet extends HttpServlet { private AxisServer axisServer; protected static final String ATTR_AXIS_ENGINE = "AxisEngine" ; protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { WSILDocument document = generateWSILDocument(); XMLWriter writer = new XMLWriter(); writer.writeDocument(document, response.getOutputStream()); } catch (WSILException e) { throw new ServletException(e); } catch (AxisFault e) { throw new ServletException(e); } catch (ConfigurationException e) { throw new ServletException(e); } } private WSILDocument generateWSILDocument() throws WSILException, AxisFault, ConfigurationException { WSILDocumentFactory factory = WSILDocumentFactory.newInstance(); WSILDocument document = factory.newDocument(); Abstract inspectionAbstract = document.createAbstract(); inspectionAbstract.setText("Apache Axis Deployed Services"); document.getInspection().addAbstract(inspectionAbstract); AxisServer server = getEngine(); for ( Iterator i = getEngine().getConfig().getDeployedServices(); i.hasNext();) { ServiceDesc serviceDesc = (ServiceDesc)i.next(); Service wsilService = document.createService(); ServiceName wsilServiceName = document.createServiceName(); wsilServiceName.setText(serviceDesc.getName()); wsilService.addServiceName(wsilServiceName); Description wsilDescription = document.createDescription(); wsilDescription.setReferencedNamespace( WSDLConstants.NS_URI_WSDL); wsilDescription.setLocation( serviceDesc.getName() + "?WSDL"); WSDLExtensionBuilder builder = (WSDLExtensionBuilder) document.getExtensionRegistry(). getBuilder(WSDLConstants.NS_URI_WSIL_WSDL); Reference reference = (Reference)builder.createElement( Reference.QNAME); reference.setEndpointPresent(new Boolean(true)); wsilDescription.setExtensionElement(reference); wsilService.addDescription(wsilDescription); document.getInspection().addService(wsilService); } return document; } public AxisServer getEngine() throws AxisFault { if (axisServer == null) axisServer = getEngine(this); return axisServer; } public static AxisServer getEngine(HttpServlet servlet) throws AxisFault { AxisServer engine = null; ServletContext context = servlet.getServletContext(); synchronized (context) { engine = retrieveEngine(context); if (engine == null) { Map environment = getEngineEnvironment(servlet); engine = AxisServer.getServer(environment); storeEngine(context, engine); } } return engine; } private static void storeEngine(ServletContext context, AxisServer engine) { if (engine == null) { context.removeAttribute(ATTR_AXIS_ENGINE); } else { context.setAttribute(ATTR_AXIS_ENGINE, engine); } } private static AxisServer retrieveEngine(ServletContext context) { Object contextObject = context.getAttribute(ATTR_AXIS_ENGINE); if (contextObject instanceof AxisServer) { return (AxisServer) contextObject; } else { return null; } } protected static Map getEngineEnvironment(HttpServlet servlet) { Map environment = new HashMap(); String attdir= servlet.getInitParameter(AxisEngine.ENV_ATTACHMENT_DIR); if (attdir != null) environment.put(AxisEngine.ENV_ATTACHMENT_DIR, attdir); ServletContext context = servlet.getServletContext(); environment.put(AxisEngine.ENV_SERVLET_CONTEXT, context); String webInfPath = context.getRealPath("/WEB-INF"); if (webInfPath != null) environment.put(AxisEngine.ENV_SERVLET_REALPATH, webInfPath + File.separator + "attachments"); EngineConfiguration config = EngineConfigurationFactoryFinder.newFactory(context) .getServerEngineConfig(); if (config != null) { environment.put(EngineConfiguration.PROPERTY_NAME, config); } return environment; } } 1.1 xml-axis/addons/wsil/README Index: README =================================================================== Simple Http Servlet that generates a WS-Inspection document listing the collection of services in the Axis service deployment registry. The servlet assumes the following basic mapping configuration: AxisWsil org.apache.axis.components.wsil.InspectionServlet Axis org.apache.axis.transport.http.HttpServlet AxisWsil /services/inspection.wsil Axis /services/* This is just an initial drop of the code. There is definitely room for improvement in this component.