odelifecycle.java

来自「bpel执行引擎用来执行bpel业务流程」· Java 代码 · 共 462 行 · 第 1/2 页

JAVA
462
字号
        _ode._server.setBindingContext(new BindingContextImpl(_ode));        _ode._server.setScheduler(_ode._scheduler);	_ode._server.setConfigProperties(_ode._config.getProperties());        _ode._server.init();    }    /**     * Initialize the data store.     *     * @throws JBIException     */    private void initDao() throws JBIException {        BpelDAOConnectionFactoryJDBC cf;        try {            cf = _db.createDaoCF();        } catch (DatabaseConfigException e) {            String errmsg = __msgs.msgDAOInstantiationFailed(_ode._config.getDAOConnectionFactory());            throw new JBIException(errmsg,e);        }        _ode._daocf = cf;    }    private void initConnector() throws JBIException {        int port = _ode._config.getConnectorPort();        if (port == 0) {            __log.info("Skipping connector initialization.");        } else {            _connector = new BpelServerConnector();            _connector.setBpelServer(_ode._server);            _connector.setProcessStore(_ode._store);            _connector.setPort(_ode._config.getConnectorPort());            _connector.setId(_ode._config.getConnectorName());            try {                _connector.start();            } catch (Exception e) {                __log.error("Failed to initialize JCA connector (check security manager configuration)");                __log.debug("Failed to initialize JCA connector (check security manager configuration)", e);            }        }    }    private void registerMBean() throws JBIException {        ProcessAndInstanceManagementMBean pmapi = new ProcessAndInstanceManagementMBean(_ode._server,_ode._store);        MBeanServer server = _ode.getContext().getMBeanServer();        try {            if (server != null) {                _mbeanName = _ode.getContext().getMBeanNames().createCustomComponentMBeanName("Management");                if (server.isRegistered(_mbeanName)) {                    server.unregisterMBean(_mbeanName);                }                server.registerMBean(pmapi, _mbeanName);            }        } catch (Exception e) {            throw new JBIException(e);        }    }    private void unregisterMBean() throws JBIException {        try {            if (_mbeanName != null) {                MBeanServer server = _ode.getContext().getMBeanServer();                assert server != null;                if (server.isRegistered(_mbeanName)) {                    server.unregisterMBean(_mbeanName);                }            }        } catch (Exception e) {            throw new JBIException(e);        }    }    private void registerEventListeners() {        String listenersStr = _ode._config.getEventListeners();        if (listenersStr != null) {            for (String listenerCN : listenersStr.split("\\s*(,|;)\\s*")) {                try {                    _ode._server.registerBpelEventListener((BpelEventListener) Class.forName(listenerCN).newInstance());                    __log.info(__msgs.msgBpelEventListenerRegistered(listenerCN));                } catch (Exception e) {                    __log.warn("Couldn't register the event listener " + listenerCN + ", the class couldn't be "                            + "loaded properly.");                }            }        }    }    private void registerMexInterceptors() {        String listenersStr = _ode._config.getMessageExchangeInterceptors();        if (listenersStr != null) {            for (String interceptorCN : listenersStr.split("\\s*(,|;)\\s*")) {                try {                    _ode._server.registerMessageExchangeInterceptor((MessageExchangeInterceptor) Class.forName(interceptorCN).newInstance());                    __log.info(__msgs.msgMessageExchangeInterceptorRegistered(interceptorCN));                } catch (Exception e) {                    __log.warn("Couldn't register the event listener " + interceptorCN + ", the class couldn't be "                            + "loaded properly: " + e);                }            }        }    }    public synchronized void start() throws JBIException {        if (_started)            return;        try {            __log.info(__msgs.msgOdeStarting());            if (!_initSuccess) {                String errmsg = "attempt to call start() after init() failure.";                IllegalStateException ex = new IllegalStateException(errmsg);                __log.fatal(errmsg, ex);                throw new JBIException(errmsg, ex);            }            if (_ode.getChannel() == null) {                throw (new JBIException("No channel!", new NullPointerException()));            }            try {                _ode._server.start();            } catch (Exception ex) {                String errmsg = __msgs.msgOdeBpelServerStartFailure();                __log.error(errmsg, ex);                throw new JBIException(errmsg, ex);            }            _receiver = new Receiver(_ode);            _receiver.start();            _started = true;            __log.info(__msgs.msgOdeStarted());        } finally {            if (!_started) {                if (_receiver != null) {                    _receiver.cease();                }                _receiver = null;            }        }    }    public synchronized void stop() throws JBIException {        if (!_started) {            return;        }        __log.info("Stopping ODE.");        try {            if (_receiver != null) {                try {                    _receiver.cease();                } catch (Exception ex) {                    __log.fatal("Error ceasing receiver.", ex);                } finally {                    _receiver = null;                }            }            try {                _ode._server.stop();            } catch (Throwable ex) {                __log.fatal("Error stopping services.", ex);            }            __log.info("ODE stopped.");        } finally {            _started = false;        }    }    /**     * Shutdown the service engine. This performs cleanup before the BPE is terminated. Once this method has been called, init()     * must be called before the transformation engine can be started again with a call to start().     *     * @throws javax.jbi.JBIException     *             if the transformation engine is unable to shut down.     */    public void shutDown() throws JBIException {        ClassLoader old = Thread.currentThread().getContextClassLoader();        Thread.currentThread().setContextClassLoader(getClass().getClassLoader());        unregisterMBean();        _ode.deactivatePMAPIs();        if (_connector != null) {            try {                _connector.shutdown();            } catch (Exception e) {                __log.error("Error shutting down JCA server.", e);            }            _connector = null;        }        try {            try {                __log.debug("shutting down quartz scheduler.");                _ode._scheduler.shutdown();            } catch (Exception ex) {            }            try {                _db.shutdown();            } catch (Exception ex) {                __log.debug("error shutting down db.", ex);            } finally {                _db = null;            }            __log.debug("cleaning up temporary files.");            TempFileManager.cleanup();            _suManager = null;            _ode = null;            __log.info("Shutdown completed.");        } finally {            Thread.currentThread().setContextClassLoader(old);        }    }}

⌨️ 快捷键说明

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