integrationconfigurator.java

来自「ejb3 java session bean」· Java 代码 · 共 103 行

JAVA
103
字号
/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. * * This is free software; you can redistribute it and/or modify it * under the terms of the JBPM BPEL PUBLIC LICENSE AGREEMENT as * published by JBoss Inc.; either version 1.0 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */package org.jbpm.bpel.integration.server;import javax.jms.JMSException;import javax.naming.NamingException;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.jbpm.JbpmConfiguration;import org.jbpm.JbpmContext;import org.jbpm.bpel.BpelException;import org.jbpm.bpel.deploy.DeploymentDescriptor;import org.jbpm.bpel.graph.def.BpelProcessDefinition;import org.jbpm.bpel.integration.jms.IntegrationControl;import org.jbpm.bpel.integration.jms.JmsIntegrationServiceFactory;/** * @author Alejandro Guizar * @version $Revision: 1.7 $ $Date: 2007/10/17 22:02:51 $ */public class IntegrationConfigurator implements ServletContextListener {  /** Initialization parameter for the jBPM configuration resource. */  public static final String JBPM_CONFIG_RESOURCE_PARAM = "JbpmCfgResource";  private static final Log log = LogFactory.getLog(IntegrationConfigurator.class);  public void contextInitialized(ServletContextEvent event) {    ServletContext servletContext = event.getServletContext();    String configResource = servletContext.getInitParameter(JBPM_CONFIG_RESOURCE_PARAM);    JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(configResource);    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();    try {      // read the app descriptor from a classpath resource      DeploymentDescriptor deploymentDescriptor = DeploymentDescriptor.readDeploymentDescriptor(jbpmContext);      // obtain the integration control for the process definition referenced in the descriptor      BpelProcessDefinition processDefinition = deploymentDescriptor.findProcessDefinition(jbpmContext);      JmsIntegrationServiceFactory integrationServiceFactory = JmsIntegrationServiceFactory.getConfigurationInstance(jbpmConfiguration);      IntegrationControl integrationControl = integrationServiceFactory.getIntegrationControl(processDefinition);      // make app descriptor available to message activities      integrationControl.setDeploymentDescriptor(deploymentDescriptor);      // start receiving requests      integrationControl.enableInboundMessageActivities(jbpmContext);      // make integration control available to jax-rpc handlers      servletContext.setAttribute(SoapHandler.INTEGRATION_CONTROL_ATTR, integrationControl);      log.info("message reception enabled for process: " + deploymentDescriptor.getName());    }    catch (RuntimeException e) {      jbpmContext.setRollbackOnly();      throw e;    }    catch (NamingException e) {      jbpmContext.setRollbackOnly();      throw new BpelException("could not start bpel application", e);    }    catch (JMSException e) {      jbpmContext.setRollbackOnly();      throw new BpelException("could not start bpel application", e);    }    finally {      jbpmContext.close();    }  }  public void contextDestroyed(ServletContextEvent event) {    IntegrationControl integrationControl = (IntegrationControl) event.getServletContext()        .getAttribute(SoapHandler.INTEGRATION_CONTROL_ATTR);    // ensure integration control is bound to servlet context, as initialization may have failed    if (integrationControl != null) {      try {        integrationControl.disableInboundMessageActivities();        log.info("message reception disabled for process: "            + integrationControl.getDeploymentDescriptor().getName());      }      catch (JMSException e) {        log.error("could not stop bpel application", e);      }    }  }}

⌨️ 快捷键说明

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