/*
* 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);
}
} |