| /* |
| * Copyright 2003,2004 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.axis.management; |
| |
| import org.apache.axis.AxisFault; |
| import org.apache.axis.ConfigurationException; |
| import org.apache.axis.EngineConfiguration; |
| import org.apache.axis.WSDDEngineConfiguration; |
| import org.apache.axis.deployment.wsdd.WSDDGlobalConfiguration; |
| import org.apache.axis.deployment.wsdd.WSDDHandler; |
| import org.apache.axis.deployment.wsdd.WSDDService; |
| import org.apache.axis.deployment.wsdd.WSDDTransport; |
| import org.apache.axis.description.ServiceDesc; |
| import org.apache.axis.handlers.soap.SOAPService; |
| import org.apache.axis.management.jmx.DeploymentAdministrator; |
| import org.apache.axis.management.jmx.DeploymentQuery; |
| import org.apache.axis.management.jmx.ServiceAdministrator; |
| import org.apache.axis.server.AxisServer; |
| |
| import javax.xml.namespace.QName; |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| |
| /** |
| * The ServiceControl Object is responsible for starting and |
| * stopping specific services |
| * |
| * @author bdillon |
| * @version 1.0 |
| */ |
| public class ServiceAdmin { |
| //Singleton AxisServer for Management |
| static private AxisServer axisServer = null; |
| |
| /** |
| * Start the Service |
| * |
| * @param serviceName |
| * @throws AxisFault ConfigurationException |
| */ |
| static public void startService(String serviceName) |
| throws AxisFault, ConfigurationException { |
| AxisServer server = getEngine(); |
| try { |
| SOAPService service = server.getConfig().getService( |
| new QName("", serviceName)); |
| service.start(); |
| } catch (ConfigurationException configException) { |
| if (configException.getContainedException() instanceof AxisFault) { |
| throw (AxisFault) configException.getContainedException(); |
| } else { |
| throw configException; |
| } |
| } |
| } |
| |
| /** |
| * Stop the Service |
| * |
| * @param serviceName |
| * @throws AxisFault ConfigurationException |
| */ |
| static public void stopService(String serviceName) |
| throws AxisFault, ConfigurationException { |
| AxisServer server = getEngine(); |
| try { |
| SOAPService service = server.getConfig().getService( |
| new QName("", serviceName)); |
| service.stop(); |
| } catch (ConfigurationException configException) { |
| if (configException.getContainedException() instanceof AxisFault) { |
| throw (AxisFault) configException.getContainedException();//Throw Axis fault if ist. of |
| } else { |
| throw configException; |
| } |
| } |
| } |
| |
| /** |
| * List all registered services |
| * |
| * @return Map of Services (SOAPService objects, Key is the ServiceName) |
| * @throws AxisFault ConfigurationException |
| */ |
| static public String[] listServices() |
| throws AxisFault, ConfigurationException { |
| ArrayList list = new ArrayList(); |
| AxisServer server = getEngine(); |
| Iterator iter; // get list of ServiceDesc objects |
| try { |
| iter = server.getConfig().getDeployedServices(); |
| } catch (ConfigurationException configException) { |
| if (configException.getContainedException() instanceof AxisFault) { |
| throw (AxisFault) configException.getContainedException();//Throw Axis fault if inst. of |
| } else { |
| throw configException; |
| } |
| } |
| while (iter.hasNext()) { |
| ServiceDesc sd = (ServiceDesc) iter.next(); |
| String name = sd.getName(); |
| list.add(name); |
| } |
| return (String[]) list.toArray(new String[list.size()]); |
| } |
| |
| /** |
| * Get the singleton engine for this management object |
| * |
| * @return |
| * @throws AxisFault |
| */ |
| static public AxisServer getEngine() throws AxisFault { |
| if (axisServer == null) { |
| //Throw a could not get AxisEngine Exception |
| throw new AxisFault( |
| "Unable to locate AxisEngine for ServiceAdmin Object"); |
| } |
| return axisServer; |
| } |
| |
| /** |
| * Set the singleton engine |
| * |
| * @param axisSrv |
| */ |
| static public void setEngine(AxisServer axisSrv, String name) { |
| ServiceAdmin.axisServer = axisSrv; |
| Registrar.register(new ServiceAdministrator(), "axis:type=server", "ServiceAdministrator"); |
| Registrar.register(new DeploymentAdministrator(), "axis:type=deploy", "DeploymentAdministrator"); |
| Registrar.register(new DeploymentQuery(), "axis:type=query", "DeploymentQuery"); |
| } |
| |
| static public void start() { |
| if (axisServer != null) { |
| axisServer.start(); |
| } |
| } |
| |
| static public void stop() { |
| if (axisServer != null) { |
| axisServer.stop(); |
| } |
| } |
| |
| static public void restart() { |
| if (axisServer != null) { |
| axisServer.stop(); |
| axisServer.start(); |
| } |
| } |
| |
| static public void saveConfiguration() { |
| if (axisServer != null) { |
| axisServer.saveConfiguration(); |
| } |
| } |
| |
| static private WSDDEngineConfiguration getWSDDEngineConfiguration() { |
| if (axisServer != null) { |
| EngineConfiguration config = axisServer.getConfig(); |
| if (config instanceof WSDDEngineConfiguration) { |
| return (WSDDEngineConfiguration) config; |
| } else { |
| throw new RuntimeException("WSDDDeploymentHelper.getWSDDEngineConfiguration(): EngineConguration not of type WSDDEngineConfiguration"); |
| } |
| } |
| return null; |
| } |
| |
| static public void setGlobalConfig(WSDDGlobalConfiguration globalConfig) { |
| getWSDDEngineConfiguration().getDeployment().setGlobalConfiguration(globalConfig); |
| } |
| |
| static public WSDDGlobalConfiguration getGlobalConfig() { |
| return getWSDDEngineConfiguration().getDeployment().getGlobalConfiguration(); |
| } |
| |
| static public WSDDHandler getHandler(QName qname) { |
| return getWSDDEngineConfiguration().getDeployment().getWSDDHandler(qname); |
| } |
| |
| static public WSDDHandler[] getHandlers() { |
| return getWSDDEngineConfiguration().getDeployment().getHandlers(); |
| } |
| |
| static public WSDDService getService(QName qname) { |
| return getWSDDEngineConfiguration().getDeployment().getWSDDService(qname); |
| } |
| |
| static public WSDDService[] getServices() { |
| return getWSDDEngineConfiguration().getDeployment().getServices(); |
| } |
| |
| static public WSDDTransport getTransport(QName qname) { |
| return getWSDDEngineConfiguration().getDeployment().getWSDDTransport(qname); |
| } |
| |
| static public WSDDTransport[] getTransports() { |
| return getWSDDEngineConfiguration().getDeployment().getTransports(); |
| } |
| |
| static public void deployHandler(WSDDHandler handler) { |
| getWSDDEngineConfiguration().getDeployment().deployHandler(handler); |
| } |
| |
| static public void deployService(WSDDService service) { |
| getWSDDEngineConfiguration().getDeployment().deployService(service); |
| } |
| |
| static public void deployTransport(WSDDTransport transport) { |
| getWSDDEngineConfiguration().getDeployment().deployTransport(transport); |
| } |
| |
| static public void undeployHandler(QName qname) { |
| getWSDDEngineConfiguration().getDeployment().undeployHandler(qname); |
| } |
| |
| static public void undeployService(QName qname) { |
| getWSDDEngineConfiguration().getDeployment().undeployService(qname); |
| } |
| |
| static public void undeployTransport(QName qname) { |
| getWSDDEngineConfiguration().getDeployment().undeployTransport(qname); |
| } |
| } |