getconfigurationresponsecommand.java

来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 108 行

JAVA
108
字号
/*                                                                              * Copyright 2004,2005 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.axis2.clustering.control;import org.apache.axis2.clustering.ClusteringConstants;import org.apache.axis2.clustering.ClusteringFault;import org.apache.axis2.clustering.ClusteringUtils;import org.apache.axis2.context.ConfigurationContext;import org.apache.axis2.engine.AxisConfiguration;import org.apache.axis2.description.AxisServiceGroup;import org.apache.axis2.description.AxisService;import org.apache.axis2.description.AxisModule;import org.apache.axis2.AxisFault;import java.io.FileNotFoundException;import java.util.Iterator;/** * */public class GetConfigurationResponseCommand extends ControlCommand {    private String[] serviceGroups;    public void execute(ConfigurationContext configContext) throws ClusteringFault {        AxisConfiguration axisConfig = configContext.getAxisConfiguration();        // Run this code only if this node is not already initialized        if (configContext.                getPropertyNonReplicable(ClusteringConstants.CLUSTER_INITIALIZED) == null) {            if (serviceGroups != null) {                // Load all the service groups that are sent by the neighbour                for (int i = 0; i < serviceGroups.length; i++) {                    String serviceGroup = serviceGroups[i];                    if (axisConfig.getServiceGroup(serviceGroup) == null) {                        //Load the service group                        try {                            ClusteringUtils.loadServiceGroup(serviceGroup,                                                             configContext,                                                             System.getProperty("axis2.work.dir")); //TODO: Introduce a constant. work dir is a temp dir.                        } catch (FileNotFoundException ignored) {                        } catch (Exception e) {                            throw new ClusteringFault(e);                        }                    }                }                // Unload all service groups which were not sent by the neighbour,                // but have been currently loaded                for (Iterator iter = axisConfig.getServiceGroups(); iter.hasNext();) {                    AxisServiceGroup serviceGroup = (AxisServiceGroup) iter.next();                    boolean foundServiceGroup = false;                    for (int i = 0; i < serviceGroups.length; i++) {                        String serviceGroupName = serviceGroups[i];                        if (serviceGroup.getServiceGroupName().equals(serviceGroupName)) {                            foundServiceGroup = true;                            break;                        }                    }                    if (!foundServiceGroup) {                        boolean mustUnloadServiceGroup = true;                        // Verify that this service was not loaded from within a module                        // If so, we must not unload such a service                        for (Iterator serviceIter = serviceGroup.getServices();                             serviceIter.hasNext();) {                            AxisService service = (AxisService) serviceIter.next();                            if (service.isClientSide() ||                                service.getParameter(AxisModule.MODULE_SERVICE) != null) {                                mustUnloadServiceGroup = false;                                break; // Do not unload service groups containing client side services                            }                        }                        if (mustUnloadServiceGroup) {                            try {                                axisConfig.removeServiceGroup(serviceGroup.getServiceGroupName());                            } catch (Exception e) {                                throw new ClusteringFault(e);                            }                        }                    }                }            }        }    }    public void setServiceGroups(String[] serviceGroups) {        this.serviceGroups = serviceGroups;    }    public String toString() {        return "GetConfigurationResponseCommand";    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?