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

📄 jmsconnectorfactory.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
字号:
/* * Copyright 2001, 2002,2004 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.axis.transport.jms;import org.apache.axis.components.jms.JMSVendorAdapter;import org.apache.axis.components.logger.LogFactory;import org.apache.commons.logging.Log;import java.util.HashMap;/** * JMSConnectorFactory is a factory class for creating JMSConnectors. It can *   create both client connectors and server connectors.  A server connector *   is configured to allow asynchronous message receipt, while a client *   connector is not. * * JMSConnectorFactory can also be used to select an appropriately configured *   JMSConnector from an existing pool of connectors. * * @author Jaime Meritt  (jmeritt@sonicsoftware.com) * @author Richard Chung (rchung@sonicsoftware.com) * @author Dave Chappell (chappell@sonicsoftware.com) * @author Ray Chun (rchun@sonicsoftware.com) */public abstract class JMSConnectorFactory{    protected static Log log =            LogFactory.getLog(JMSConnectorFactory.class.getName());    /**     * Performs an initial check on the connector properties, and then defers     * to the vendor adapter for matching on the vendor-specific connection factory.     *     * @param connectors the list of potential matches     * @param connectorProps the set of properties to be used for matching the connector     * @param cfProps the set of properties to be used for matching the connection factory     * @param username the user requesting the connector     * @param password the password associated with the requesting user     * @param adapter the vendor adapter specified in the JMS URL     * @return a JMSConnector that matches the specified properties     */     public static JMSConnector matchConnector(java.util.Set connectors,                                               HashMap connectorProps,                                               HashMap cfProps,                                               String username,                                               String password,                                               JMSVendorAdapter adapter)    {        java.util.Iterator iter = connectors.iterator();        while (iter.hasNext())        {            JMSConnector conn = (JMSConnector) iter.next();            // username            String connectorUsername = conn.getUsername();            if (!( ((connectorUsername == null) && (username == null)) ||                   ((connectorUsername != null) && (username != null) && (connectorUsername.equals(username))) ))                continue;            // password            String connectorPassword = conn.getPassword();            if (!( ((connectorPassword == null) && (password == null)) ||                   ((connectorPassword != null) && (password != null) && (connectorPassword.equals(password))) ))                continue;            // num retries            int connectorNumRetries = conn.getNumRetries();            String propertyNumRetries = (String)connectorProps.get(JMSConstants.NUM_RETRIES);            int numRetries = JMSConstants.DEFAULT_NUM_RETRIES;            if (propertyNumRetries != null)                numRetries = Integer.parseInt(propertyNumRetries);            if (connectorNumRetries != numRetries)                continue;            // client id            String connectorClientID = conn.getClientID();            String clientID = (String)connectorProps.get(JMSConstants.CLIENT_ID);            if (!( ((connectorClientID == null) && (clientID == null))                   ||                   ((connectorClientID != null) && (clientID != null) && connectorClientID.equals(clientID)) ))                continue;            // domain            String connectorDomain = (conn instanceof QueueConnector) ? JMSConstants.DOMAIN_QUEUE : JMSConstants.DOMAIN_TOPIC;            String propertyDomain = (String)connectorProps.get(JMSConstants.DOMAIN);            String domain = JMSConstants.DOMAIN_DEFAULT;            if (propertyDomain != null)                domain = propertyDomain;            if (!( ((connectorDomain == null) && (domain == null))                   ||                   ((connectorDomain != null) && (domain != null) && connectorDomain.equalsIgnoreCase(domain)) ))                continue;            // the connection factory must also match for the connector to be reused            JMSURLHelper jmsurl = conn.getJMSURL();            if (adapter.isMatchingConnectionFactory(conn.getConnectionFactory(), jmsurl, cfProps))            {                // attempt to reserve the connector                try                {                    JMSConnectorManager.getInstance().reserve(conn);                    if (log.isDebugEnabled()) {                        log.debug("JMSConnectorFactory: Found matching connector");                    }                }                catch (Exception e)                {                    // ignore. the connector may be in the process of shutting down, so try the next element                    continue;                }                return conn;            }        }        if (log.isDebugEnabled()) {            log.debug("JMSConnectorFactory: No matching connectors found");        }        return null;    }    /**     * Static method to create a server connector. Server connectors can     *   accept incoming requests.     *     * @param connectorConfig     * @param cfConfig     * @param username     * @param password     * @return     * @throws Exception     */    public static JMSConnector createServerConnector(HashMap connectorConfig,                                              HashMap cfConfig,                                              String username,                                              String password,                                              JMSVendorAdapter adapter)        throws Exception    {        return createConnector(connectorConfig, cfConfig, true,                               username, password, adapter);    }    /**     * Static method to create a client connector. Client connectors cannot     *   accept incoming requests.     *     * @param connectorConfig     * @param cfConfig     * @param username     * @param password     * @return     * @throws Exception     */    public static JMSConnector createClientConnector(HashMap connectorConfig,                                              HashMap cfConfig,                                              String username,                                              String password,                                              JMSVendorAdapter adapter)        throws Exception    {        return createConnector(connectorConfig, cfConfig, false,                               username, password, adapter);    }    private static JMSConnector createConnector(HashMap connectorConfig,                                                HashMap cfConfig,                                                boolean allowReceive,                                                String username,                                                String password,                                                JMSVendorAdapter adapter)        throws Exception    {        if(connectorConfig != null)            connectorConfig = (HashMap)connectorConfig.clone();        int numRetries = MapUtils.removeIntProperty(connectorConfig,                                    JMSConstants.NUM_RETRIES,                                    JMSConstants.DEFAULT_NUM_RETRIES);        int numSessions = MapUtils.removeIntProperty(connectorConfig,                                    JMSConstants.NUM_SESSIONS,                                    JMSConstants.DEFAULT_NUM_SESSIONS);        long connectRetryInterval = MapUtils.removeLongProperty(connectorConfig,                                    JMSConstants.CONNECT_RETRY_INTERVAL,                                    JMSConstants.DEFAULT_CONNECT_RETRY_INTERVAL);        long interactRetryInterval = MapUtils.removeLongProperty(connectorConfig,                                    JMSConstants.INTERACT_RETRY_INTERVAL,                                    JMSConstants.DEFAULT_INTERACT_RETRY_INTERVAL);        long timeoutTime = MapUtils.removeLongProperty(connectorConfig,                                    JMSConstants.TIMEOUT_TIME,                                    JMSConstants.DEFAULT_TIMEOUT_TIME);        String clientID = MapUtils.removeStringProperty(connectorConfig,                                    JMSConstants.CLIENT_ID,                                    null);        String domain = MapUtils.removeStringProperty(connectorConfig,                                    JMSConstants.DOMAIN,                                    JMSConstants.DOMAIN_DEFAULT);        // this will be set if the target endpoint address was set on the Axis call        JMSURLHelper jmsurl = (JMSURLHelper)connectorConfig.get(JMSConstants.JMS_URL);        if(cfConfig == null)            throw new IllegalArgumentException("noCfConfig");        if(domain.equals(JMSConstants.DOMAIN_QUEUE))        {            return new QueueConnector(adapter.getQueueConnectionFactory(cfConfig),                                      numRetries, numSessions, connectRetryInterval,                                      interactRetryInterval, timeoutTime,                                      allowReceive, clientID, username, password,                                      adapter, jmsurl);        }        else // domain is Topic        {            return new TopicConnector(adapter.getTopicConnectionFactory(cfConfig),                                      numRetries, numSessions, connectRetryInterval,                                      interactRetryInterval, timeoutTime,                                      allowReceive, clientID, username, password,                                      adapter, jmsurl);        }    }}

⌨️ 快捷键说明

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