[jboss-dev-forums] [Design of JBoss ESB] - Re: ESB configuration

kurt.stam@jboss.com do-not-reply at jboss.com
Sun Nov 26 16:11:59 EST 2006


Hi Sacha,

I agree that an MBean has a natural fit with our needs. However, the current codebase does not require any support from the AS, and using MBeans will tie us to an AS/MK/MC again. A JMS provider is the only EE component we current need. So I'm not sure Mark willing to compromise any of the current 'leightness' of the solution. Also keep in mind that we will also suppport JBI in the future, which supports similar deployment features as you described for the mbeans, where code and configuration are deployed as one unit. 

On the plane ride home I had some time to think about our current deployment configuration file and I came to the following example xml:


  | <jbossesb>
  |     <hosts>
  | 	<host name="filebank" dnsName="localhost"/>
  | 	<host name="jmsbank"  dnsName="localhost"/>
  | 	<host name="loanbroker" dnsName="localhost"/>
  | 	<host name="jms-provider" dnsName="localhost"/>
  |     </hosts>
  |     <servers>
  |     	<server name="fileBankServer" host="fileBank" appserver="jboss-4.0.3SP1">
  |     	    <properties>
  |     		<property name="java.naming.provider.url" value="localhost:1099"/>
  |     		<property name="java.naming.factory.initial" value="org.jnp.interfaces.NamingContextFactory"/>
  |     		<property name="java.naming.factory.url.pkgs" value="org.jboss.naming:org.jnp.interfaces"/>
  |     	    </properties>
  |     	</server>
  |     	<server name="inhouse-jboss-4.0.4" host="jms-provider" appserver="jboss-4.0.4">
  | 	    <properties>
  | 		<property name="java.naming.provider.url" value="localhost:1099"/>
  | 		<property name="java.naming.factory.initial" value="org.jnp.interfaces.NamingContextFactory"/>
  | 		<property name="java.naming.factory.url.pkgs" value="org.jboss.naming:org.jnp.interfaces"/>
  | 	    </properties>
  |     	</server>
  |     	<server name="loanbroker-listener" host="loanbroker" appserver="jbossesb"/>
  |     </servers>
  |     <channels>
  |     	<channel name="bank-jms-channel" server="fileBankServer" resourceType="QUEUE" userName="" password=""/>
  |     	<channel name="bank-ftp-channel" server="inhouse-jboss-4.0.4" resourceType="FTP" userName="kurt" password="secret"/>
  |     </channels>
  |     <services>
  |     	<service name="filebank-gateway" category="gateway" server="loanbroker-listener" description="This listener picks up files deposited by the fileBank"
  |     		class="org.jboss.soa.esb.FileBankGateway">
  |     	    <listeners>
  |     	    	<listener description="A File-Based listener" channel="bank-ftp-channel"/>
  |     	    	<listener description="A JMS-Based listener" channel="bank-jms-channel"/>
  |     	    </listeners>
  |     	    <actions>
  |     	    	<action name="TestDefaultRouteAction" process="route" class="org.jboss.soa.esb.actions.CbrProxyAction" service-category="MessageRouting"
  | 			service-name="ContentBasedRoutingService" />
  | 	    </actions>
  |     	</service>
  |     </services>
  | </jbossesb>
  | 

Basically what I did is to 'normalize' the current listener and action configuration and to add that configuration to either a 'service', 'channel', 'server' or 'host'.

I kept 1 configuration file for ALL the esb configuration (yes there apart from the properties set through the PropertyManager). This allows use to:


  | 1. generate the boiled down configuration for each server. (similar to the one above, but specific for that server)
  | 2. draw a picture of the esb configuaration as a whole, along with the connections (channels) and the servers they run on (along with info about their physical host).
  | 3. I'm working on the xsd for the config, so we can do a level0 sanity check.
  | 4. We can check if that all services are registered in the registry, before continuing (rather then build in a Thread sleep). I know we could do this with MBean dependency too if we decide to go this way.
  | 5. Each server can check if the channels they are supposed to access are up and running: 'can connect to ftp server' or 'can connect to jms-server'
  | 6. We can send in test messages a la nagios (synthetic tests) on startup or on a regular basis. 
  | 
  | 
  | 
  | For RC I think we need 1 through 4 and the tasks should be performed by the esb bootstrapper, which also reads the properties file.
  | 
  | BTW I think when the ESB tries to connect to a channel we should keep on trying, log on failure, but keep on trying so that we can recover from nodes being brought up out of order (or temporary network failure).
  | 
  | I think this should greatly reduce the complexity of configuring the esb and we can provide detail error messages, of which we are in dire need.
  | 
  | I'd love to hear your feedback. I will follow up with my ideas on packaging on the other thread. We can go many ways on this!
  | 
  | --Kurt

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3988682#3988682

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3988682



More information about the jboss-dev-forums mailing list