⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servicemanager.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * ServiceManager.java
 *
 * Created on 2001/12/17, 14:31
 */

package jp.co.intra_mart.framework.base.service;

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jp.co.intra_mart.common.platform.util.NameUtil;
import jp.co.intra_mart.framework.system.log.LogConstant;
import jp.co.intra_mart.framework.system.log.LogManager;
import jp.co.intra_mart.framework.system.property.PropertyHandlerException;
import jp.co.intra_mart.framework.system.property.PropertyManager;
import jp.co.intra_mart.framework.system.property.PropertyManagerException;

/**
 * 僒乕價僗儅僱乕僕儍偱偡丅
 *
 * @author INTRAMART
 * @version 1.0
 */
public class ServiceManager {

    /**
     * 僒乕價僗僼儗乕儉儚乕僋偺儘僌偺僾儗僼傿僢僋僗
     */
    static String LOG_HEAD = "[J2EE][Service]";

    /**
     * 僒乕價僗僾儘僷僥傿僴儞僪儔偺僉乕
     */
    public static final String SERVICE_PROPERTY_HANDLER_KEY = "service";

    /**
     * 奼挘巕傪巜掕偡傞僉乕
     * @since 5.0
     * @see #getExtesion()
     */
    public static final String SERVICE_EXTENSION_KEY = "jp.co.intra_mart.framework.base.service.ServiceManager.extesion";

    /**
     * 僒乕價僗僼儗乕儉儚乕僋傪僐乕儖偡傞偨傔偺僨僼僅儖僩偺奼挘巕
     * @since 5.0
     * @see #getExtesion()
     */
    public static final String DEFAULT_SERVICE_EXTENSION = "service";

    /**
     * 僒乕價僗儅僱乕僕儍庢摼僼儔僌
     */
    private static Boolean managerFlag = new Boolean(false);

    /**
     * 僒乕價僗儅僱乕僕儍
     */
    private static ServiceManager manager;

    /**
     * 僒乕價僗僾儘僷僥傿僴儞僪儔
     */
    private ServicePropertyHandler servicePropertyHandler;

    /**
     * 僒乕價僗儅僱乕僕儍傪庢摼偟傑偡丅
     *
     * @return 僒乕價僗儅僱乕僕儍
     * @throws ServiceManagerException 僒乕價僗儅僱乕僕儍偺惗惉偵幐攕偟偨
     */
    public static ServiceManager getServiceManager()
        throws ServiceManagerException {
        if (!managerFlag.booleanValue()) {
            synchronized (managerFlag) {
                if (!managerFlag.booleanValue()) {
                    try {
                        manager = new ServiceManager();
                    } catch (ServiceManagerException e) {
                        String message = null;
                        try {
                            message =
                                ResourceBundle
                                    .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                                    .getString("ServiceManager.FailedToCreateManager");
                        } catch (MissingResourceException ex) {
                        }
                        LogManager.getLogManager().getLogAgent().sendMessage(
                            ServiceManager.class.getName(),
                            LogConstant.LEVEL_ERROR,
                            LOG_HEAD + message,
                            e);
                        throw e;
                    }
                    managerFlag = new Boolean(true);
                    String message = null;
                    try {
                        message =
                            ResourceBundle
                                .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                                .getString("ServiceManager.SuccessedToCreateManager");
                    } catch (MissingResourceException ex) {
                    }
                    LogManager.getLogManager().getLogAgent().sendMessage(
                        ServiceManager.class.getName(),
                        LogConstant.LEVEL_INFO,
                        LOG_HEAD + message);
                }
            }
        }

        return manager;
    }

    /**
     * ServiceManager傪惗惉偡傞僐儞僗僩儔僋僞偱偡丅
     * 偙偺僐儞僗僩儔僋僞偼柧帵揑偵屇傃弌偡偙偲偼偱偒傑偣傫丅
     *
     * @throws ServiceManagerException 僒乕價僗儅僱乕僕儍偺惗惉偵幐攕偟偨
     */
    private ServiceManager() throws ServiceManagerException {
        PropertyManager propertyManager;

        // 僾儘僷僥傿儅僱乕僕儍偺庢摼
        try {
            propertyManager = PropertyManager.getPropertyManager();
        } catch (PropertyManagerException e) {
            String message = null;
            try {
                message =
                    ResourceBundle
                        .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                        .getString("ServiceManager.FailedToGetPropertyManager");
            } catch (MissingResourceException ex) {
            }
            throw new ServiceManagerException(message, e);
        }

        // 僒乕價僗僾儘僷僥傿僴儞僪儔偺庢摼
        try {
            this.servicePropertyHandler =
                (ServicePropertyHandler)propertyManager.getPropertyHandler(
                    SERVICE_PROPERTY_HANDLER_KEY);
        } catch (PropertyHandlerException e) {
            String message = null;
            try {
                message =
                    ResourceBundle
                        .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                        .getString("ServiceManager.FailedToGetServicePropertyHandler");
            } catch (MissingResourceException ex) {
            }
            throw new ServiceManagerException(
                message + " : " + SERVICE_PROPERTY_HANDLER_KEY,
                e);
        }
    }

    /**
     * 僒乕價僗僾儘僷僥傿僴儞僪儔傪庢摼偟傑偡丅
     *
     * @return 僒乕價僗僾儘僷僥傿僴儞僪儔
     */
    public ServicePropertyHandler getServicePropertyHandler() {
        return this.servicePropertyHandler;
    }

    /**
     * 僒乕價僗僐儞僩儘乕儔傪庢摼偟傑偡丅
     * 奩摉偡傞僒乕價僗僐儞僩儘乕儔偑懚嵼偟側偄応崌丄null傪曉偟傑偡丅
     * 偙偺儊僜僢僪偼{@link #getServiceController(java.lang.String, java.lang.String, java.util.Locale) getServiceController(application, service, null)}傪屇傫偩偲偒偲摨偠寢壥傪曉偟傑偡丅
     *
     * @param application 傾僾儕働乕僔儑儞
     * @param service 僒乕價僗
     * @return 僒乕價僗僐儞僩儘乕儔丄懚嵼偟側偄応崌偼null
     * @throws ServicePropertyException 僒乕價僗僾儘僷僥傿偺庢摼帪偵椺奜偑敪惗
     * @throws ServiceControllerException 僒乕價僗僐儞僩儘乕儔庢摼帪偵椺奜偑敪惗
     * @deprecated 偙偺儊僜僢僪偱偼側偔{@link #getServiceController(java.lang.String, java.lang.String, java.util.Locale)}傪巊梡偟偰偔偩偝偄丅
     */
    public ServiceController getServiceController(
        String application,
        String service)
        throws ServicePropertyException, ServiceControllerException {

        return getServiceController(application, service, null);
    }

    /**
     * 僒乕價僗僐儞僩儘乕儔傪庢摼偟傑偡丅
     * 巜掕偝傟偨傾僾儕働乕僔儑儞ID丄僒乕價僗ID丄儘働乕儖偵奩摉偡傞僒乕價僗僐儞僩儘乕儔傪庢摼偟傑偡丅
     * 奩摉偡傞僒乕價僗僐儞僩儘乕儔偑懚嵼偟側偄応崌丄null傪曉偟傑偡丅
     *
     * @param application 傾僾儕働乕僔儑儞
     * @param service 僒乕價僗
     * @param locale 儘働乕儖
     * @return 僒乕價僗僐儞僩儘乕儔丄懚嵼偟側偄応崌偼null
     * @throws ServicePropertyException 僒乕價僗僾儘僷僥傿偺庢摼帪偵椺奜偑敪惗
     * @throws ServiceControllerException 僒乕價僗僐儞僩儘乕儔庢摼帪偵椺奜偑敪惗
     * @since 4.2
     */
    public ServiceController getServiceController(
        String application,
        String service,
        Locale locale)
        throws ServicePropertyException, ServiceControllerException {

        String name = null;
        Object controllerObject = null;
        ServiceController controller = null;

        // 巜掕偝傟偨傾僾儕働乕僔儑儞偲僒乕價僗偐傜僒乕價僗僐儞僩儘乕儔傪惗惉
        name =
            this.servicePropertyHandler.getServiceControllerName(
                application,
                service,
                locale);
        if (name == null) {
            controller = null;
        } else {
            try {
                controllerObject = Class.forName(name).newInstance();
            } catch (Exception e) {
                String message = null;
                try {
                    message =
                        ResourceBundle
                            .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                            .getString("ServiceManager.FailedToCreateController");
                } catch (MissingResourceException ex) {
                }
                throw new ServiceControllerException(
                    message
                        + " : controller class = "
                        + name
                        + ", application = "
                        + application
                        + ", service = "
                        + service
                        + ", locale = "
                        + locale,
                    e);
            }
            if (controllerObject instanceof ServiceController) {
                controller = (ServiceController)controllerObject;
            } else {
                String message = null;
                try {
                    message =
                        ResourceBundle
                            .getBundle("jp.co.intra_mart.framework.base.service.i18n")
                            .getString("ServiceManager.ControllerImplemented");
                } catch (MissingResourceException ex) {
                }
                throw new ServiceControllerException(
                    message
                        + " : controller class = "
                        + name
                        + ", application = "
                        + application
                        + ", service = "
                        + service
                        + ", locale = "
                        + locale);
            }
        }

        return controller;
    }

    /**
     * 僩儔儞僕僔儑儞傪庢摼偟傑偡丅
     * 奩摉偡傞僩儔儞僕僔儑儞偑懚嵼偟側偄応崌丄{@link DefaultTransition}傪曉偟傑偡丅
     * 偙偺儊僜僢僪偼{@link #getTransition(java.lang.String, java.lang.String, java.util.Locale) getTransition(application, service, null)}傪屇傫偩偲偒偲摨偠寢壥傪曉偟傑偡丅
     *
     * @param application 傾僾儕働乕僔儑儞
     * @param service 僒乕價僗

⌨️ 快捷键说明

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