You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2007/05/24 16:14:50 UTC
svn commit: r541306 - in /activemq/trunk: ./ activemq-web-console/
activemq-web-console/src/main/java/org/apache/activemq/web/
activemq-web-console/src/main/java/org/apache/activemq/web/controller/
activemq-web-console/src/main/webapp/WEB-INF/ activemq...
Author: jstrachan
Date: Thu May 24 07:14:49 2007
New Revision: 541306
URL: http://svn.apache.org/viewvc?view=rev&rev=541306
Log:
applied patch for AMQ-1241 to allow the web console to be run against an embedded, invm, properties or remote broker. Many thanks to Mario Siegenthaler for the patch!
Added:
activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java (with props)
activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java (with props)
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml (contents, props changed)
- copied, changed from r540136, activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml (with props)
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml (with props)
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml (with props)
activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml (contents, props changed)
- copied, changed from r541274, activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/applicationContext.xml
Removed:
activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/JMXBrokerFacade.java
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/applicationContext.xml
Modified:
activemq/trunk/activemq-web-console/pom.xml
activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml
activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java
activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java
activemq/trunk/assembly/pom.xml
activemq/trunk/assembly/src/main/descriptors/unix-bin.xml
activemq/trunk/assembly/src/main/descriptors/windows-bin.xml
activemq/trunk/pom.xml
Modified: activemq/trunk/activemq-web-console/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/pom.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web-console/pom.xml (original)
+++ activemq/trunk/activemq-web-console/pom.xml Thu May 24 07:14:49 2007
@@ -52,6 +52,20 @@
<name>com.sun.management.jmxremote</name>
<value></value>
</systemProperty>
+<!--
+ <systemProperty>
+ <name>webconsole.type</name>
+ <value>properties</value>
+ </systemProperty>
+ <systemProperty>
+ <name>webconsole.jms.url</name>
+ <value>tcp://localhost:61616</value>
+ </systemProperty>
+ <systemProperty>
+ <name>webconsole.jmx.url</name>
+ <value>service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi</value>
+ </systemProperty>
+-->
</systemProperties>
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
Added: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java?view=auto&rev=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java (added)
+++ activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java Thu May 24 07:14:49 2007
@@ -0,0 +1,222 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.web;
+
+import org.apache.activemq.broker.jmx.BrokerViewMBean;
+import org.apache.activemq.broker.jmx.ManagementContext;
+import org.apache.activemq.broker.jmx.QueueViewMBean;
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * A {@link BrokerFacade} which uses a JMX-Connection to communicate with a
+ * broker
+ *
+ * @version $Revision: 1.1 $
+ */
+public class RemoteJMXBrokerFacade extends BrokerFacadeSupport {
+ private static final transient Log log = LogFactory.getLog(RemoteJMXBrokerFacade.class);
+ private String jmxUrl;
+ private String brokerName;
+ private JMXConnector connector;
+
+ public void setBrokerName(String brokerName) {
+ this.brokerName = brokerName;
+ }
+
+ public void setJmxUrl(String url) {
+ this.jmxUrl = url;
+ }
+
+ /**
+ * Shutdown this facade aka close any open connection.
+ */
+ public void shutdown() {
+ closeConnection();
+ }
+
+ public BrokerViewMBean getBrokerAdmin() throws Exception {
+ MBeanServerConnection connection = getConnection();
+
+ Set brokers = findBrokers(connection);
+ if (brokers.size() == 0) {
+ throw new IOException("No broker could be found in the JMX.");
+ }
+ ObjectName name = (ObjectName) brokers.iterator().next();
+ BrokerViewMBean mbean = (BrokerViewMBean) MBeanServerInvocationHandler
+ .newProxyInstance(connection, name, BrokerViewMBean.class, true);
+ return mbean;
+ }
+
+ protected MBeanServerConnection getConnection() throws IOException {
+ JMXConnector connector = this.connector;
+ if (isConnectionActive(connector)) {
+ return connector.getMBeanServerConnection();
+ }
+
+ synchronized (this) {
+ closeConnection();
+
+ log.debug("Creating a new JMX-Connection to the broker");
+ this.connector = createConnection();
+ return this.connector.getMBeanServerConnection();
+ }
+ }
+
+ protected boolean isConnectionActive(JMXConnector connector) {
+ if (connector == null) {
+ return false;
+ }
+
+ try {
+ MBeanServerConnection connection = connector
+ .getMBeanServerConnection();
+ int brokerCount = findBrokers(connection).size();
+ return brokerCount > 0;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ protected JMXConnector createConnection() {
+ String[] urls = this.jmxUrl.split(",");
+ if (urls == null || urls.length == 0) {
+ urls = new String[]{this.jmxUrl};
+ }
+
+ Exception exception = null;
+ for (int i = 0; i < urls.length; i++) {
+ try {
+ JMXConnector connector = JMXConnectorFactory
+ .connect(new JMXServiceURL(urls[i]));
+ connector.connect();
+ MBeanServerConnection connection = connector
+ .getMBeanServerConnection();
+
+ Set brokers = findBrokers(connection);
+ if (brokers.size() > 0) {
+ log
+ .info("Connected via JMX to the broker at "
+ + urls[i]);
+ return connector;
+ }
+ }
+ catch (Exception e) {
+ // Keep the exception for later
+ exception = e;
+ }
+ }
+ if (exception != null) {
+ if (exception instanceof RuntimeException) {
+ throw (RuntimeException) exception;
+ }
+ else {
+ throw new RuntimeException(exception);
+ }
+ }
+ throw new IllegalStateException(
+ "No broker is found at any of the urls " + this.jmxUrl);
+ }
+
+ protected synchronized void closeConnection() {
+ if (connector != null) {
+ try {
+ log.debug("Closing a connection to a broker ("
+ + connector.getConnectionId() + ")");
+
+ connector.close();
+ }
+ catch (IOException e) {
+ // Ignore the exception, since it most likly won't matter
+ // anymore
+ }
+ }
+ }
+
+ /**
+ * Finds all ActiveMQ-Brokers registered on a certain JMX-Server or, if a
+ * JMX-BrokerName has been set, the broker with that name.
+ *
+ * @param connection not <code>null</code>
+ * @return Set with ObjectName-elements
+ * @throws IOException
+ * @throws MalformedObjectNameException
+ */
+ protected Set findBrokers(MBeanServerConnection connection)
+ throws IOException, MalformedObjectNameException {
+ ObjectName name;
+ if (this.brokerName == null) {
+ name = new ObjectName("org.apache.activemq:Type=Broker,*");
+ }
+ else {
+ name = new ObjectName("org.apache.activemq:BrokerName="
+ + this.brokerName + ",Type=Broker");
+ }
+
+ Set brokers = connection.queryNames(name, null);
+ return brokers;
+ }
+
+ public void purgeQueue(ActiveMQDestination destination) throws Exception {
+ QueueViewMBean queue = getQueue(destination.getPhysicalName());
+ queue.purge();
+ }
+
+ public ManagementContext getManagementContext() {
+ throw new IllegalStateException("not supported");
+ }
+
+ protected Collection getManagedObjects(ObjectName[] names, Class type) {
+ MBeanServerConnection connection;
+ try {
+ connection = getConnection();
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ List answer = new ArrayList();
+ if (connection != null) {
+ for (int i = 0; i < names.length; i++) {
+ ObjectName name = names[i];
+ Object value = MBeanServerInvocationHandler.newProxyInstance(
+ connection, name, type, true);
+ if (value != null) {
+ answer.add(value);
+ }
+ }
+ }
+ return answer;
+ }
+
+}
Propchange: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/RemoteJMXBrokerFacade.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java (original)
+++ activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java Thu May 24 07:14:49 2007
@@ -16,13 +16,12 @@
*/
package org.apache.activemq.web;
-import org.apache.activemq.ActiveMQConnectionFactory;
+import java.util.LinkedList;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Session;
-import java.util.LinkedList;
/**
* A simple pool of JMS Session objects intended for use by Queue browsers.
@@ -31,58 +30,71 @@
*/
public class SessionPool {
- private ConnectionFactory connectionFactory;
- private Connection connection;
- private LinkedList sessions = new LinkedList();
-
- public Connection getConnection() throws JMSException {
- if (connection == null) {
- connection = getConnectionFactory().createConnection();
- connection.start();
- }
- return connection;
- }
-
- public void setConnection(Connection connection) {
- this.connection = connection;
- }
-
- public ConnectionFactory getConnectionFactory() {
- if (connectionFactory == null) {
- // TODO support remote brokers too
- connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
- }
- return connectionFactory;
- }
-
- public void setConnectionFactory(ConnectionFactory connectionFactory) {
- this.connectionFactory = connectionFactory;
- }
-
-
- public Session borrowSession() throws JMSException {
- Session answer = null;
- synchronized (sessions) {
- if (sessions.isEmpty()) {
- answer = createSession();
- }
- else {
- answer = (Session) sessions.removeLast();
- }
- }
- return answer;
- }
-
- protected void returnSession(Session session) {
- if (session != null) {
- synchronized (sessions) {
- sessions.add(session);
- }
- }
- }
-
- protected Session createSession() throws JMSException {
- return getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
- }
+ private ConnectionFactory connectionFactory;
+ private Connection connection;
+ private LinkedList sessions = new LinkedList();
+
+ public Connection getConnection() throws JMSException {
+ if (checkConnection())
+ return connection;
+
+ synchronized (this) {
+ connection = getConnectionFactory().createConnection();
+ connection.start();
+ return connection;
+ }
+ }
+
+ private boolean checkConnection() {
+ if (connection == null)
+ return false;
+
+ try {
+ connection.getMetaData();
+ return true;
+ } catch (JMSException e) {
+ return false;
+ }
+ }
+
+ public void setConnection(Connection connection) {
+ this.connection = connection;
+ }
+
+ public ConnectionFactory getConnectionFactory() {
+ if (connectionFactory == null) {
+ throw new IllegalStateException(
+ "No ConnectionFactory has been set for the session pool");
+ }
+ return connectionFactory;
+ }
+
+ public void setConnectionFactory(ConnectionFactory connectionFactory) {
+ this.connectionFactory = connectionFactory;
+ }
+
+ public Session borrowSession() throws JMSException {
+ Session answer = null;
+ synchronized (sessions) {
+ if (sessions.isEmpty()) {
+ answer = createSession();
+ } else {
+ answer = (Session) sessions.removeLast();
+ }
+ }
+ return answer;
+ }
+
+ public void returnSession(Session session) {
+ if (session != null) {
+ synchronized (sessions) {
+ sessions.add(session);
+ }
+ }
+ }
+
+ protected Session createSession() throws JMSException {
+ return getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
+ }
}
Added: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java?view=auto&rev=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java (added)
+++ activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java Thu May 24 07:14:49 2007
@@ -0,0 +1,83 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.web;
+
+import javax.jms.ConnectionFactory;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+import org.springframework.web.context.support.XmlWebApplicationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Starts the WebConsole.
+ *
+ * @version $Revision: 1.1 $
+ */
+public class WebConsoleStarter implements ServletContextListener {
+ private static final transient Log log = LogFactory.getLog(WebConsoleStarter.class);
+
+ public void contextInitialized(ServletContextEvent event) {
+ log.debug("Initializing ActiveMQ WebConsole...");
+
+ ServletContext servletContext = event.getServletContext();
+ WebApplicationContext context = createWebapplicationContext(servletContext);
+
+ initializeWebClient(servletContext, context);
+
+ log.info("ActiveMQ WebConsole initialized.");
+ }
+
+ private WebApplicationContext createWebapplicationContext(ServletContext servletContext) {
+ String webconsoleType = System.getProperty("webconsole.type", "embedded");
+ String configuration = "/WEB-INF/webconsole-" + webconsoleType + ".xml";
+
+ XmlWebApplicationContext context = new XmlWebApplicationContext();
+ context.setServletContext(servletContext);
+ context.setConfigLocations(new String[] { configuration });
+ context.refresh();
+ context.start();
+
+ servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, context);
+
+ return context;
+ }
+
+ private void initializeWebClient(ServletContext servletContext, WebApplicationContext context) {
+ ConnectionFactory connectionFactory = (ConnectionFactory) context
+ .getBean("connectionFactory");
+ servletContext.setAttribute(WebClient.connectionFactoryAttribute,
+ connectionFactory);
+ }
+
+ public void contextDestroyed(ServletContextEvent event) {
+ XmlWebApplicationContext context = (XmlWebApplicationContext) WebApplicationContextUtils
+ .getWebApplicationContext(event.getServletContext());
+ if (context != null)
+ {
+ context.stop();
+ context.destroy();
+ }
+ // do nothing, since the context is destoyed anyway
+ }
+
+}
Propchange: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/WebConsoleStarter.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java (original)
+++ activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java Thu May 24 07:14:49 2007
@@ -78,8 +78,6 @@
}
client.send(dest, message, JMSPersistent, JMSPriority, JMSTimeToLive);
-
- System.out.println("Sent message: " + message);
}
}
Modified: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml (original)
+++ activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml Thu May 24 07:14:49 2007
@@ -22,117 +22,141 @@
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
- <description>
- Apache ActiveMQ Web Console
- </description>
- <display-name>ActiveMQ Console</display-name>
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Configuration of the SiteMesh Filter. -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <filter>
- <filter-name>sitemesh</filter-name>
- <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>sitemesh</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Expose Spring POJOs to JSP . -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <filter>
- <filter-name>spring</filter-name>
- <filter-class>org.apache.activemq.web.filter.ApplicationContextFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>spring</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- ActiveMQ servlets -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-
- <!-- the subscription REST servlet -->
- <servlet>
- <servlet-name>AjaxServlet</servlet-name>
- <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>AjaxServlet</servlet-name>
- <url-pattern>/ajax/*</url-pattern>
- </servlet-mapping>
-
- <servlet>
- <servlet-name>SendServlet</servlet-name>
- <servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>SendServlet</servlet-name>
- <url-pattern>/send/*</url-pattern>
- </servlet-mapping>
-
- <!-- the queue browse servlet -->
- <servlet>
- <servlet-name>QueueBrowseServlet</servlet-name>
- <servlet-class>org.apache.activemq.web.QueueBrowseServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>QueueBrowseServlet</servlet-name>
- <url-pattern>/queueBrowse/*</url-pattern>
- </servlet-mapping>
-
- <!-- track the session usage for web JMS clients -->
- <filter>
- <filter-name>session</filter-name>
- <filter-class>org.apache.activemq.web.SessionFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>session</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Spring listener. -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Configuration of the Spring MVC dispatcher -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <servlet>
- <servlet-name>dispatcher</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
-
- <servlet-mapping>
- <servlet-name>dispatcher</servlet-name>
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
-
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
-
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Factor out common headers in JSP pages -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <jsp-config>
- <jsp-property-group>
- <url-pattern>*.jsp</url-pattern>
- <include-prelude>/WEB-INF/jspf/headertags.jspf</include-prelude>
- </jsp-property-group>
- </jsp-config>
+ <description>
+ Apache ActiveMQ Web Console
+ </description>
+ <display-name>ActiveMQ Console</display-name>
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Configuration of the SiteMesh Filter. -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <filter>
+ <filter-name>sitemesh</filter-name>
+ <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>sitemesh</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Expose Spring POJOs to JSP . -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <filter>
+ <filter-name>spring</filter-name>
+ <filter-class>org.apache.activemq.web.filter.ApplicationContextFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>spring</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- ActiveMQ servlets -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+
+ <!-- the subscription REST servlet -->
+ <servlet>
+ <servlet-name>AjaxServlet</servlet-name>
+ <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>AjaxServlet</servlet-name>
+ <url-pattern>/ajax/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <servlet-name>SendServlet</servlet-name>
+ <servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>SendServlet</servlet-name>
+ <url-pattern>/send/*</url-pattern>
+ </servlet-mapping>
+
+ <!-- the queue browse servlet -->
+ <servlet>
+ <servlet-name>QueueBrowseServlet</servlet-name>
+ <servlet-class>org.apache.activemq.web.QueueBrowseServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>QueueBrowseServlet</servlet-name>
+ <url-pattern>/queueBrowse/*</url-pattern>
+ </servlet-mapping>
+
+ <!-- track the session usage for web JMS clients -->
+ <filter>
+ <filter-name>session</filter-name>
+ <filter-class>org.apache.activemq.web.SessionFilter</filter-class>
+ </filter>
+
+ <filter>
+ <filter-name>spring-rq</filter-name>
+ <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>session</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+ <filter-mapping>
+ <filter-name>spring-rq</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Spring listener. -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <listener>
+ <listener-class>org.apache.activemq.web.WebConsoleStarter</listener-class>
+ </listener>
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Configuration of the Spring MVC dispatcher -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <servlet>
+ <servlet-name>dispatcher</servlet-name>
+ <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <load-on-startup>2</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>dispatcher</servlet-name>
+ <url-pattern>*.action</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+
+
+ <!-- JNDI Stuff
+<resource-ref>
+ <res-ref-name>jms/connectionFactory</res-ref-name>
+ <res-type>javax.jms.ConnectionFactory</res-type>
+ <res-auth>Container</res-auth>
+ </resource-ref>
+ <resource-ref>
+ <res-ref-name>jmx/url</res-ref-name>
+ <res-type>java.lang.String</res-type>
+ </resource-ref>
+ -->
+
+
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- Factor out common headers in JSP pages -->
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <jsp-config>
+ <jsp-property-group>
+ <url-pattern>*.jsp</url-pattern>
+ <include-prelude>/WEB-INF/jspf/headertags.jspf</include-prelude>
+ </jsp-property-group>
+ </jsp-config>
</web-app>
Copied: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml (from r540136, activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml)
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml?view=diff&rev=541306&p1=activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml&r1=540136&p2=activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml&r2=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml Thu May 24 07:14:49 2007
@@ -20,20 +20,23 @@
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
-
- <bean id="sessionPool" class="org.apache.activemq.web.SessionPool"/>
-
<!-- use the following bean for a local in-JVM broker -->
-
<bean id="brokerQuery" class="org.apache.activemq.web.LocalBrokerFacade" autowire='constructor' singleton="false"/>
+ <!-- use the following for a remote JMX based broker -->
+ <!--<bean id="brokerQuery" class="org.apache.activemq.web.JMXBrokerFacade" autowire='constructor' singleton="false"/>-->
+
<bean id="brokerService" class="org.apache.activemq.xbean.BrokerFactoryBean">
<property name="config" value="/WEB-INF/activemq.xml"/>
</bean>
- <!-- use the following for a remote JMX based broker -->
- <!--<bean id="brokerQuery" class="org.apache.activemq.web.JMXBrokerFacade" autowire='constructor' singleton="false"/>-->
+ <bean id="sessionPool" class="org.apache.activemq.web.SessionPool">
+ <property name="connectionFactory" ref="connectionFactory"/>
+ </bean>
+ <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" depends-on="brokerService">
+ <property name="brokerURL" value="vm://localhost"/>
+ </bean>
<bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire='constructor' singleton="false"/>
<bean id="messageQuery" class="org.apache.activemq.web.MessageQuery" autowire='constructor' singleton="false"/>
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml?view=auto&rev=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml (added)
+++ activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml Thu May 24 07:14:49 2007
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
+ <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
+
+
+ <bean id="sessionPool" class="org.apache.activemq.web.SessionPool">
+ <property name="connectionFactory" ref="connectionFactory"/>
+ </bean>
+
+ <bean id="brokerRegistry" class="org.apache.activemq.broker.BrokerRegistry" factory-method="getInstance"/>
+ <bean id="brokerService" factory-bean="brokerRegistry" factory-method="findFirst"/>
+ <bean id="brokerURL" factory-bean="brokerService" factory-method="getVmConnectorURI"/>
+
+ <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
+ <constructor-arg ref="brokerURL"/>
+ </bean>
+
+ <bean id="brokerQuery" class="org.apache.activemq.web.LocalBrokerFacade" autowire="constructor" scope="prototype"/>
+
+ <bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+ <bean id="messageQuery" class="org.apache.activemq.web.MessageQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+
+</beans>
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-invm.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml?view=auto&rev=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml (added)
+++ activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml Thu May 24 07:14:49 2007
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
+ <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
+
+
+ <bean id="sessionPool" class="org.apache.activemq.web.SessionPool">
+ <property name="connectionFactory" ref="connectionFactory"/>
+ </bean>
+
+ <bean id="brokerQuery" class="org.apache.activemq.web.RemoteJMXBrokerFacade" autowire="constructor" destroy-method="shutdown">
+ <property name="jmxUrl" ref="jmxUrl"/>
+ <property name="brokerName"><null/></property>
+ </bean>
+
+ <bean id="jmxUrl" class="org.springframework.jndi.JndiObjectFactoryBean">
+ <property name="jndiName" value="java:comp/env/jmx/url" />
+ </bean>
+ <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
+ <property name="jndiName" value="java:comp/env/jms/connectionFactory" />
+ </bean>
+
+
+ <bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+ <bean id="messageQuery" class="org.apache.activemq.web.MessageQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+
+</beans>
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-jndi.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml?view=auto&rev=541306
==============================================================================
--- activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml (added)
+++ activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml Thu May 24 07:14:49 2007
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
+ <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
+
+
+ <bean id="sessionPool" class="org.apache.activemq.web.SessionPool">
+ <property name="connectionFactory" ref="connectionFactory"/>
+ </bean>
+
+ <bean id="brokerQuery" class="org.apache.activemq.web.RemoteJMXBrokerFacade" autowire="constructor" destroy-method="shutdown">
+ <property name="jmxUrl" value="${webconsole.jmx.url}"/>
+ <property name="brokerName"><null/></property>
+ </bean>
+
+ <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
+ <property name="brokerURL" value="${webconsole.jms.url}"/>
+ </bean>
+
+
+ <bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+ <bean id="messageQuery" class="org.apache.activemq.web.MessageQuery" autowire="constructor" destroy-method="destroy" scope="request"/>
+
+</beans>
Propchange: activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/webconsole-properties.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/QueueBrowseServlet.java Thu May 24 07:14:49 2007
@@ -16,10 +16,11 @@
*/
package org.apache.activemq.web;
-import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.activemq.util.FactoryFinder;
-import org.apache.activemq.util.IntrospectionSupport;
-import org.apache.activemq.web.view.MessageRenderer;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
@@ -32,11 +33,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Map;
+import org.apache.activemq.util.FactoryFinder;
+import org.apache.activemq.util.IntrospectionSupport;
+import org.apache.activemq.web.view.MessageRenderer;
/**
* Renders the contents of a queue using some kind of view. The URI is assumed
@@ -49,6 +48,8 @@
*
* @version $Revision: $
*/
+//TODO Why do we implement our own session pool?
+//TODO This doesn't work, since nobody will be setting the connection factory (because nobody is able to). Just use the WebClient?
public class QueueBrowseServlet extends HttpServlet {
private static FactoryFinder factoryFinder = new FactoryFinder("META-INF/services/org/apache/activemq/web/view/");
@@ -71,8 +72,7 @@
public ConnectionFactory getConnectionFactory() {
if (connectionFactory == null) {
- // TODO support remote brokers too
- connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
+ throw new IllegalStateException("missing ConnectionFactory in QueueBrowserServlet");
}
return connectionFactory;
}
Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java Thu May 24 07:14:49 2007
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Map;
+import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
@@ -44,9 +45,7 @@
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionEvent;
-import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
-import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.MessageAvailableConsumer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -75,8 +74,8 @@
private static transient ConnectionFactory factory;
private transient Map consumers = new HashMap();
- private transient ActiveMQConnection connection;
- private transient ActiveMQSession session;
+ private transient Connection connection;
+ private transient Session session;
private transient MessageProducer producer;
private int deliveryMode = DeliveryMode.NON_PERSISTENT;
@@ -221,15 +220,15 @@
return session;
}
- public ActiveMQConnection getConnection() throws JMSException {
+ public Connection getConnection() throws JMSException {
if (connection == null) {
- connection = (ActiveMQConnection) factory.createConnection();
+ connection = factory.createConnection();
connection.start();
}
return connection;
}
- public static synchronized void initConnectionFactory(ServletContext servletContext) {
+ protected static synchronized void initConnectionFactory(ServletContext servletContext) {
if (factory == null)
factory = (ConnectionFactory) servletContext.getAttribute(connectionFactoryAttribute);
if (factory == null) {
@@ -239,7 +238,7 @@
log.debug("Value of: " + brokerUrlInitParam + " is: " + brokerURL);
if (brokerURL == null) {
- brokerURL = "vm://localhost";
+ throw new IllegalStateException("missing brokerURL (specified via "+brokerUrlInitParam+" init-Param");
}
ActiveMQConnectionFactory amqfactory = new ActiveMQConnectionFactory(brokerURL);
@@ -302,8 +301,8 @@
return new ArrayList(consumers.values());
}
- protected ActiveMQSession createSession() throws JMSException {
- return (ActiveMQSession) getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
+ protected Session createSession() throws JMSException {
+ return getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
}
public Semaphore getSemaphore() {
Modified: activemq/trunk/assembly/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/assembly/pom.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/assembly/pom.xml (original)
+++ activemq/trunk/assembly/pom.xml Thu May 24 07:14:49 2007
@@ -210,6 +210,10 @@
<!-- enable commons-logging when inside jetty6:run -->
<dependency>
<groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
<artifactId>slf4j-jcl</artifactId>
</dependency>
<dependency>
Modified: activemq/trunk/assembly/src/main/descriptors/unix-bin.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/assembly/src/main/descriptors/unix-bin.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/assembly/src/main/descriptors/unix-bin.xml (original)
+++ activemq/trunk/assembly/src/main/descriptors/unix-bin.xml Thu May 24 07:14:49 2007
@@ -105,7 +105,7 @@
<outputDirectory>/webapps/admin</outputDirectory>
<excludes>
<exclude>**/activemq.xml</exclude>
- <exclude>**/applicationContext.xml</exclude>
+ <exclude>**/webconsole-embedded.xml</exclude>
</excludes>
</fileSet>
<fileSet>
@@ -122,7 +122,7 @@
<outputDirectory>/webapps/demo</outputDirectory>
<excludes>
<exclude>**/activemq.xml</exclude>
- <exclude>**/applicationContext.xml</exclude>
+ <exclude>**/webconsole-embedded.xml</exclude>
</excludes>
</fileSet>
@@ -188,6 +188,7 @@
<include>org.mortbay.jetty:jetty-util</include>
<include>org.mortbay.jetty:jetty-xbean</include>
<include>org.mortbay.jetty:servlet-api-2.5</include>
+ <include>org.slf4j:slf4j-api</include>
<include>org.slf4j:slf4j-jcl</include>
<!-- JSP support -->
Modified: activemq/trunk/assembly/src/main/descriptors/windows-bin.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/assembly/src/main/descriptors/windows-bin.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/assembly/src/main/descriptors/windows-bin.xml (original)
+++ activemq/trunk/assembly/src/main/descriptors/windows-bin.xml Thu May 24 07:14:49 2007
@@ -109,7 +109,7 @@
<outputDirectory>/webapps/admin</outputDirectory>
<excludes>
<exclude>**/activemq.xml</exclude>
- <exclude>**/applicationContext.xml</exclude>
+ <exclude>**/webconsole-embedded.xml</exclude>
</excludes>
</fileSet>
<fileSet>
@@ -127,7 +127,7 @@
<outputDirectory>/webapps/demo</outputDirectory>
<excludes>
<exclude>**/activemq.xml</exclude>
- <exclude>**/applicationContext.xml</exclude>
+ <exclude>**/webconsole-embedded.xml</exclude>
</excludes>
</fileSet>
@@ -196,6 +196,7 @@
<include>org.mortbay.jetty:jetty-util</include>
<include>org.mortbay.jetty:jetty-xbean</include>
<include>org.mortbay.jetty:servlet-api-2.5</include>
+ <include>org.slf4j:slf4j-api</include>
<include>org.slf4j:slf4j-jcl</include>
<!-- JSP support -->
Copied: activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml (from r541274, activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/applicationContext.xml)
URL: http://svn.apache.org/viewvc/activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml?view=diff&rev=541306&p1=activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/applicationContext.xml&r1=541274&p2=activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml&r2=541306
==============================================================================
--- activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/applicationContext.xml (original)
+++ activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml Thu May 24 07:14:49 2007
@@ -20,11 +20,17 @@
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
-
- <bean id="sessionPool" class="org.apache.activemq.web.SessionPool"/>
-
<!-- use the following bean for a local in-JVM broker -->
<bean id="brokerQuery" class="org.apache.activemq.web.SingletonBrokerFacade" autowire='constructor' singleton="false"/>
+
+
+ <bean id="sessionPool" class="org.apache.activemq.web.SessionPool">
+ <property name="connectionFactory" ref="connectionFactory"/>
+ </bean>
+
+ <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
+ <property name="brokerURL" value="vm://localhost"/>
+ </bean>
<bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire='constructor' singleton="false"/>
<bean id="messageQuery" class="org.apache.activemq.web.MessageQuery" autowire='constructor' singleton="false"/>
Propchange: activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: activemq/trunk/assembly/src/release/webapps/admin/WEB-INF/webconsole-embedded.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: activemq/trunk/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/pom.xml?view=diff&rev=541306&r1=541305&r2=541306
==============================================================================
--- activemq/trunk/pom.xml (original)
+++ activemq/trunk/pom.xml Thu May 24 07:14:49 2007
@@ -64,6 +64,8 @@
<p2psockets-version>1.1.2</p2psockets-version>
<regexp-version>1.3</regexp-version>
<rome-version>0.8</rome-version>
+ <slf4j-version>1.4.0</slf4j-version>
+ <!--<slf4j-version>1.0-rc5</slf4j-version>-->
<stax-version>1.1.1-dev</stax-version>
<xalan-version>2.6.0</xalan-version>
<xmlbeans-version>2.0.0-beta1</xmlbeans-version>
@@ -796,8 +798,13 @@
<dependency>
<groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
<artifactId>slf4j-jcl</artifactId>
- <version>1.0-rc5</version>
+ <version>${slf4j-version}</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>