jmsintegrationservicefactory.java

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

JAVA
159
字号
/* * 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.jms;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.jbpm.JbpmConfiguration;import org.jbpm.bpel.BpelException;import org.jbpm.bpel.integration.IntegrationService;import org.jbpm.graph.def.ProcessDefinition;import org.jbpm.svc.Service;import org.jbpm.svc.ServiceFactory;/** * @author Alejandro Guizar * @version $Revision: 1.14 $ $Date: 2008/06/12 08:18:54 $ */public class JmsIntegrationServiceFactory implements ServiceFactory {  // injected objects, see jbpm.cfg.xml  private JbpmConfiguration jbpmConfiguration;  private String connectionFactoryName = "java:comp/env/jms/JbpmConnectionFactory";  private String requestDestinationName = "java:comp/env/jms/RequestQueue";  private String responseDestinationName = "java:comp/env/jms/ResponseQueue";  private ConnectionFactory connectionFactory;  private Destination requestDestination;  private Destination responseDestination;  private Map integrationControls = new HashMap();  private static final long serialVersionUID = 1L;  private static final Log log = LogFactory.getLog(JmsIntegrationServiceFactory.class);  public Service openService() {    return new JmsIntegrationService(this);  }  public void close() {    for (Iterator i = integrationControls.values().iterator(); i.hasNext();) {      IntegrationControl integrationControl = (IntegrationControl) i.next();      try {        integrationControl.disableInboundMessageActivities();      }      catch (JMSException e) {        log.warn("could not disable inbound message activities", e);      }    }  }  public void setConnectionFactoryName(String connectionFactoryName) {    this.connectionFactoryName = connectionFactoryName;  }  public void setRequestDestinationName(String requestDestinationName) {    this.requestDestinationName = requestDestinationName;  }  public void setResponseDestinationName(String responseDestinationName) {    this.responseDestinationName = responseDestinationName;  }  public JbpmConfiguration getJbpmConfiguration() {    return jbpmConfiguration;  }  public ConnectionFactory getConnectionFactory() {    if (connectionFactory == null && connectionFactoryName != null) {      try {        connectionFactory = (ConnectionFactory) lookup(connectionFactoryName);      }      catch (NamingException e) {        log.warn("could not retrieve connection factory", e);      }    }    return connectionFactory;  }  public Destination getRequestDestination() {    if (requestDestination == null && requestDestinationName != null) {      try {        requestDestination = (Destination) lookup(requestDestinationName);      }      catch (NamingException e) {        log.warn("could not retrieve request destination", e);      }    }    return requestDestination;  }  public Destination getResponseDestination() {    if (responseDestination == null) {      if (responseDestinationName == null) {        throw new IllegalStateException(            "response destination name not specified in jbpm configuration");      }      try {        responseDestination = (Destination) lookup(responseDestinationName);      }      catch (NamingException e) {        throw new BpelException("could not retrieve response destination", e);      }    }    return responseDestination;  }  private static Object lookup(String name) throws NamingException {    Context initialContext = new InitialContext();    try {      return initialContext.lookup(name);    }    finally {      initialContext.close();    }  }  public IntegrationControl getIntegrationControl(ProcessDefinition processDefinition) {    Long processDefinitionId = new Long(processDefinition.getId());    synchronized (integrationControls) {      IntegrationControl integrationControl = (IntegrationControl) integrationControls.get(processDefinitionId);      if (integrationControl == null) {        log.debug("creating integration control: processDefinition=" + processDefinition);        integrationControl = new IntegrationControl(this);        integrationControls.put(processDefinitionId, integrationControl);      }      return integrationControl;    }  }  public static JmsIntegrationServiceFactory getConfigurationInstance(      JbpmConfiguration jbpmConfiguration) {    return (JmsIntegrationServiceFactory) jbpmConfiguration.getServiceFactory(IntegrationService.SERVICE_NAME);  }}

⌨️ 快捷键说明

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