001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.activemq.broker.jmx;
018    
019    import org.apache.activemq.broker.Connection;
020    import org.apache.activemq.broker.TransportConnector;
021    import org.apache.activemq.transport.Transport;
022    import org.apache.activemq.transport.TransportServer;
023    import java.io.IOException;
024    import java.net.URISyntaxException;
025    import javax.management.MBeanServer;
026    import javax.management.ObjectName;
027    
028    /**
029     * A managed transport connector which can create multiple managed connections
030     * as clients connect.
031     * 
032     * 
033     */
034    public class ManagedTransportConnector extends TransportConnector {
035    
036        static long nextConnectionId = 1;
037        
038        private final ManagementContext managementContext;
039        private final ObjectName connectorName;
040    
041        public ManagedTransportConnector(ManagementContext context, ObjectName connectorName, TransportServer server) {
042            super(server);
043            this.managementContext = context;
044            this.connectorName = connectorName;
045        }
046    
047        public ManagedTransportConnector asManagedConnector(MBeanServer mbeanServer, ObjectName connectorName) throws IOException, URISyntaxException {
048            return this;
049        }
050    
051        protected Connection createConnection(Transport transport) throws IOException {
052            // prefer to use task runner from broker service as stop task runner, as we can then
053            // tie it to the lifecycle of the broker service
054            return new ManagedTransportConnection(this, transport, getBroker(), isDisableAsyncDispatch() ? null : getTaskRunnerFactory(),
055                    getBrokerService().getTaskRunnerFactory(), managementContext, connectorName);
056        }
057    
058        protected static synchronized long getNextConnectionId() {
059            return nextConnectionId++;
060        }
061    
062    }