[ 
https://issues.apache.org/activemq/browse/AMQ-1241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_39100
 ] 

Mario Siegenthaler commented on AMQ-1241:
-----------------------------------------

Since I don't want to be the mean guy I actually did something about it :)

The attached patch allows 3 modes of operation, chosen via a VM-Flag 
(webconsole.type)
 * jndi (default): Gets a connection factory from "jms/connectionFactory" and 
the jmx-connection-string (f.e. 
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi) from "jmx/url"
 * properties: Uses the system properties webconsole.jms.url and 
webconsole.jmx.url for the urls of the JMS resp. JMX connectors of the broker
 * invm: Uses BrokerRegistry.findFirst() for the broker (fixes the current bug 
with custom named brokers)

All modes support the following (well, the invm-mode doesn't really^^):
 * jmx-Failover: Syntax: <url1>, <url2>, <url3>, ... (f.e. 
"service:jmx:rmi:///jndi/rmi://serverA:1099/jmxrmi, 
service:jmx:rmi:///jndi/rmi://serverB:1099/jmxrmi") that chooses the first 
available broker
 * jms-Failover: Standard behaviour of the connectionfactory, no code changed


Other things changed:
 * Fixed the handling of the 'query'-object in the request-context of spring 
(was bugged before, they wouldn't get cleaned up at the end of the request, 
leading to leftover open consumers)
 * removed any direct usage of vm://localhost since that often leaded to 
not-wanted broker startups
 * explicit initialization of the WebClient class (so it'd use the right 
ConnectionFactory)
 * Changed the WebClient to use the JMS-classes instead of the ActiveMQ 
specific ones (removes problems with application-server-provided 
session/connection pooling)


Things that don't work yet or are missing:
 * QueueBrowserServlet: This class does own connection handling and creating. I 
couldn't find out why it'd do that, but I didn't dare doing a that deep change. 
So atm the RSS/Atom feeds are broken in the web-console
 * running the war inside the broker (former standard-configuration) doesn't 
work due to classloader issues (specific: BrokerRegistry is twice in the 
classpath). I'd suggest to reconfigure the jetty classloading or to remove the 
active-mq jars from the 'in-broker-war'.
 * the patch misses the change to the startup-scripts to set the 
system-property "webconsole-type" to invm
 * documentation (apart from this here)


I'd be happy to discuss this change with you guys and get some input about the 
changes I made. I don't look at them at finished now, but as a step in the 
direction.
Thanks and greetings Mario

> Make WebConsole run as a standalone WAR
> ---------------------------------------
>
>                 Key: AMQ-1241
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1241
>             Project: ActiveMQ
>          Issue Type: Improvement
>    Affects Versions: 4.2.0
>            Reporter: Mario Siegenthaler
>
> The WebConsole is a really nice thing, however you should be able to run it 
> as a standalone war connecting to a remote broker (another vm or another 
> server). This improves the following (IMO):
>  * stability of the broker itself as the web-console can f.e. eat up all 
> available memory (try looking at a large queue) or do other bad things
>  * deployment (many companys have a standard deployment process for war-files 
> as well as preconfigured application server to put them into)
>  * backward-compatibility (webconsole per se does not depend on a 4.2 broker, 
> it runs just fine with 4.1 and 4.0)
>  * support for master-slave configurations with auto-failover (f.e. with a 
> failover jmx syntax as well as the existing failover syntax for the jms 
> connection)
> Related to this bug/improvement is the current mean behaviour of the 
> web-console with non-default named brokers (sometimes using the web-console 
> will end up in a second broker beeing started).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to