geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: [RTC] ActiveMQ GBean modules
Date Tue, 13 Jun 2006 18:31:10 GMT
I think that this gbean adaptation code should be in geronimo rather  
than amq.  I'm OK with applying it as is but would prefer some issues  
to be addressed first or, even better,  immediately after the  
transfer (assuming it is done with svn mv).

1. DataSourceReference should be replaced by the geronimo class that  
does the same thing, ConnectionFactorySource.

2. I think it would be preferable to get the module/configuration  
classloader in the constructor as a magic attribute and use it in  
BrokerServiceGBeanImpl.doStart rather than the classloader of  
BrokerServiceGBeanImpl.

3. Same for TransportConnectorGBeanImpl.

4. This is a question, not really an issue, about this code:
+    protected TransportConnector createBrokerConnector(String url)
throws Exception {
+        return brokerService.getBrokerContainer().addConnector(url);
+    }

To me it seems like this code is combining the functions of factory  
object and container.  Is this necessary and appropriate?  I'd be  
more comfortable with
Connector connector = ConnectorFactory.createConnector(url);
brokerService.getBrokerContainer().addConnector(connector);

I find that the combination style typically creates problems whenever  
trying to extend stuff, say by wrapping the connector.  What do you  
think?

5. hardcoding the protocols in ActiveMQManagerGBean seems like a  
temporary expedient at best.

6. javadoc on public JMSConnector addConnector( ... in the manager  
gbean seems wrong... does not appear to return an object name.

7. Typo and innaccuracies in the first package.html... this stuff is  
only going to work in geronimo, jsr77/88 is not enough.

8. I'm not sure exactly what our official policy is but I prefer to  
remove "public" from methods in interfaces since it is the only  
choice and implied.

+1 if the above are addressed before or right after commit.  I only  
insist on (1), the others are more like suggestions.

thanks
david jencks





On Jun 5, 2006, at 4:19 PM, Hiram Chirino wrote:

> Howdy folks,
>
> Here's  a patch that brings in the activemq gbean modules into
> geronimo.  It's partly what was in activemq 4.x and integrated into
> geronimo 1.2-dead merged with the changes in the 3.x branch.
>
> It compiles at least and looks like a reasonable start.  Once further
> integration work gets done we may need to tweak a little more.  here's
> my +1 got get this committed.  I guess I just need 3 more.
>
>
> Index: modules/activemq-gbean/project.properties
> ===================================================================
> --- modules/activemq-gbean/project.properties	(revision 0)
> +++ modules/activemq-gbean/project.properties	(revision 0)
> @@ -0,0 +1,3 @@
> +# -------------------------------------------------------------------
> +# Build Properties
> +# -------------------------------------------------------------------
>
> Property changes on: modules/activemq-gbean/project.properties
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/project.xml
> ===================================================================
> --- modules/activemq-gbean/project.xml	(revision 0)
> +++ modules/activemq-gbean/project.xml	(revision 0)
> @@ -0,0 +1,104 @@
> +<?xml version="1.0" encoding="ISO-8859-1"?>
> +<!--
> +
> +    Copyright 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.
> +-->
> +<!-- $Rev: 356052 $ $Date: 2005-12-11 16:41:20 -0600 (Sun, 11 Dec  
> 2005) $ -->
> +<!DOCTYPE project>
> +<project>
> +    <pomVersion>3</pomVersion>
> +    <extend>../../etc/project.xml</extend>
> +
> +    <name>Geronimo :: ActiveMQ :: GBeans</name>
> +    <id>geronimo-activemq-gbean</id>
> +    <shortDescription>ActiveMQ Geronimo / GBean support</ 
> shortDescription>
> +    <description>ActiveMQ GBeans used for integration into Apache
> Geronimo</description>
> +
> +    <!-- ============ -->
> +    <!-- Dependencies -->
> +    <!-- ============ -->
> +    <dependencies>
> +
> +      <dependency>
> +        <groupId>incubator-activemq</groupId>
> +        <artifactId>activemq-core</artifactId>
> +        <version>4.0-SNAPSHOT</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>incubator-activemq</groupId>
> +        <artifactId>activeio-core</artifactId>
> +        <version>3.0-SNAPSHOT</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>geronimo</groupId>
> +        <artifactId>geronimo-activemq-gbean-management</artifactId>
> +        <version>${pom.currentVersion}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>geronimo</groupId>
> +        <artifactId>geronimo-kernel</artifactId>
> +        <version>${pom.currentVersion}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>geronimo</groupId>
> +        <artifactId>geronimo-system</artifactId>
> +        <version>${pom.currentVersion}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>geronimo</groupId>
> +        <artifactId>geronimo-management</artifactId>
> +        <version>${pom.currentVersion}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>geronimo</groupId>
> +        <artifactId>geronimo-j2ee</artifactId>
> +        <version>${pom.currentVersion}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>mx4j</groupId>
> +        <artifactId>mx4j</artifactId>
> +        <version>${mx4j_version}</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>commons-logging</groupId>
> +        <artifactId>commons-logging</artifactId>
> +        <version>${commons_logging_version}</version>
> +        <url>http://jakarta.apache.org/commons/logging/</url>
> +      </dependency>
> +
> +
> +    </dependencies>
> +
> +    <!-- this module is using m2 directory layout -->
> +    <build>
> +        <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
> +        <unitTestSourceDirectory>${basedir}/src/main/test</ 
> unitTestSourceDirectory>
> +
> +        <unitTest>
> +            <includes>
> +                <include>**/*Test.java</include>
> +            </includes>
> +        </unitTest>
> +    </build>
> +
> +</project>
>
> Property changes on: modules/activemq-gbean/project.xml
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/src/test/java/org/apache/activemq/ 
> gbean/ConnectorTest.java
> ===================================================================
> --- modules/activemq-gbean/src/test/java/org/apache/activemq/gbean/ 
> ConnectorTest.java	(revision
> 0)
> +++ modules/activemq-gbean/src/test/java/org/apache/activemq/gbean/ 
> ConnectorTest.java	(revision
> 0)
> @@ -0,0 +1,61 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import org.apache.activemq.gbean.TransportConnectorGBeanImpl;
> +
> +import junit.framework.TestCase;
> +
> +/**
> + * Tests to ensure that URL parsing and updating doesn't blow up
> + *
> + * @version $Revision: 1.0$
> + */
> +public class ConnectorTest extends TestCase {
> +    public TransportConnectorGBeanImpl test;
> +
> +    protected void setUp() throws Exception {
> +    }
> +
> +    public void testURLManipulation() {
> +        test = new TransportConnectorGBeanImpl(null, "foo",  
> "localhost", 1234);
> +        assertEquals("foo://localhost:1234", test.getUrl());
> +        assertEquals("foo", test.getProtocol());
> +        assertEquals("localhost", test.getHost());
> +        assertEquals(1234, test.getPort());
> +        test.setHost("0.0.0.0");
> +        assertEquals("foo://0.0.0.0:1234", test.getUrl());
> +        assertEquals("foo", test.getProtocol());
> +        assertEquals("0.0.0.0", test.getHost());
> +        assertEquals(1234, test.getPort());
> +        test.setPort(8765);
> +        assertEquals("foo://0.0.0.0:8765", test.getUrl());
> +        assertEquals("foo", test.getProtocol());
> +        assertEquals("0.0.0.0", test.getHost());
> +        assertEquals(8765, test.getPort());
> +        test.setProtocol("bar");
> +        assertEquals("bar://0.0.0.0:8765", test.getUrl());
> +        assertEquals("bar", test.getProtocol());
> +        assertEquals("0.0.0.0", test.getHost());
> +        assertEquals(8765, test.getPort());
> +        test = new TransportConnectorGBeanImpl(null, "vm",  
> "localhost", -1);
> +        assertEquals("vm://localhost", test.getUrl());
> +        assertEquals("vm", test.getProtocol());
> +        assertEquals("localhost", test.getHost());
> +        assertEquals(-1, test.getPort());
> +    }
> +}
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/BrokerServiceGBean.java
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBean.java	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBean.java	(revision
> 0)
> @@ -0,0 +1,34 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import org.apache.activemq.broker.BrokerService;
> +import org.apache.activemq.gbean.ActiveMQBroker;
> +
> +/**
> + * An interface to the ActiveMQContainerGBean for use by the
> + * ActiveMQConnectorGBean.
> + *
> + * @version $Revision: 1.1.1.1 $
> + */
> +public interface BrokerServiceGBean extends ActiveMQBroker {
> +	
> +	public abstract BrokerService getBrokerContainer();	
> +	public String getBrokerName();
> +
> +	
> +}
> \ No newline at end of file
>
> Property changes on:
> modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBean.java
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/BrokerServiceGBeanImpl.java
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBeanImpl.java	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBeanImpl.java	(revision
> 0)
> @@ -0,0 +1,209 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import java.net.URI;
> +
> +import javax.sql.DataSource;
> +
> +import org.apache.activemq.broker.BrokerFactory;
> +import org.apache.activemq.broker.BrokerService;
> +import org.apache.activemq.store.DefaultPersistenceAdapterFactory;
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.geronimo.gbean.GBeanInfo;
> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
> +import org.apache.geronimo.gbean.GBeanLifecycle;
> +import org.apache.geronimo.management.geronimo.JMSManager;
> +import org.apache.geronimo.management.geronimo.NetworkConnector;
> +import org.apache.geronimo.system.serverinfo.ServerInfo;
> +
> +
> +/**
> + * Default implementation of the ActiveMQ Message Server
> + *
> + * @version $Revision: 1.1.1.1 $
> + */
> +public class BrokerServiceGBeanImpl implements GBeanLifecycle,
> BrokerServiceGBean {
> +
> +    private Log log = LogFactory.getLog(getClass().getName());
> +
> +    private String brokerName;
> +    private String brokerUri;
> +    private BrokerService brokerService;
> +    private ServerInfo serverInfo;
> +    private String dataDirectory;
> +    private DataSourceReference dataSource;
> +
> +    private String objectName;
> +    private JMSManager manager;
> +
> +    public BrokerServiceGBeanImpl() {
> +    }
> +
> +    public synchronized BrokerService getBrokerContainer() {
> +        return brokerService;
> +    }
> +
> +    public synchronized void doStart() throws Exception {
> +        	ClassLoader old = Thread.currentThread 
> ().getContextClassLoader();
> +        	Thread.currentThread().setContextClassLoader 
> (BrokerServiceGBeanImpl.class.getClassLoader());
> +        	try {
> +    	        if (brokerService == null) {
> +    	            brokerService = createContainer();
> +    	        }
> +                DefaultPersistenceAdapterFactory persistenceFactory =
> (DefaultPersistenceAdapterFactory)
> brokerService.getPersistenceFactory();
> +
> persistenceFactory.setDataDirectory(serverInfo.resolve 
> (dataDirectory));
> +                persistenceFactory.setDataSource((DataSource)
> dataSource.$getResource());
> +                brokerService.start();
> +        	} finally {
> +            	Thread.currentThread().setContextClassLoader(old);
> +        	}
> +    }
> +
> +    protected BrokerService createContainer() throws Exception {
> +        if( brokerUri!=null ) {
> +            BrokerService answer = BrokerFactory.createBroker(new
> URI(brokerUri));
> +            brokerName = answer.getBrokerName();
> +            return answer;
> +        } else {
> +            BrokerService answer = new BrokerService();
> +            answer.setBrokerName(brokerName);
> +            return answer;
> +        }
> +    }
> +
> +    public synchronized void doStop() throws Exception {
> +        if (brokerService != null) {
> +            BrokerService temp = brokerService;
> +            brokerService = null;
> +            temp.stop();
> +        }
> +    }
> +
> +    public synchronized void doFail() {
> +        if (brokerService != null) {
> +            BrokerService temp = brokerService;
> +            brokerService = null;
> +            try {
> +                temp.stop();
> +            } catch (Exception e) {
> +                log.info("Caught while closing due to failure: " +  
> e, e);
> +            }
> +        }
> +    }
> +
> +    public static final GBeanInfo GBEAN_INFO;
> +
> +    static {
> +        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ActiveMQ
> Message Broker", BrokerServiceGBeanImpl.class, "JMSServer");
> +        infoFactory.addReference("serverInfo", ServerInfo.class);
> +        infoFactory.addAttribute("brokerName", String.class, true);
> +        infoFactory.addAttribute("brokerUri", String.class, true);
> +        infoFactory.addAttribute("dataDirectory", String.class,  
> true);
> +        infoFactory.addReference("dataSource",  
> DataSourceReference.class);
> +        infoFactory.addAttribute("objectName", String.class, false);
> +        infoFactory.addReference("manager", JMSManager.class);
> +        infoFactory.addInterface(BrokerServiceGBean.class);
> +        // infoFactory.setConstructor(new String[]{"brokerName,  
> brokerUri"});
> +        GBEAN_INFO = infoFactory.getBeanInfo();
> +    }
> +
> +    public static GBeanInfo getGBeanInfo() {
> +        return GBEAN_INFO;
> +    }
> +
> +	/**
> +	 * @return Returns the brokerName.
> +	 */
> +	public String getBrokerName() {
> +		return brokerName;
> +	}
> +
> +    public String getBrokerUri() {
> +        return brokerUri;
> +    }
> +
> +    public void setBrokerName(String brokerName) {
> +        this.brokerName = brokerName;
> +    }
> +
> +    public void setBrokerUri(String brokerUri) {
> +        this.brokerUri = brokerUri;
> +    }
> +
> +    public ServerInfo getServerInfo() {
> +        return serverInfo;
> +    }
> +
> +    public void setServerInfo(ServerInfo serverInfo) {
> +        this.serverInfo = serverInfo;
> +    }
> +
> +    public String getDataDirectory() {
> +        return dataDirectory;
> +    }
> +
> +    public void setDataDirectory(String dataDir) {
> +        this.dataDirectory = dataDir;
> +    }
> +
> +    public DataSourceReference getDataSource() {
> +        return dataSource;
> +    }
> +
> +    public void setDataSource(DataSourceReference dataSource) {
> +        this.dataSource = dataSource;
> +    }
> +
> +    public String getObjectName() {
> +        return objectName;
> +    }
> +
> +    public boolean isStateManageable() {
> +        return true;
> +    }
> +
> +    public boolean isStatisticsProvider() {
> +        return false; // todo: return true once stats are integrated
> +    }
> +
> +    public boolean isEventProvider() {
> +        return true;
> +    }
> +
> +    public NetworkConnector[] getConnectors() {
> +        return manager.getConnectorsForContainer(this);
> +    }
> +
> +    public NetworkConnector[] getConnectors(String protocol) {
> +        return manager.getConnectorsForContainer(this, protocol);
> +    }
> +
> +    public JMSManager getManager() {
> +        return manager;
> +    }
> +
> +    public void setManager(JMSManager manager) {
> +        this.manager = manager;
> +    }
> +
> +    public void setObjectName(String objectName) {
> +        this.objectName = objectName;
> +    }
> +	
> +}
> \ No newline at end of file
>
> Property changes on:
> modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> BrokerServiceGBeanImpl.java
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/TransportConnectorGBeanImpl.java
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> TransportConnectorGBeanImpl.java	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> TransportConnectorGBeanImpl.java	(revision
> 0)
> @@ -0,0 +1,168 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import java.net.InetSocketAddress;
> +import java.net.URI;
> +import java.net.URISyntaxException;
> +
> +import org.apache.activemq.broker.TransportConnector;
> +import org.apache.activemq.gbean.ActiveMQConnector;
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.geronimo.gbean.GBeanInfo;
> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
> +import org.apache.geronimo.gbean.GBeanLifecycle;
> +import org.apache.geronimo.gbean.GConstructorInfo;
> +
> +/**
> + * Default implementation of the ActiveMQ connector
> + *
> + * @version $Revision: 1.1.1.1 $
> + */
> +public class TransportConnectorGBeanImpl implements GBeanLifecycle,
> ActiveMQConnector {
> +    private Log log = LogFactory.getLog(getClass().getName());
> +
> +    private TransportConnector transportConnector;
> +    private BrokerServiceGBean brokerService;
> +
> +    private String protocol;
> +    private String host;
> +    private int port;
> +    private String path;
> +    private String query;
> +    private String urlAsStarted;
> +
> +    public TransportConnectorGBeanImpl(BrokerServiceGBean
> brokerService, String protocol, String host, int port) {
> +        this.brokerService = brokerService;
> +        this.protocol = protocol;
> +        this.host = host;
> +        this.port = port;
> +    }
> +
> +    public String getProtocol() {
> +        return protocol;
> +    }
> +
> +    public void setProtocol(String protocol) {
> +        this.protocol = protocol;
> +    }
> +
> +    public String getHost() {
> +        return host;
> +    }
> +
> +    public void setHost(String host) {
> +        this.host = host;
> +    }
> +
> +    public int getPort() {
> +        return port;
> +    }
> +
> +    public void setPort(int port) {
> +        this.port = port;
> +    }
> +
> +    public String getPath() {
> +        return path;
> +    }
> +
> +    public void setPath(String path) {
> +        this.path = path;
> +    }
> +
> +    public String getQuery() {
> +        return query;
> +    }
> +
> +    public void setQuery(String query) {
> +        this.query = query;
> +    }
> +
> +    public String getUrl() {
> +        try {
> +            return new URI(protocol, null, host, port, path, query,
> null).toString();
> +        } catch (URISyntaxException e) {
> +            throw new IllegalStateException("Attributes don't form a
> valid URI: "+protocol+"://"+host+":"+port+"/"+path+"?"+query);
> +        }
> +    }
> +
> +    public InetSocketAddress getListenAddress() {
> +        try {
> +            return transportConnector.getServer().getSocketAddress();
> +        } catch (Throwable e) {
> +            log.debug("Failure to determine ListenAddress: "+e,e);
> +            return null;
> +        }
> +    }
> +
> +    public synchronized void doStart() throws Exception {
> +    	ClassLoader old = Thread.currentThread().getContextClassLoader 
> ();
> +    	Thread.currentThread().setContextClassLoader 
> (BrokerServiceGBeanImpl.class.getClassLoader());
> +    	try {
> +	        if (transportConnector == null) {
> +                urlAsStarted = getUrl();
> +	            transportConnector = createBrokerConnector 
> (urlAsStarted);
> +	            transportConnector.start();
> +	        }
> +    	} finally {
> +        	Thread.currentThread().setContextClassLoader(old);
> +    	}
> +    }
> +
> +    public synchronized void doStop() throws Exception {
> +        if (transportConnector != null) {
> +            TransportConnector temp = transportConnector;
> +            transportConnector = null;
> +            temp.stop();
> +        }
> +    }
> +
> +    public synchronized void doFail() {
> +        if (transportConnector != null) {
> +            TransportConnector temp = transportConnector;
> +            transportConnector = null;
> +            try {
> +                temp.stop();
> +            }
> +            catch (Exception e) {
> +                log.info("Caught while closing due to failure: " +  
> e, e);
> +            }
> +        }
> +    }
> +
> +    protected TransportConnector createBrokerConnector(String url)
> throws Exception {
> +        return brokerService.getBrokerContainer().addConnector(url);
> +    }
> +
> +    public static final GBeanInfo GBEAN_INFO;
> +
> +    static {
> +        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ActiveMQ
> Transport Connector", TransportConnectorGBeanImpl.class,
> CONNECTOR_J2EE_TYPE);
> +        infoFactory.addAttribute("url", String.class.getName(),  
> false);
> +        infoFactory.addReference("brokerService",  
> BrokerServiceGBean.class);
> +        infoFactory.addInterface(ActiveMQConnector.class, new
> String[]{"host","port","protocol","path","query"},
> +                new String[]{"host","port"});
> +        infoFactory.setConstructor(new GConstructorInfo(new
> String[]{"brokerService", "protocol", "host", "port"}));
> +        GBEAN_INFO = infoFactory.getBeanInfo();
> +    }
> +
> +    public static GBeanInfo getGBeanInfo() {
> +        return GBEAN_INFO;
> +    }
> +}
>
> Property changes on:
> modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> TransportConnectorGBeanImpl.java
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/DataSourceReference.java
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> DataSourceReference.java	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> DataSourceReference.java	(revision
> 0)
> @@ -0,0 +1,21 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +public interface DataSourceReference {
> +    public Object $getResource();
> +}
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/management/ActiveMQManagerGBean.java
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> management/ActiveMQManagerGBean.java	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> management/ActiveMQManagerGBean.java	(revision
> 0)
> @@ -0,0 +1,266 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean.management;
> +
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Set;
> +
> +import org.apache.activemq.gbean.ActiveMQBroker;
> +import org.apache.activemq.gbean.ActiveMQConnector;
> +import org.apache.activemq.gbean.ActiveMQManager;
> +import org.apache.activemq.gbean.TransportConnectorGBeanImpl;
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.geronimo.gbean.AbstractName;
> +import org.apache.geronimo.gbean.AbstractNameQuery;
> +import org.apache.geronimo.gbean.GBeanData;
> +import org.apache.geronimo.gbean.GBeanInfo;
> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
> +import org.apache.geronimo.gbean.ReferencePatterns;
> +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
> +import org.apache.geronimo.kernel.GBeanNotFoundException;
> +import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.kernel.config.ConfigurationUtil;
> +import  
> org.apache.geronimo.kernel.config.EditableConfigurationManager;
> +import org.apache.geronimo.kernel.config.InvalidConfigException;
> +import org.apache.geronimo.kernel.proxy.ProxyManager;
> +import org.apache.geronimo.management.geronimo.JMSBroker;
> +import org.apache.geronimo.management.geronimo.JMSConnector;
> +import org.apache.geronimo.management.geronimo.NetworkConnector;
> +
> +/**
> + * Implementation of the ActiveMQ management interface.  These are  
> the ActiveMQ
> + * management features available at runtime.
> + *
> + * @version $Revision: 1.0$
> + */
> +public class ActiveMQManagerGBean implements ActiveMQManager {
> +    private static final Log log =
> LogFactory.getLog(ActiveMQManagerGBean.class.getName());
> +    private Kernel kernel;
> +    private String objectName;
> +
> +    public ActiveMQManagerGBean(Kernel kernel, String objectName) {
> +        this.kernel = kernel;
> +        this.objectName = objectName;
> +    }
> +
> +    public String getProductName() {
> +        return "ActiveMQ";
> +    }
> +
> +    public String getObjectName() {
> +        return objectName;
> +    }
> +
> +    public boolean isEventProvider() {
> +        return false;
> +    }
> +
> +    public boolean isStateManageable() {
> +        return true;
> +    }
> +
> +    public boolean isStatisticsProvider() {
> +        return false;
> +    }
> +
> +    public Object[] getContainers() {
> +        ProxyManager proxyManager = kernel.getProxyManager();
> +        AbstractNameQuery query = new
> AbstractNameQuery(ActiveMQBroker.class.getName());
> +        Set names = kernel.listGBeans(query);
> +        ActiveMQBroker[] results = new ActiveMQBroker[names.size()];
> +        int i=0;
> +        for (Iterator it = names.iterator(); it.hasNext(); i++) {
> +            AbstractName name = (AbstractName) it.next();
> +            results[i] = (ActiveMQBroker)
> proxyManager.createProxy(name, ActiveMQBroker.class.getClassLoader());
> +        }
> +        return results;
> +    }
> +
> +    public String[] getSupportedProtocols() {
> +        // see files in
> modules/core/src/conf/META-INF/services/org/activemq/transport/server/
> +        return new String[]{ "tcp", "stomp", "vm", "peer", "udp",
> "multicast", "failover"};
> +    }
> +
> +    public NetworkConnector[] getConnectors() {
> +        ProxyManager proxyManager = kernel.getProxyManager();
> +        AbstractNameQuery query = new
> AbstractNameQuery(ActiveMQConnector.class.getName());
> +        Set names = kernel.listGBeans(query);
> +        ActiveMQConnector[] results = new ActiveMQConnector 
> [names.size()];
> +        int i=0;
> +        for (Iterator it = names.iterator(); it.hasNext(); i++) {
> +            AbstractName name = (AbstractName) it.next();
> +            results[i] = (ActiveMQConnector)
> proxyManager.createProxy(name,
> ActiveMQConnector.class.getClassLoader());
> +        }
> +        return results;
> +    }
> +
> +    public NetworkConnector[] getConnectors(String protocol) {
> +        if(protocol == null) {
> +            return getConnectors();
> +        }
> +        List result = new ArrayList();
> +        ProxyManager proxyManager = kernel.getProxyManager();
> +        AbstractNameQuery query = new
> AbstractNameQuery(ActiveMQConnector.class.getName());
> +        Set names = kernel.listGBeans(query);
> +        for (Iterator it = names.iterator(); it.hasNext();) {
> +            AbstractName name = (AbstractName) it.next();
> +            try {
> +                if (kernel.getAttribute(name, "protocol").equals 
> (protocol)) {
> +                    result.add(proxyManager.createProxy(name,
> ActiveMQConnector.class.getClassLoader()));
> +                }
> +            } catch (Exception e) {
> +                log.error("Unable to check the protocol for a  
> connector", e);
> +            }
> +        }
> +        return (ActiveMQConnector[]) result.toArray(new
> ActiveMQConnector[names.size()]);
> +    }
> +
> +    public NetworkConnector[] getConnectorsForContainer(Object  
> broker) {
> +        AbstractName containerName = kernel.getAbstractNameFor 
> (broker);
> +        ProxyManager mgr = kernel.getProxyManager();
> +        try {
> +            List results = new ArrayList();
> +            AbstractNameQuery query = new
> AbstractNameQuery(ActiveMQConnector.class.getName());
> +            Set set = kernel.listGBeans(query); // all Jetty  
> connectors
> +            for (Iterator it = set.iterator(); it.hasNext();) {
> +                AbstractName name = (AbstractName) it.next(); // a
> single Jetty connector
> +                GBeanData data = kernel.getGBeanData(name);
> +                ReferencePatterns refs =
> data.getReferencePatterns("activeMQContainer");
> +                if (containerName.equals(refs.getAbstractName())) {
> +                    results.add(mgr.createProxy(name,
> ActiveMQConnector.class.getClassLoader()));
> +                }
> +            }
> +            return (ActiveMQConnector[]) results.toArray(new
> ActiveMQConnector[results.size()]);
> +        } catch (Exception e) {
> +            throw (IllegalArgumentException) new
> IllegalArgumentException("Unable to look up connectors for ActiveMQ
> broker '"+containerName).initCause(e);
> +        }
> +    }
> +
> +    public NetworkConnector[] getConnectorsForContainer(Object
> broker, String protocol) {
> +        if(protocol == null) {
> +            return getConnectorsForContainer(broker);
> +        }
> +        AbstractName containerName = kernel.getAbstractNameFor 
> (broker);
> +        ProxyManager mgr = kernel.getProxyManager();
> +        try {
> +            List results = new ArrayList();
> +            AbstractNameQuery query = new
> AbstractNameQuery(ActiveMQConnector.class.getName());
> +            Set set = kernel.listGBeans(query); // all Jetty  
> connectors
> +            for (Iterator it = set.iterator(); it.hasNext();) {
> +                AbstractName name = (AbstractName) it.next(); // a
> single Jetty connector
> +                GBeanData data = kernel.getGBeanData(name);
> +                ReferencePatterns refs =
> data.getReferencePatterns("activeMQContainer");
> +                if(containerName.equals(refs.getAbstractName())) {
> +                    try {
> +                        String testProtocol = (String)
> kernel.getAttribute(name, "protocol");
> +                        if(testProtocol != null &&
> testProtocol.equals(protocol)) {
> +                            results.add(mgr.createProxy(name,
> ActiveMQConnector.class.getClassLoader()));
> +                        }
> +                    } catch (Exception e) {
> +                        log.error("Unable to look up protocol for
> connector '"+name+"'",e);
> +                    }
> +                    break;
> +                }
> +            }
> +            return (ActiveMQConnector[]) results.toArray(new
> ActiveMQConnector[results.size()]);
> +        } catch (Exception e) {
> +            throw (IllegalArgumentException)new
> IllegalArgumentException("Unable to look up connectors for ActiveMQ
> broker '"+containerName +"': ").initCause(e);
> +        }
> +    }
> +
> +    /**
> +     * Creates a new connector, and returns the ObjectName for  
> it.  Note that
> +     * the connector may well require further customization before  
> being fully
> +     * functional (e.g. SSL settings for a secure connector).
> +     */
> +    public JMSConnector addConnector(JMSBroker broker, String
> uniqueName, String protocol, String host, int port) {
> +        AbstractName brokerAbstractName = kernel.getAbstractNameFor 
> (broker);
> +        AbstractName name =
> kernel.getNaming().createChildName(brokerAbstractName, uniqueName,
> NameFactory.GERONIMO_SERVICE);
> +        GBeanData connector = new GBeanData(name,
> TransportConnectorGBeanImpl.GBEAN_INFO);
> +        //todo: if SSL is supported, need to add more properties or
> use a different GBean?
> +        connector.setAttribute("protocol", protocol);
> +        connector.setAttribute("host", host);
> +        connector.setAttribute("port", new Integer(port));
> +        connector.setReferencePattern("activeMQContainer",  
> brokerAbstractName);
> +        EditableConfigurationManager mgr =
> ConfigurationUtil.getEditableConfigurationManager(kernel);
> +        if(mgr != null) {
> +            try {
> +
> mgr.addGBeanToConfiguration(brokerAbstractName.getArtifact(),
> connector, false);
> +                return (JMSConnector)
> kernel.getProxyManager().createProxy(name,
> ActiveMQConnector.class.getClassLoader());
> +            } catch (InvalidConfigException e) {
> +                log.error("Unable to add GBean", e);
> +                return null;
> +            } finally {
> +                ConfigurationUtil.releaseConfigurationManager 
> (kernel, mgr);
> +            }
> +        } else {
> +            log.warn("The ConfigurationManager in the kernel does not
> allow editing");
> +            return null;
> +        }
> +    }
> +
> +    public void removeConnector(AbstractName connectorName) {
> +        try {
> +            GBeanInfo info = kernel.getGBeanInfo(connectorName);
> +            boolean found = false;
> +            Set intfs = info.getInterfaces();
> +            for (Iterator it = intfs.iterator(); it.hasNext();) {
> +                String intf = (String) it.next();
> +                if (intf.equals(ActiveMQConnector.class.getName())) {
> +                    found = true;
> +                }
> +            }
> +            if (!found) {
> +                throw new GBeanNotFoundException(connectorName);
> +            }
> +            EditableConfigurationManager mgr =
> ConfigurationUtil.getEditableConfigurationManager(kernel);
> +            if (mgr != null) {
> +                try {
> +
> mgr.removeGBeanFromConfiguration(connectorName.getArtifact(),
> connectorName);
> +                } catch (InvalidConfigException e) {
> +                    log.error("Unable to add GBean", e);
> +                } finally {
> +                    ConfigurationUtil.releaseConfigurationManager 
> (kernel, mgr);
> +                }
> +            } else {
> +                log.warn("The ConfigurationManager in the kernel does
> not allow editing");
> +            }
> +        } catch (GBeanNotFoundException e) {
> +            log.warn("No such GBean '" + connectorName + "'");
> //todo: what if we want to remove a failed GBean?
> +        } catch (Exception e) {
> +            log.error(e);
> +        }
> +    }
> +
> +    public static final GBeanInfo GBEAN_INFO;
> +
> +    static {
> +        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("ActiveMQ
> Manager", ActiveMQManagerGBean.class);
> +        infoFactory.addAttribute("kernel", Kernel.class, false);
> +        infoFactory.addAttribute("objectName", String.class, false);
> +        infoFactory.addInterface(ActiveMQManager.class);
> +        infoFactory.setConstructor(new String[]{"kernel",  
> "objectName"});
> +        GBEAN_INFO = infoFactory.getBeanInfo();
> +    }
> +
> +    public static GBeanInfo getGBeanInfo() {
> +        return GBEAN_INFO;
> +    }
> +}
> Index: modules/activemq-gbean/src/main/java/org/apache/activemq/ 
> gbean/package.html
> ===================================================================
> --- modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> package.html	(revision
> 0)
> +++ modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> package.html	(revision
> 0)
> @@ -0,0 +1,11 @@
> +<html>
> +<head>
> +</head>
> +<body>
> +
> +<p>
> +	The JMS container using GBeaps for deployment in Geronimo or other
> JSR 77/88 based containers
> +</p>
> +
> +</body>
> +</html>
>
> Property changes on:
> modules/activemq-gbean/src/main/java/org/apache/activemq/gbean/ 
> package.html
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean/pom.xml
> ===================================================================
> --- modules/activemq-gbean/pom.xml	(revision 0)
> +++ modules/activemq-gbean/pom.xml	(revision 0)
> @@ -0,0 +1,83 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +    Copyright 2005-2006 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.
> +-->
> +<!-- $Rev: 411333 $ $Date: 2006-06-02 18:35:57 -0500 (Fri, 02 Jun  
> 2006) $ -->
> +<project
> +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd"
> +  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> +  xmlns="http://maven.apache.org/POM/4.0.0">
> +
> +    <modelVersion>4.0.0</modelVersion>
> +
> +    <parent>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>modules-parent</artifactId>
> +        <version>1.2-SNAPSHOT</version>
> +        <relativePath>../pom.xml</relativePath>
> +    </parent>
> +
> +    <artifactId>geronimo-activemq-gbean</artifactId>
> +    <version>${geronimoVersion}</version>
> +    <name>ActiveMQ :: GBeans</name>
> +    <description>Geronimo ActiveMQ Integration</description>
> +
> +    <dependencies>
> +
> +      <dependency>
> +        <groupId>incubator-activemq</groupId>
> +        <artifactId>activemq-core</artifactId>
> +        <version>4.0-SNAPSHOT</version>
> +      </dependency>
> +      <dependency>
> +        <groupId>incubator-activemq</groupId>
> +        <artifactId>activeio-core</artifactId>
> +        <version>3.0-SNAPSHOT</version>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>geronimo-activemq-gbean-management</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>geronimo-kernel</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>geronimo-system</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>geronimo-management</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>geronimo-j2ee</artifactId>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>commons-logging</groupId>
> +        <artifactId>commons-logging</artifactId>
> +      </dependency>
> +
> +      <dependency>
> +        <groupId>mx4j</groupId>
> +        <artifactId>mx4j</artifactId>
> +      </dependency>
> +
> +    </dependencies>
> +
> +</project>
> Index: modules/activemq-gbean-management/project.properties
> ===================================================================
> --- modules/activemq-gbean-management/project.properties	(revision 0)
> +++ modules/activemq-gbean-management/project.properties	(revision 0)
> @@ -0,0 +1,3 @@
> +# -------------------------------------------------------------------
> +# Build Properties
> +# -------------------------------------------------------------------
>
> Property changes on: modules/activemq-gbean-management/ 
> project.properties
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean-management/project.xml
> ===================================================================
> --- modules/activemq-gbean-management/project.xml	(revision 0)
> +++ modules/activemq-gbean-management/project.xml	(revision 0)
> @@ -0,0 +1,37 @@
> +<?xml version="1.0" encoding="ISO-8859-1"?>
> +<!DOCTYPE project>
> +<project>
> +    <pomVersion>3</pomVersion>
> +    <extend>../../etc/project.xml</extend>
> +
> +    <name>Geronimo :: ActiveMQ :: GBean Interfaces</name>
> +    <id>geronimo-activemq-gbean-management</id>
> +    <shortDescription>Geronimo / GBean management support</ 
> shortDescription>
> +    <description>ActiveMQ management interfaces used for integration
> into Apache Geronimo</description>
> +
> +    <!-- ============ -->
> +    <!-- Dependencies -->
> +    <!-- ============ -->
> +    <dependencies>
> +
> +        <dependency>
> +            <groupId>geronimo</groupId>
> +            <artifactId>geronimo-management</artifactId>
> +            <version>${pom.currentVersion}</version>
> +        </dependency>
> +
> +    </dependencies>
> +
> +    <!-- this module is using m2 directory layout -->
> +    <build>
> +        <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
> +        <unitTestSourceDirectory>${basedir}/src/main/test</ 
> unitTestSourceDirectory>
> +
> +        <unitTest>
> +            <includes>
> +                <include>**/*Test.java</include>
> +            </includes>
> +        </unitTest>
> +    </build>
> +
> +</project>
>
> Property changes on: modules/activemq-gbean-management/project.xml
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQConnector.java
> ===================================================================
> --- modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQConnector.java	(revision
> 0)
> +++ modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQConnector.java	(revision
> 0)
> @@ -0,0 +1,34 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import org.apache.geronimo.management.geronimo.JMSConnector;
> +
> +/**
> + * The GBean interface for the ActiveMQ network connector GBean
> + *
> + * @version $Revision: 1.0$
> + */
> +public interface ActiveMQConnector extends JMSConnector {
> +    public final static String CONNECTOR_J2EE_TYPE = "JMSConnector";
> +
> +    // Additional stuff you can add to an ActiveMQ connector URI
> +    public String getPath();
> +    public void setPath(String path);
> +    public String getQuery();
> +    public void setQuery(String query);
> +}
> Index: modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQManager.java
> ===================================================================
> --- modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQManager.java	(revision
> 0)
> +++ modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQManager.java	(revision
> 0)
> @@ -0,0 +1,29 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import org.apache.geronimo.management.J2EEManagedObject;
> +import org.apache.geronimo.management.geronimo.JMSManager;
> +
> +/**
> + * The GBean interface for the ActiveMQ management GBean.  This  
> defines the
> + * features that should be available to the management interface  
> at runtime.
> + *
> + * @version $Revision: 1.0$
> + */
> +public interface ActiveMQManager extends JMSManager,  
> J2EEManagedObject {
> +}
> Index: modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQBroker.java
> ===================================================================
> --- modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQBroker.java	(revision
> 0)
> +++ modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/ActiveMQBroker.java	(revision
> 0)
> @@ -0,0 +1,30 @@
> +/**
> + *
> + * Copyright 2005-2006 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.activemq.gbean;
> +
> +import org.apache.geronimo.management.geronimo.JMSBroker;
> +
> +/**
> + * The management interface for the ActiveMQ broker GBean.
> + * This is separate from ActiveMQContainer because that interface  
> has hard
> + * links to code in activemq-core, yet we still want to be able to
> + * distinguish ActiveMQ brokers from non-ActiveMQ JMS brokers.
> + *
> + * @version $Revision: 1.0$
> + */
> +public interface ActiveMQBroker extends JMSBroker {
> +}
> Index: modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/package.html
> ===================================================================
> --- modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/package.html	(revision
> 0)
> +++ modules/activemq-gbean-management/src/main/java/org/apache/ 
> activemq/gbean/package.html	(revision
> 0)
> @@ -0,0 +1,12 @@
> +<html>
> +<head>
> +</head>
> +<body>
> +
> +<p>
> +	The management API for ActiveMQ, when run in a
> +        container like Geronimo
> +</p>
> +
> +</body>
> +</html>
>
> Property changes on:
> modules/activemq-gbean-management/src/main/java/org/apache/activemq/ 
> gbean/package.html
> ___________________________________________________________________
> Name: svn:executable
>   + *
>
> Index: modules/activemq-gbean-management/pom.xml
> ===================================================================
> --- modules/activemq-gbean-management/pom.xml	(revision 0)
> +++ modules/activemq-gbean-management/pom.xml	(revision 0)
> @@ -0,0 +1,53 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +    Copyright 2005-2006 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.
> +-->
> +<!-- $Rev: 411333 $ $Date: 2006-06-02 18:35:57 -0500 (Fri, 02 Jun  
> 2006) $ -->
> +<project
> +  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd"
> +  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> +  xmlns="http://maven.apache.org/POM/4.0.0">
> +
> +    <modelVersion>4.0.0</modelVersion>
> +
> +    <parent>
> +        <groupId>org.apache.geronimo.modules</groupId>
> +        <artifactId>modules-parent</artifactId>
> +        <version>1.2-SNAPSHOT</version>
> +        <relativePath>../pom.xml</relativePath>
> +    </parent>
> +
> +    <artifactId>geronimo-activemq-gbean-management</artifactId>
> +    <version>${geronimoVersion}</version>
> +    <name>Geronimo :: ActiveMQ :: GBean Interfaces</name>
> +    <description>ActiveMQ Management Interfaces used by Geronimo</ 
> description>
> +
> +    <dependencies>
> +
> +      <dependency>
> +          <groupId>org.apache.geronimo.modules</groupId>
> +          <artifactId>geronimo-management</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>backport-util-concurrent</groupId>
> +        <artifactId>backport-util-concurrent</artifactId>
> +      </dependency>
> +      <dependency>
> +        <groupId>log4j</groupId>
> +        <artifactId>log4j</artifactId>
> +      </dependency>
> +
> +   </dependencies>
> +</project>
>
>
> -- 
> Regards,
> Hiram


Mime
View raw message