[JBoss Messaging] - Re: Understanding JBoss Messaging and SPOF (Single Point of
by timfox
"seattle.golfer" wrote :
| I've been away from JBoss for about 4+ years (working in Weblogic), and am finally coming back home.
|
Glad to hear it! :)
anonymous wrote :
| I'm trying to get a better handle on JBoss Messaging's clustering capabilities. They way I read the documentation/installation guide, you still need to have a shared database instance. From the 1.4B1 docs, "For a clustered installation it is mandatory that a shared database is available to all nodes in the cluster."
|
| Which (to me) appears to be Single Point of Failure (SPOF). I realize the database itself could be clustered, but still..
|
Yes, JBoss Messaging 1.x uses a shared database for persistence. If it's not clustered that could provide a SPOF.
JBossMessaging 2.0, which is what we are currently at work on has major improvements in the area of persistence.
We will support:
1) Shared JDBC database - like in 1.x
2) Unshared JDBC database per node (already working in TRUNK)
3) Unshared file based journal per node
For HA we will also support replication between nodes for a "shared nothing" approach.
Also we'll support failover via a shared file sytem (e.g., GFS over a SAN) in the case one is available.
Lots of other great new things in JBM 2.0 including a brand new super fast NIO transport using Apache MINA. (Trustin Lee the author of MINA is now a JBoss employee), and many other features.
Also see JIRA for JBM 2.0 tasks and provisional timescales. We should have a GA released towards the end of the year.
There is also a little bit more info on the jboss labs JBM project page.
JBM 2.0 is the subject of my talk at JBoss World in a couple of weeks. Why don't you come along and find out more?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4125039#4125039
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4125039
18 years, 2 months
[JBoss Portal] - Re: Clear/reset render parameters or re-initialise all portl
by dewara
Right, for anybody interested I eventually solved my problem and I don't think for one minute that it's elegant but it does the job.
EssentiallyI created a custom CommandInterceptor (see code below). The interceptor clears the navigational state of all portlet windows in the portal if there there is an action request to the portlet window called "DNSCustomerContextSelectionPortletWindow". Fortunately in my scenario an action request targetting this portlet window will mean I need to clear the navigational state of all portlet windows in the portal.
The interceptor needs to be built to a jar file and the jar file placed in :
| /jboss-4.0.4.GA/server/default/deploy/jboss-portal.sar/lib/
|
The interceptor then needs to be added to the Command interceptor stack defined in
| /jboss-4.0.4.GA/server/default/deploy/jboss-portal.sar/META-INF/jboss-service.xml
|
|
This is done as follows:
| <mbean
| code="com.dns.jboss.portal.interceptor.DNSCustomerContextChangeInterceptor"
| name="portal:service=Interceptor,type=Command,name=DNSCustomerContextChangeCheck"
| xmbean-dd=""
| xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
| <xmbean/>
| </mbean>
|
| <mbean
| code="org.jboss.portal.server.impl.invocation.JBossInterceptorStack"
| name="portal:service=InterceptorStack,type=Command"
| xmbean-dd=""
| xmbean-code="org.jboss.portal.common.system.JBossServiceModelMBean">
| <xmbean/>
| <depends-list optional-attribute-name="InterceptorNames">
| <depends-list-element>portal:service=Interceptor,type=Command,name=PortalNode</depends-list-element>
| <depends-list-element>portal:service=Interceptor,type=Command,name=PolicyEnforcement</depends-list-element>
| <depends-list-element>portal:service=Interceptor,type=Command,name=PageNavigation</depends-list-element>
| <depends-list-element>portal:service=Interceptor,type=Command,name=EventBroadcaster</depends-list-element>
| <depends-list-element>portal:service=Interceptor,type=Command,name=DNSCustomerContextChangeCheck</depends-list-element>
| </depends-list>
| </mbean>
|
|
|
|
| package com.dns.jboss.portal.interceptor;
|
| import java.util.Collection;
| import java.util.Iterator;
|
| import org.apache.log4j.Logger;
| import org.jboss.portal.common.invocation.InvocationException;
| import org.jboss.portal.core.command.CommandInterceptor;
| import org.jboss.portal.core.command.ControllerCommand;
| import org.jboss.portal.core.command.InvokeWindowActionCommand;
| import org.jboss.portal.core.model.portal.Page;
| import org.jboss.portal.core.model.portal.Window;
| import org.jboss.portal.server.ServerInvocation;
|
|
| public class DNSCustomerContextChangeInterceptor extends CommandInterceptor
| {
| private static final Logger log = Logger.getLogger( DNSCustomerContextChangeInterceptor.class );
|
| public void invoke( ControllerCommand cmd ) throws Exception, InvocationException
| {
| if ( customerContextChange( cmd ) )
| clearPortalNavigationalState( (InvokeWindowActionCommand)cmd );
| cmd.invokeNext();
| }
|
| private boolean customerContextChange( ControllerCommand command )
| {
| if (command instanceof InvokeWindowActionCommand)
| {
| InvokeWindowActionCommand iwac = (InvokeWindowActionCommand)command;
| if ( iwac.getWindow().getName().equals( "DNSCustomerContextSelectionPortletWindow" ) )
| return true;
| }
| return false;
| }
|
| private void clearPortalNavigationalState( InvokeWindowActionCommand iwac )
| {
| Collection portalChildren = iwac.getPortal().getChildren();
|
| for( Iterator i = portalChildren.iterator(); i.hasNext(); )
| {
| Object portalChild = i.next();
| if ( portalChild instanceof Page )
| {
| Page page = (Page)portalChild;
| Collection pageChildren = ( (Page) portalChild ).getChildren();
| for ( Iterator j = pageChildren.iterator(); j.hasNext(); )
| {
| Object pageChild = j.next();
| if ( pageChild instanceof Window )
| {
| Window window = (Window)pageChild;
| if ( !window.equals( iwac.getWindow() ) )
| {
| ServerInvocation sinv = iwac.getContext().getExecutionContext().getServerInvocation();
| log.debug( "CLEARING NAV STATE OF WINDOW: " + window.getName() );
| sinv.getRequest().getNavigationContext().setNavigationalState(window.getInstanceRef(), null );
|
| //WindowNavigationalState windowNavState = (WindowNavigationalState)sinv.getRequest().getNavigationContext().getNavigationalState( window.getId() + "_window");
| //windowNavState = new WindowNavigationalState();
| //sinv.getRequest().getNavigationContext().setNavigationalState(window.getId() + "_window", windowNavState);
| }
| }
| }
| }
| }
| }
|
| }
|
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4125037#4125037
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4125037
18 years, 2 months