[jboss-svn-commits] JBL Code SVN: r35981 - in labs/jbossrules/trunk: drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace and 14 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 15 15:27:58 EST 2010


Author: mark.proctor at jboss.com
Date: 2010-11-15 15:27:56 -0500 (Mon, 15 Nov 2010)
New Revision: 35981

Added:
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsGridTest.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/grid.xml
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConnectorFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnectorFactoryService.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupImpl.java
Removed:
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java
Modified:
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridBeanFactory.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridNodeBeanFactory.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridDefinitionParser.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridNodeDefinitionParser.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java
   labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.2.0.xsd
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/conf/impl/GridNodeSocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/GridImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/Conversation.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConversationManager.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/CommandImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/MessageImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/ConversationUtil.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/RemoteGridNodeConnection.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnector.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/RegisterSchedulerConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/grid/NodeTests.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/MinaTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java
   labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/WhitePagesTest.java
Log:
JBRULES-2746 Drools Grid Impl2
-Spring XML now supports Grid configuration

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridBeanFactory.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridBeanFactory.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -16,16 +16,31 @@
 
 package org.drools.container.spring.beans;
 
-
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
+import org.drools.SystemEventListenerFactory;
+import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.JpaConfiguration;
 import org.drools.grid.Grid;
 import org.drools.grid.GridConnection;
+import org.drools.grid.SocketService;
+import org.drools.grid.conf.GridPeerServiceConfiguration;
+import org.drools.grid.conf.impl.GridPeerConfiguration;
 import org.drools.grid.impl.GridImpl;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.AcceptorFactoryService;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
 import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.CoreServicesLookupConfiguration;
 import org.drools.grid.service.directory.impl.WhitePagesImpl;
+import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
+import org.mvel2.optimizers.impl.refl.nodes.ArrayLength;
 import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.util.StringUtils;
 
 /**
  * 
@@ -37,15 +52,25 @@
     FactoryBean,
     InitializingBean {
 
-    private String id;
-    private GridImpl grid;
-//    private String type;
-//    private GenericConnection connection;
-//
+    private String           id;
+    private GridImpl         grid;
+
+    private Map              coreServices;
+
+    private WhitePages       whitePages;
+
+    private JpaConfiguration jpaConfiguration;
+    
+    private SocketServiceConfiguration   socketServiceConfiguration ;
+
+    //    private String type;
+    //    private GenericConnection connection;
+    //
     public Object getObject() throws Exception {
         return this.grid;
     }
-//
+
+    //
     public Class<Grid> getObjectType() {
         return Grid.class;
     }
@@ -55,12 +80,57 @@
     }
 
     public void afterPropertiesSet() throws Exception {
-        this.grid = new GridImpl( new HashMap<String, Object>() );
-        ((GridImpl)this.grid).addService( WhitePages.class, new WhitePagesImpl() );
+        this.grid = new GridImpl( new HashMap() );
+        MultiplexSocketServiceCongifuration socketConf = null;
         
-//        connection = new GridConnection();
-//        connection.addExecutionNode(new LocalNodeConnector());
-//        connection.addDirectoryNode(new LocalDirectoryConnector());
+        if ( this.coreServices == null ) {
+            this.coreServices = new HashMap();
+        }
+
+        GridPeerConfiguration conf = new GridPeerConfiguration();
+        GridPeerServiceConfiguration coreSeviceLookupConf = new CoreServicesLookupConfiguration( this.coreServices );
+        conf.addConfiguration( coreSeviceLookupConf );     
+        
+        //Configuring the WhitePages 
+        if ( this.whitePages != null ) {
+            WhitePagesLocalConfiguration wplConf = new WhitePagesLocalConfiguration();
+            wplConf.setWhitePages( this.whitePages );
+            conf.addConfiguration( wplConf );
+        }
+      
+        conf.configure( this.grid  );
+        
+        // We do this after the main grid configuration, to make sure all services are instantiated
+        if ( this.socketServiceConfiguration != null ) {            
+            AcceptorFactoryService acc = null;
+            if ( "mina".equals( this.socketServiceConfiguration.getAcceptor() ) ) {
+                acc = new MinaAcceptorFactoryService();        
+            }
+
+            if ( acc == null ) {
+                // Mina is the default for the moment
+                acc = new MinaAcceptorFactoryService();
+            }
+            
+            socketConf = new MultiplexSocketServiceCongifuration( new MultiplexSocketServerImpl( this.socketServiceConfiguration.getIp(),
+                                                                                                 acc,
+                                                                                                 SystemEventListenerFactory.getSystemEventListener(),
+                                                                                                 this.grid) );            
+            
+            for (String[] services : this.socketServiceConfiguration.getServices() ) {
+                Object service = ((GridImpl)this.grid).get( services[0].trim() );
+                if ( service == null ) {
+                    throw new RuntimeException( "Unable to configure socket. Service '" + services[0] + "' could not be found" );
+                }
+                if ( "auto".equals( services[1].trim() ) ) {
+                    
+                } else {
+                    socketConf.addService( services[0].trim(), service, Integer.parseInt( services[1].trim() ) );
+                }
+            }
+            
+            socketConf.configureService( this.grid );
+        }           
     }
 
     public void setId(String id) {
@@ -71,12 +141,70 @@
         return id;
     }
 
-//    public void setType(String type) {
-//        this.type = type;
-//    }
-//
-//    public String getType() {
-//        return type;
-//    }
+    public WhitePages getWhitePages() {
+        return whitePages;
+    }
 
+    public void setWhitePages(WhitePages whitePages) {
+        this.whitePages = whitePages;
+    }
+
+    public Map getCoreServices() {
+        return coreServices;
+    }
+
+    public void setCoreServices(Map coreServices) {
+        this.coreServices = coreServices;
+    }
+
+    public JpaConfiguration getJpaConfiguration() {
+        return jpaConfiguration;
+    }
+
+    public void setJpaConfiguration(JpaConfiguration jpaConfiguration) {
+        this.jpaConfiguration = jpaConfiguration;
+    }
+
+
+    public SocketServiceConfiguration getSocketServiceConfiguration() {
+        return socketServiceConfiguration;
+    }
+
+    public void setSocketServiceConfiguration(SocketServiceConfiguration socketServiceConfiguration) {
+        this.socketServiceConfiguration = socketServiceConfiguration;
+    }
+
+    public static class SocketServiceConfiguration {
+        private String ip;
+        private String acceptor;
+        private List<String[]> services;
+        
+        public String getIp() {
+            return ip;
+        }
+        public void setIp(String ip) {
+            this.ip = ip;
+        }
+        public String getAcceptor() {
+            return acceptor;
+        }
+        public void setAcceptor(String acceptor) {
+            this.acceptor = acceptor;
+        }        
+        
+        public List<String[]> getServices() {
+            if ( this.services == null ) {
+                this.services = new ArrayList<String[]>();
+            }
+            return services;
+        }        
+        
+        public void setServices(List<String[]> services) {
+            this.services = services;
+        }
+        
+        
+  
+    }
+
 }

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridNodeBeanFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridNodeBeanFactory.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/beans/GridNodeBeanFactory.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -21,11 +21,13 @@
 import org.drools.grid.Grid;
 import org.drools.grid.GridConnection;
 import org.drools.grid.GridNode;
+import org.drools.grid.SocketService;
 import org.drools.grid.impl.GridImpl;
 import org.drools.grid.service.directory.WhitePages;
 import org.drools.grid.service.directory.impl.WhitePagesImpl;
 import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.InitializingBean;
+import org.springframework.util.StringUtils;
 
 /**
  * 
@@ -40,6 +42,8 @@
     private String   id;
     private Grid     grid;
     private GridNode node;
+    
+    private String   port;
 
     //
     public Object getObject() throws Exception {
@@ -63,6 +67,10 @@
                                                new WhitePagesImpl() );
         }
         this.node = this.grid.createGridNode( id );
+        
+        if ( StringUtils.hasText( this.port ) ) {
+            this.grid.get( SocketService.class ).addService( id, Integer.parseInt( port ), this.node );
+        }
         //        connection.addExecutionNode(new LocalNodeConnector());
         //        connection.addDirectoryNode(new LocalDirectoryConnector());
         //        node = connection.getExecutionNode();
@@ -86,4 +94,14 @@
         this.grid = grid;
     }
 
+    public String getPort() {
+        return port;
+    }
+
+    public void setPort(String port) {
+        this.port = port;
+    }
+    
+    
+
 }

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridDefinitionParser.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridDefinitionParser.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -16,12 +16,32 @@
 
 package org.drools.container.spring.namespace;
 
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.SystemEventListenerFactory;
+import org.drools.command.runtime.SetGlobalCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
 import org.drools.container.spring.beans.GridBeanFactory;
+import org.drools.container.spring.beans.GridBeanFactory.SocketServiceConfiguration;
+import org.drools.container.spring.beans.StatefulKnowledgeSessionBeanFactory.JpaConfiguration;
+import org.drools.grid.impl.MultiplexSocketServerImpl;
+import org.drools.grid.io.AcceptorFactoryService;
+import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.service.directory.impl.JpaWhitePages;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.util.StringUtils;
+import org.springframework.util.xml.DomUtils;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 /**
  * 
@@ -29,6 +49,8 @@
  *
  */
 public class GridDefinitionParser extends AbstractBeanDefinitionParser {
+    
+    private static final String EMF_ATTRIBUTE            = "entity-manager-factory";
 
     protected AbstractBeanDefinition parseInternal(Element element,
                                                    ParserContext parserContext) {
@@ -39,6 +61,91 @@
         factory.addPropertyValue( "id",
                                   id );  
         
+        for (int i = 0, length = element.getChildNodes().getLength(); i < length; i++) {
+            Node n = element.getChildNodes().item( i );
+            if ( n instanceof Element ) {
+                Element e = ( Element ) n;
+                
+                if ( "core-services".equals( e.getLocalName() ) ) {
+                    String ref = e.getAttribute( "ref" );
+                    Element nestedElm = getFirstElement( e.getChildNodes() );                   
+
+                    if ( StringUtils.hasText( ref ) ) {
+                        factory.addPropertyReference( "coreServices", ref );
+                    } else if ( nestedElm != null  ) {
+                        factory.addPropertyValue( "coreServices",  parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );
+                    } else {
+                        throw new IllegalArgumentException( "set-global must either specify a 'ref' attribute or have a nested bean" );
+                    }                     
+                } else if ( "whitepages".equals( e.getLocalName() ) ) {                    
+                    Element persistenceElm = DomUtils.getChildElementByTagName(e, "jpa-persistence");
+                    if ( persistenceElm != null) {      
+                        BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition( JpaWhitePages.class );
+                        
+                        Element emf = DomUtils.getChildElementByTagName(persistenceElm, EMF_ATTRIBUTE);
+                        String ref = emf.getAttribute( "ref" );
+                        
+                        beanBuilder.addConstructorArgReference( ref );
+                        factory.addPropertyValue( "whitePages", beanBuilder.getBeanDefinition() );
+                    } else {
+                        String ref = e.getAttribute( "ref" );
+                        Element nestedElm = getFirstElement( e.getChildNodes() );                   
+
+                        if ( StringUtils.hasText( ref ) ) {
+                            factory.addPropertyReference( "whitePages", ref );
+                        } else if ( nestedElm != null  ) {
+                            factory.addPropertyValue( "whitePages",  parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );
+                        }                         
+                    }
+                } else if ( "socket-service".equals( e.getLocalName() ) ) {
+                    String acceptor = e.getAttribute( "acceptor" );
+                    String ip = e.getAttribute( "ip" );
+                    
+                    AcceptorFactoryService acc = null;
+                    if ( StringUtils.hasText( acceptor ) ) {
+                        if ( "mina".equals( acceptor )) {
+                            acc = new MinaAcceptorFactoryService();
+                        }
+                    } 
+
+                    if ( acc == null ) {
+                        acc = new MinaAcceptorFactoryService();
+                    }                    
+                    
+                    if ( !StringUtils.hasText( ip ) ) {
+                        try {
+                            ip = InetAddress.getLocalHost().getHostAddress();
+                        } catch ( UnknownHostException e1 ) {
+                            throw new RuntimeException( "socket-service did not specify an ip address and one could not be determined", e1 );
+                        }
+                    }
+                    
+                    if ( !StringUtils.hasText( ip ) ) {
+                        throw new RuntimeException( "socket-service did not specify an ip address and one could not be determined" );
+                    }
+                    
+                    BeanDefinitionBuilder beanBuilder = BeanDefinitionBuilder.genericBeanDefinition( SocketServiceConfiguration.class );
+                    beanBuilder.addPropertyValue( "ip", ip );
+                    beanBuilder.addPropertyValue( "acceptor", acceptor );
+                    
+                    //e.getChildNodes()
+                    List<String[]> services = new ArrayList<String[]>();
+                    for (int j = 0, serviceLength = e.getChildNodes().getLength(); j < serviceLength; j++) {
+                        Node e2 = e.getChildNodes().item( j );
+                        if ( e2 instanceof Element && "service".equals(((Element)e2).getLocalName())) {
+                            Element se = ( Element ) e2;
+                            String name = se.getAttribute( "name" );
+                            String port = se.getAttribute( "port" );    
+                            services.add( new String[] { name, port } );
+                        }
+                    }
+                    beanBuilder.addPropertyValue( "services", services );
+                    factory.addPropertyValue( "socketServiceConfiguration", beanBuilder.getBeanDefinition() );
+                }
+                                   
+            }
+        }            
+        
         return factory.getBeanDefinition();
     }
 
@@ -49,5 +156,14 @@
             throw new IllegalArgumentException( "<" + element + "> requires a '" + attributeName + "' attribute" );
         }
     }
+    
+    private Element getFirstElement(NodeList list) {                    
+        for (int j = 0, lengthj = list.getLength(); j < lengthj; j++) {
+            if ( list.item( j ) instanceof Element ) {
+                return ( Element ) list.item( j );
+            }
+        }   
+        return null;
+    }    
 
 }

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridNodeDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridNodeDefinitionParser.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/GridNodeDefinitionParser.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -23,6 +23,7 @@
 import org.springframework.beans.factory.xml.ParserContext;
 import org.springframework.util.StringUtils;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 /**
  * 
@@ -32,6 +33,7 @@
 public class GridNodeDefinitionParser extends AbstractBeanDefinitionParser {
 
     private static final String GRID_ATTRIBUTE = "grid";
+    private static final String PORT_ATTRIBUTE = "port";
 
     @Override
     protected AbstractBeanDefinition parseInternal(Element element,
@@ -48,7 +50,20 @@
             factory.addPropertyReference( GRID_ATTRIBUTE,
                                           connectionRef );
         }
-
+        
+        for (int i = 0, length = element.getChildNodes().getLength(); i < length; i++) {
+            Node n = element.getChildNodes().item( i );
+            if ( n instanceof Element ) {
+                Element e = ( Element ) n;
+                
+                if ( "socket-service".equals( e.getLocalName() ) ) {
+                    String port = e.getAttribute( PORT_ATTRIBUTE );
+                    if ( StringUtils.hasText( port ) ) {
+                        factory.addPropertyValue( "port", port );
+                    }
+                }
+            }
+        }
         return factory.getBeanDefinition();
     }
 }

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/java/org/drools/container/spring/namespace/KnowledgeSessionDefinitionParser.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -199,7 +199,7 @@
                         if ( StringUtils.hasText( ref ) ) {
                             beanBuilder.addConstructorArgReference( ref );
                         } else if ( nestedElm != null  ) {
-                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parseBeanDefinitionElement( nestedElm ) );                         
+                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );                         
                         } else {
                             throw new IllegalArgumentException( "insert-object must either specify a 'ref' attribute or have a nested bean" );
                         }
@@ -211,7 +211,7 @@
                         if ( StringUtils.hasText( ref ) ) {
                             beanBuilder.addConstructorArgReference( ref );
                         } else if ( nestedElm != null  ) {
-                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parseBeanDefinitionElement( nestedElm ) );                         
+                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );                         
                         } else {
                             throw new IllegalArgumentException( "set-global must either specify a 'ref' attribute or have a nested bean" );
                         }
@@ -246,7 +246,7 @@
                                 if ( StringUtils.hasText( ref ) ) {
                                     map.put( identifier,  new RuntimeBeanReference( ref) );
                                 } else if ( nestedElm != null  ) {
-                                    map.put( identifier,  parserContext.getDelegate().parseBeanDefinitionElement( nestedElm ) );
+                                    map.put( identifier,  parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );
                                 } else {
                                     throw new IllegalArgumentException( "start-process paramaters must either specify a 'ref' attribute or have a nested bean" );
                                 }                                    
@@ -267,7 +267,7 @@
                         if ( StringUtils.hasText( ref ) ) {
                             beanBuilder.addConstructorArgReference( ref );
                         } else if ( nestedElm != null  ) {
-                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parseBeanDefinitionElement( nestedElm ) );                         
+                            beanBuilder.addConstructorArgValue( parserContext.getDelegate().parsePropertySubElement(nestedElm, null, null) );                         
                         } else {
                             throw new IllegalArgumentException( "signal-event must either specify a 'ref' attribute or have a nested bean" );
                         }             

Modified: labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.2.0.xsd
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.2.0.xsd	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.2.0.xsd	2010-11-15 20:27:56 UTC (rev 35981)
@@ -6,13 +6,57 @@
 	attributeFormDefault="unqualified">
 	
 	<xsd:element name="grid">
-		<xsd:complexType>
-			<xsd:attribute name="id" use="required" type="xsd:ID"/>
-		</xsd:complexType>
+		<xsd:complexType>		
+			<xsd:all minOccurs="0">
+				<xsd:element name="core-services" minOccurs="0" maxOccurs="1">
+					<xsd:complexType>
+		              <xsd:sequence>
+		                 <xsd:any minOccurs="0" maxOccurs="1" />
+		              </xsd:sequence>	           
+		              <xsd:attribute name="ref" use="optional" type="xsd:string"/>
+					</xsd:complexType>				
+				</xsd:element>	
+				
+				<xsd:element name="whitepages" minOccurs="0" maxOccurs="1">
+					<xsd:complexType>
+		              <xsd:choice>
+		                 <xsd:element ref="persistence" minOccurs="0" maxOccurs="1"/>
+		                 <xsd:any  minOccurs="0" maxOccurs="1" />
+		              </xsd:choice>
+		              <xsd:attribute name="ref" use="optional" type="xsd:string"/>	 		                        
+					</xsd:complexType>				
+				</xsd:element>		
+				
+			    <xsd:element name="socket-service" minOccurs="0" maxOccurs="1">
+					<xsd:complexType>
+		              <xsd:sequence>
+		                 <xsd:element name="service" minOccurs="0" maxOccurs="unbounded">
+		                 	<xsd:complexType>
+		                 	   <xsd:attribute name="name" use="required" type="xsd:string"/>	
+		                 	   <xsd:attribute name="port" use="required" type="xsd:string"/>
+		                    </xsd:complexType>
+		                 </xsd:element>
+		              </xsd:sequence>					
+					  <xsd:attribute name="acceptor" use="optional" type="xsd:string"/>
+ 				      <xsd:attribute name="ip" use="required" type="xsd:string"/>		              		              	           
+					</xsd:complexType>				
+				</xsd:element>	
+																					
+			</xsd:all>	
+			<xsd:attribute name="id" use="required" type="xsd:ID"/>			
+		</xsd:complexType>					
 	</xsd:element>
 
 	<xsd:element name="grid-node">
 		<xsd:complexType>
+	   	    <xsd:all>	
+			    <xsd:element name="socket-service" minOccurs="0" maxOccurs="1">
+					<xsd:complexType>
+ 				         <xsd:attribute name="port" use="required" type="xsd:string"/>		              		              	           
+					</xsd:complexType>				
+				</xsd:element>	
+																					
+			</xsd:all>			
 			<xsd:attribute name="id" use="required" type="xsd:ID"/>
 			<xsd:attribute name="grid" use="optional" type="xsd:string"/>
 		</xsd:complexType>
@@ -337,9 +381,9 @@
 	           <xsd:extension base="persistenceType">
 	              <xsd:all>
 	                 <xsd:element name="variable-persisters" type="variablePersistersType" minOccurs="0" maxOccurs="1"/>
-	                 <xsd:element name="transaction-manager" minOccurs="1" maxOccurs="1">
+	                 <xsd:element name="transaction-manager" minOccurs="0" maxOccurs="1">
 				        <xsd:complexType>
-  					       <xsd:attribute name="ref" use="required" type="xsd:string"/>
+  					       <xsd:attribute name="ref" use="optional" type="xsd:string"/>
 				        </xsd:complexType>
 		             </xsd:element>
 	                 <xsd:element name="entity-manager-factory" minOccurs="1" maxOccurs="1">

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsGridTest.java
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsGridTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/java/org/drools/container/spring/SpringDroolsGridTest.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -0,0 +1,167 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * 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.drools.container.spring;
+
+import static org.junit.Assert.fail;
+
+import java.io.Serializable;
+import java.util.HashMap;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.container.spring.beans.persistence.JPASingleSessionCommandServiceFactoryTest;
+import org.drools.grid.ConnectionFactoryService;
+import org.drools.grid.Grid;
+import org.drools.grid.GridConnection;
+import org.drools.grid.GridNode;
+import org.drools.grid.GridServiceDescription;
+import org.drools.grid.SocketService;
+import org.drools.grid.NodeTests.MyObject;
+import org.drools.grid.impl.GridImpl;
+import org.drools.grid.service.directory.WhitePages;
+import org.drools.grid.service.directory.impl.JpaWhitePages;
+import org.drools.grid.service.directory.impl.WhitePagesClient;
+import org.drools.grid.service.directory.impl.WhitePagesImpl;
+import org.drools.io.impl.ByteArrayResource;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.FactHandle;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SpringDroolsGridTest extends TestCase {
+
+    public void test1() {
+        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.grid" );
+        WhitePages wp = new JpaWhitePages( emf );
+
+        wp.create( "s1" );
+        wp.create( "s2" );
+        wp.create( "s3" );        
+    }
+
+
+    public void testGrid() throws Exception {
+        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "org/drools/container/spring/grid.xml" );           
+
+        Grid grid1 = (Grid) context.getBean( "grid1" );
+        assertTrue( grid1.get( WhitePages.class ) instanceof JpaWhitePages );
+
+        Grid grid2 = (Grid) context.getBean( "grid2" );
+        assertTrue( grid2.get( WhitePages.class ) instanceof WhitePagesClient );
+        
+        Grid grid3 = (Grid) context.getBean( "grid3" );
+        assertTrue( grid3.get( WhitePages.class ) instanceof WhitePagesImpl );
+
+        GridServiceDescription<GridNode> n1Gsd = grid2.get( WhitePages.class ).lookup( "node1" );
+        GridConnection<GridNode> conn = grid2.get( ConnectionFactoryService.class ).createConnection( n1Gsd );
+        GridNode remoteN1 = conn.connect();
+
+        KnowledgeBuilder kbuilder = remoteN1.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder();
+
+        Assert.assertNotNull( kbuilder );
+
+        String rule = "package test\n"
+                      + "import org.drools.container.spring.SpringDroolsGridTest.MyObject;\n"
+                      + "global MyObject myGlobalObj;\n"
+                      + "rule \"test\""
+                      + "  when"
+                      + "       $o: MyObject()"
+                      + "  then"
+                      + "      System.out.println(\"My Global Object -> \"+myGlobalObj.getName());"
+                      + "      System.out.println(\"Rule Fired! ->\"+$o.getName());"
+                      + " end";
+
+        kbuilder.add( new ByteArrayResource( rule.getBytes() ),
+                          ResourceType.DRL );
+
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if ( errors != null && errors.size() > 0 ) {
+            for ( KnowledgeBuilderError error : errors ) {
+                System.out.println( "Error: " + error.getMessage() );
+
+            }
+            fail( "KnowledgeBase did not build" );
+        }
+
+        KnowledgeBase kbase = remoteN1.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase();
+
+        Assert.assertNotNull( kbase );
+
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+        Assert.assertNotNull( session );
+        session.setGlobal( "myGlobalObj",
+                           new MyObject( "myGlobalObj" ) );
+
+        FactHandle handle = session.insert( new MyObject( "myObj1" ) );
+        Assert.assertNotNull( handle );
+
+        int fired = session.fireAllRules();
+        Assert.assertEquals( 1,
+                                 fired );
+
+        session.retract( handle );
+
+        handle = session.insert( new MyObject( "myObj2" ) );
+
+        session.update( handle,
+                        new MyObject( "myObj3" ) );
+
+        fired = session.fireAllRules();
+
+        remoteN1.dispose();
+        grid1.get( SocketService.class ).close();
+    }
+
+    public static class MyObject
+        implements
+        Serializable {
+        private String name;
+
+        public MyObject(String name) {
+            this.name = name;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+    }
+
+}

Added: labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/grid.xml
===================================================================
--- labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/grid.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-container/drools-spring/src/test/resources/org/drools/container/spring/grid.xml	2010-11-15 20:27:56 UTC (rev 35981)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:drools="http://drools.org/schema/drools-spring"       
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                           http://drools.org/schema/drools-spring org/drools/container/spring/drools-spring-1.2.0.xsd
+                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+	
+	<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+		<!-- org.h2.jdbcx.JdbcDataSource -->
+		<property name="driverClassName" value="org.h2.Driver" />
+		<property name="url" value="jdbc:h2:mem:mydb" />
+		<property name="username" value="sa" />
+		<property name="password" value="" />
+	</bean>	
+	
+	<bean id="myEmf" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
+	     <property name="persistenceUnitName" value="org.drools.grid"/>
+	</bean>
+	
+	<!--bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+		<property name="dataSource" ref="ds" />	
+		<property name="persistenceUnitName" value="org.drools.grid" />
+	    <property name="hibernateProperties">
+	      <value>
+	        hibernate.dialect=org.hibernate.dialect.MySQLDialect
+	        hibernate.show_sql=true
+	        
+      hibernate.dialect=org.hibernate.dialect.H2Dialect
+      hibernate.connection.driver_class="org.h2.Driver
+      hibernate.connection.url=jdbc:h2:mem:mydb      	        
+      hibernate.connection.username=sa
+      hibernate.connection.password=sasa
+      hibernate.connection.autocommit=false
+      hibernate.max_fetch_depth=3
+      hibernate.hbm2ddl.auto=create
+      hibernate.show_sql=true        
+	      </value>
+	    </property>		
+	</bean-->
+
+    <bean id="shared-map" class="java.util.HashMap" />
+    
+    <bean id="localWhitePages" class="org.drools.grid.service.directory.impl.WhitePagesImpl" />
+
+    <drools:grid id="grid1">
+	   <drools:core-services ref="shared-map" />	   
+	   
+	   <drools:whitepages>
+			<drools:jpa-persistence>
+	            <drools:entity-manager-factory ref="myEmf" />   	    
+		    </drools:jpa-persistence>	   
+	   </drools:whitepages>	   
+	   
+	   <drools:socket-service acceptor="mina" ip="127.0.0.1">
+	      <drools:service name="org.drools.grid.service.directory.WhitePages" port="8000" />
+	   </drools:socket-service>    
+    </drools:grid>
+    
+
+	<drools:grid id="grid2">
+       <drools:core-services ref="shared-map" />
+	</drools:grid>
+	
+	
+    <drools:grid id="grid3">	   
+	   <drools:whitepages ref="localWhitePages" />	    
+    </drools:grid>	
+	
+	
+	<drools:grid-node id="node1" grid="grid1">
+	   <drools:socket-service port="8000" />
+	</drools:grid-node>
+	
+	<drools:grid-node id="node2" />
+	
+
+</beans>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/conf/impl/GridNodeSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/conf/impl/GridNodeSocketConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/conf/impl/GridNodeSocketConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -29,7 +29,7 @@
         GridNode gnode = grid.get( GridNode.class );
 
         if ( port != -1 ) {
-            CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+            CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
             GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( GridNode.class );
             if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/ConnectionFactoryServiceImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -33,7 +33,8 @@
         }
 
         if ( conn == null ) {
-            conn = new RemoteGridNodeConnection( gsd );
+            conn = new RemoteGridNodeConnection( this.grid, 
+                                                 gsd );
         }
 
         return conn;

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/GridImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/GridImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/impl/GridImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -10,6 +10,8 @@
 
 import javax.net.SocketFactory;
 
+import org.drools.SystemEventListener;
+import org.drools.SystemEventListenerFactory;
 import org.drools.grid.ConnectionFactoryService;
 import org.drools.grid.Grid;
 import org.drools.grid.GridNode;
@@ -17,8 +19,14 @@
 import org.drools.grid.GridServiceDescription;
 import org.drools.grid.SocketService;
 import org.drools.grid.conf.GridPeerServiceConfiguration;
+import org.drools.grid.io.AcceptorFactoryService;
+import org.drools.grid.io.ConnectorFactoryService;
+import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.ConversationManagerImpl;
 import org.drools.grid.local.LocalGridNodeConnection;
 import org.drools.grid.remote.RemoteGridNodeConnection;
+import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
+import org.drools.grid.remote.mina.MinaConnectorFactoryService;
 import org.drools.grid.service.directory.Address;
 import org.drools.grid.service.directory.WhitePages;
 import org.drools.grid.service.directory.impl.GridServiceDescriptionImpl;
@@ -51,13 +59,20 @@
     }
     
     private void init() {
+        // TODO hardcoding these for now, should probably be configured
+        SystemEventListener listener = SystemEventListenerFactory.getSystemEventListener();
+        this.services.put( SystemEventListener.class.getName(), listener );
+        this.services.put( AcceptorFactoryService.class.getName(), new MinaAcceptorFactoryService() );
+        this.services.put( ConnectorFactoryService.class.getName(), new MinaConnectorFactoryService() );
+        this.services.put( ConversationManager.class.getName(), new ConversationManagerImpl( this, listener ) );
+        
         ConnectionFactoryService conn = new ConnectionFactoryServiceImpl(this);
-        this.services.put( ConnectionFactoryService.class.getName(), conn );
+        this.services.put( ConnectionFactoryService.class.getName(), conn );               
         
-        this.serviceConfigurators.put( WhitePages.class.getName(), new WhitePagesRemoteConfiguration( null ) );
+        this.serviceConfigurators.put( WhitePages.class.getName(), new WhitePagesRemoteConfiguration( ) );
     }
 
-    public Object getX(String str) {
+    public Object get(String str) {
         return this.services.get( str );
     }
     
@@ -67,8 +82,10 @@
         if ( service == null ) {
             // If the service does not exist, it'll lazily create it
             GridPeerServiceConfiguration configurator = this.serviceConfigurators.get( serviceClass.getName() );
-            configurator.configureService( this );
-            service = (T) this.services.get( serviceClass.getName() );
+            if ( configurator != null ) {
+                configurator.configureService( this );
+                service = (T) this.services.get( serviceClass.getName() );
+            }
         }
         return service;
     }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/internal/responsehandlers/BlockingMessageResponseHandler.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -11,7 +11,7 @@
 public class BlockingMessageResponseHandler extends AbstractBlockingResponseHandler
     implements
     MessageReceiverHandler {
-    private static final int WAIT_TIME = 60000;
+    private static final int WAIT_TIME = 600000;
 
     private volatile Message message;
 

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConnectorFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConnectorFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConnectorFactoryService.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -0,0 +1,5 @@
+package org.drools.grid.io;
+
+public interface ConnectorFactoryService {
+    Connector newConnector();
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/Conversation.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/Conversation.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/Conversation.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -9,5 +9,7 @@
 
     void sendMessage(Object body,
                      MessageReceiverHandler handler);
+    
+    void endConversation();
 
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConversationManager.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConversationManager.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/ConversationManager.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -6,9 +6,7 @@
 import java.net.InetSocketAddress;
 
 public interface ConversationManager {
-    Conversation startConversation(InetSocketAddress address,
+    Conversation startConversation(String senderId,
+                                   InetSocketAddress address,
                                    String recipientId);
-
-    void endConversation();
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/CommandImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/CommandImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/CommandImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -9,6 +9,10 @@
     private String       name;
     private List<Object> arguments;
 
+    public CommandImpl() {
+        
+    }
+    
     public CommandImpl(String name,
                        List<Object> arguments) {
         super();

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -5,6 +5,7 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
+import org.drools.grid.io.Connector;
 import org.drools.grid.io.Conversation;
 import org.drools.grid.io.ConversationManager;
 import org.drools.grid.io.IoWriter;
@@ -15,6 +16,7 @@
     implements
     Conversation {
 
+    private Connector                       conn;
     private IoWriter                        writer;
     private String                          conversationId;
     private String                          senderId;
@@ -25,13 +27,15 @@
 
     private Message                         receivedMessage;
 
-    public ConversationImpl(String conversationId,
+    public ConversationImpl(Connector conn, 
+                            String conversationId,
                             String senderId,
                             String recipientId,
                             RequestResponseDispatchListener dispathListener,
                             IoWriter writer,
                             ConversationManager conversationManager) {
-        this( conversationId,
+        this( conn,
+              conversationId,
               senderId,
               recipientId,
               dispathListener,
@@ -40,14 +44,15 @@
               conversationManager );
     }
 
-    public ConversationImpl(String conversationId,
+    public ConversationImpl(Connector conn,
+                            String conversationId,
                             String senderId,
                             String recipientId,
                             RequestResponseDispatchListener dispathListener,
                             Message receivedMessage,
                             IoWriter writer,
                             ConversationManager conversationManager) {
-
+        this.conn = conn;
         this.conversationId = conversationId;
         this.senderId = senderId;
         this.recipientId = recipientId;
@@ -87,4 +92,8 @@
         writer.write( msg );
     }
 
+    public void endConversation() {
+        this.conn.close();
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/ConversationManagerImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -7,7 +7,9 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.drools.SystemEventListener;
+import org.drools.grid.Grid;
 import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConnectorFactoryService;
 import org.drools.grid.io.Conversation;
 import org.drools.grid.io.ConversationManager;
 import org.drools.grid.io.IoWriter;
@@ -16,40 +18,39 @@
 public class ConversationManagerImpl
     implements
     ConversationManager {
-
-    private Connector           conn;
-
     private SystemEventListener systemEventListener;
 
-    private String              senderId;
-
     private AtomicLong          conversationIdCounter;
 
-    public ConversationManagerImpl(String senderId,
-                                   Connector conn,
+    private Grid grid;
+    
+    public ConversationManagerImpl(Grid grid,
                                    SystemEventListener systemEventListener) {
-        this.conn = conn;
-        this.senderId = senderId;
         this.conversationIdCounter = new AtomicLong();
         this.systemEventListener = systemEventListener;
+        this.grid = grid;
     }
 
-    public Conversation startConversation(InetSocketAddress address,
+    public Conversation startConversation(String senderId,
+                                          InetSocketAddress address,
                                           String recipientId) {
         RequestResponseDispatchListener dispathListener = new RequestResponseDispatchListener();
-        IoWriter writer = this.conn.open( address,
-                                          dispathListener,
-                                          systemEventListener );
-        return new ConversationImpl( Long.toString( this.conversationIdCounter.incrementAndGet() ),
-                                     this.senderId,
+        ConnectorFactoryService cfs = this.grid.get( ConnectorFactoryService.class );
+        if ( cfs == null ) {
+            throw new RuntimeException( "Unable to resolve ConnectorFactoryService" );
+        }
+        
+        Connector conn = cfs.newConnector();
+        IoWriter writer = conn.open( address,
+                                     dispathListener,
+                                     systemEventListener );
+        return new ConversationImpl( conn,
+                                     Long.toString( this.conversationIdCounter.incrementAndGet() ),
+                                     senderId,
                                      recipientId,
                                      dispathListener,
                                      writer,
                                      this );
     }
 
-    public void endConversation() {
-        this.conn.close();
-    }
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/MessageImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/MessageImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/io/impl/MessageImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -16,6 +16,10 @@
     private int    responseId;
     private Object body;
 
+    public MessageImpl() {
+        
+    }
+    
     public MessageImpl(String conversationId,
                        String senderId,
                        String recipientId,
@@ -29,47 +33,54 @@
         this.body = body;
     }
 
-    //    public MessageImpl(String conversationId,
-    //                       Map<String, Integer> contextVars,
-    //                       Object payload) {
-    //        this.conversationId = conversationId;
-    //        this.responseId = -1;
-    //        this.payload = payload;
-    //    }
-
-    /* (non-Javadoc)
-     * @see org.drools.grid.io.impl.Message#getSessionId()
-     */
     public String getConversationId() {
-        return this.conversationId;
+        return conversationId;
     }
 
+    public void setConversationId(String conversationId) {
+        this.conversationId = conversationId;
+    }
+
     public String getSenderId() {
         return senderId;
     }
 
+    public void setSenderId(String senderId) {
+        this.senderId = senderId;
+    }
+
     public String getRecipientId() {
         return recipientId;
     }
 
-    /* (non-Javadoc)
-     * @see org.drools.grid.io.impl.Message#getResponseId()
-     */
+    public void setRecipientId(String recipientId) {
+        this.recipientId = recipientId;
+    }
+
     public int getRequestId() {
-        return this.requestId;
+        return requestId;
     }
 
+    public void setRequestId(int requestId) {
+        this.requestId = requestId;
+    }
+
     public int getResponseId() {
-        return this.responseId;
+        return responseId;
     }
 
-    /* (non-Javadoc)
-     * @see org.drools.grid.io.impl.Message#getPayload()
-     */
+    public void setResponseId(int responseId) {
+        this.responseId = responseId;
+    }
+
     public Object getBody() {
-        return this.body;
+        return body;
     }
 
+    public void setBody(Object body) {
+        this.body = body;
+    }
+
     /* (non-Javadoc)
      * @see org.drools.grid.io.impl.Message#toString()
      */

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/ConversationUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/ConversationUtil.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/ConversationUtil.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -28,31 +28,51 @@
  * @author salaboy
  */
 public class ConversationUtil {
+
     public static Object sendMessage(ConversationManager conversationManager,
                                      Serializable addr,
                                      String id,
                                      Object body) {
+        // This method was added to provide a level of backwards compatability
+        // until we have a correct way of setting senderId
+        return sendMessage( conversationManager,
+                            "",
+                            addr,
+                            id,
+                            body );
 
+    }
+
+    public static Object sendMessage(ConversationManager conversationManager,
+                                     String senderId,
+                                     Serializable addr,
+                                     String id,
+                                     Object body) {
+
         InetSocketAddress[] sockets = null;
         if ( addr instanceof InetSocketAddress[] ) {
             sockets = (InetSocketAddress[]) addr;
         } else if ( addr instanceof InetSocketAddress ) {
-            sockets = new InetSocketAddress[ 1 ];
+            sockets = new InetSocketAddress[1];
             sockets[0] = (InetSocketAddress) addr;
         }
 
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         Exception exception = null;
+        Conversation conv = null;
         for ( InetSocketAddress socket : sockets ) {
             try {
-                Conversation conv = conversationManager.startConversation( socket,
-                                                                           id );
+                conv = conversationManager.startConversation( senderId,
+                                                              socket,
+                                                              id );
                 conv.sendMessage( body,
                                   handler );
                 exception = null;
             } catch ( Exception e ) {
                 exception = e;
-                conversationManager.endConversation();
+                if ( conv != null ) {
+                    conv.endConversation();
+                }
             }
             if ( exception == null ) {
                 break;
@@ -65,7 +85,7 @@
         try {
             return handler.getMessage().getBody();
         } finally {
-            conversationManager.endConversation();
+            conv.endConversation();
         }
     }
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/GridNodeRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -22,8 +22,11 @@
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.SystemEventListenerFactory;
 import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.grid.Grid;
 import org.drools.grid.GridNode;
 import org.drools.grid.GridServiceDescription;
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConnectorFactoryService;
 import org.drools.grid.io.ConversationManager;
 import org.drools.grid.io.impl.ConversationManagerImpl;
 import org.drools.grid.remote.mina.MinaConnector;
@@ -39,12 +42,15 @@
     GridNode {
 
     private GridServiceDescription    gsd;
+    private Grid                      grid;
     private final Map<String, Object> localContext    = new ConcurrentHashMap<String, Object>();
     private final ServiceRegistry     serviceRegistry = ServiceRegistryImpl.getInstance();
-    private MinaConnector connector = new MinaConnector();
-    
-    public GridNodeRemoteClient(GridServiceDescription gsd) {
+    private MinaConnector             connector       = new MinaConnector();
+
+    public GridNodeRemoteClient(Grid grid,
+                                GridServiceDescription gsd) {
         this.gsd = gsd;
+        this.grid = grid;
         init( this.localContext );
     }
 
@@ -74,21 +80,17 @@
 
     public void init(Object context) {
 
-        
-        ConversationManager cm = new ConversationManagerImpl( this.gsd.getId(),
-                                                              connector,
-                                                              SystemEventListenerFactory.getSystemEventListener() );
-        this.localContext.put( KnowledgeBuilderFactoryService.class.getCanonicalName(),
-                               new KnowledgeBuilderProviderRemoteClient( cm,
+        this.localContext.put( KnowledgeBuilderFactoryService.class.getName(),
+                               new KnowledgeBuilderProviderRemoteClient( this.grid,
                                                                          gsd ) );
-        this.localContext.put( KnowledgeBaseFactoryService.class.getCanonicalName(),
-                               new KnowledgeBaseProviderRemoteClient( cm,
+        this.localContext.put( KnowledgeBaseFactoryService.class.getName(),
+                               new KnowledgeBaseProviderRemoteClient( this.grid,
                                                                       gsd ) );
 
     }
 
     public void dispose() {
-         connector.close();
+        connector.close();
     }
 
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseProviderRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -26,6 +26,7 @@
 import org.drools.KnowledgeBaseFactoryService;
 import org.drools.command.NewKnowledgeBaseCommand;
 import org.drools.command.SetVariableCommand;
+import org.drools.grid.Grid;
 import org.drools.grid.GridNode;
 import org.drools.grid.GridServiceDescription;
 import org.drools.grid.io.ConversationManager;
@@ -41,12 +42,12 @@
     implements
     KnowledgeBaseFactoryService {
 
-    private ConversationManager    cm;
-    private GridServiceDescription<GridNode>  gsd;
+    private Grid                             grid;
+    private GridServiceDescription<GridNode> gsd;
 
-    public KnowledgeBaseProviderRemoteClient(ConversationManager cm,
+    public KnowledgeBaseProviderRemoteClient(Grid grid,
                                              GridServiceDescription gsd) {
-        this.cm = cm;
+        this.grid = grid;
         this.gsd = gsd;
     }
 
@@ -68,46 +69,47 @@
     }
 
     public KnowledgeBase newKnowledgeBase() {
-        return newKnowledgeBase("", null);
+        return newKnowledgeBase( "",
+                                 null );
 
     }
 
     public KnowledgeBase newKnowledgeBase(String kbaseId) {
-       return newKnowledgeBase(kbaseId, null);
+        return newKnowledgeBase( kbaseId,
+                                 null );
     }
 
     public KnowledgeBase newKnowledgeBase(KnowledgeBaseConfiguration conf) {
-        return newKnowledgeBase(null, conf);
+        return newKnowledgeBase( null,
+                                 conf );
     }
 
     public KnowledgeBase newKnowledgeBase(String kbaseId,
                                           KnowledgeBaseConfiguration conf) {
         String localId = "";
-        if(kbaseId == null || kbaseId.equals("")){
+        if ( kbaseId == null || kbaseId.equals( "" ) ) {
             localId = UUID.randomUUID().toString();
-        }
-        else{
+        } else {
             localId = kbaseId;
         }
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new SetVariableCommand( "__TEMP__",
+                                           Arrays.asList( new Object[]{new SetVariableCommand( "__TEMP__",
                                                                                                 localId,
-                                                                                                new NewKnowledgeBaseCommand( conf ) ) } ) );
+                                                                                                new NewKnowledgeBaseCommand( conf ) )} ) );
+        ConversationManager connm = this.grid.get( ConversationManager.class );
+        ConversationUtil.sendMessage( connm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
 
-        ConversationUtil.sendMessage( this.cm,
-                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                     this.gsd.getId(),
-                     cmd );
-
         return new KnowledgeBaseRemoteClient( localId,
                                               this.gsd,
-                                              this.cm );
+                                              connm );
     }
 
     public Environment newEnvironment() {
         throw new UnsupportedOperationException( "Not supported yet." );
     }
 
-   
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBaseRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -50,9 +50,9 @@
     implements
     KnowledgeBase {
 
-    private String                 instanceId;
-    private ConversationManager    cm;
-    private GridServiceDescription<GridNode>  gsd;
+    private String                           instanceId;
+    private ConversationManager              cm;
+    private GridServiceDescription<GridNode> gsd;
 
     public KnowledgeBaseRemoteClient(String localId,
                                      GridServiceDescription gsd,
@@ -68,16 +68,16 @@
         String localId = UUID.randomUUID().toString();
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new KnowledgeBaseAddKnowledgePackagesCommand(),
                                                                                                                        kuilderInstanceId,
                                                                                                                        this.instanceId,
                                                                                                                        null,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         ConversationUtil.sendMessage( this.cm,
-                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                     this.gsd.getId(),
-                     cmd );
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
 
     }
 
@@ -141,18 +141,18 @@
         String localId = UUID.randomUUID().toString();
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new SetVariableCommand( "__TEMP__",
+                                           Arrays.asList( new Object[]{new SetVariableCommand( "__TEMP__",
                                                                                                 localId,
                                                                                                 new KnowledgeContextResolveFromContextCommand( new NewStatefulKnowledgeSessionCommand( conf ),
                                                                                                                                                null,
                                                                                                                                                this.instanceId,
                                                                                                                                                null,
-                                                                                                                                               kresultsId ) ) } ) );
+                                                                                                                                               kresultsId ) )} ) );
 
         ConversationUtil.sendMessage( this.cm,
-                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                     this.gsd.getId(),
-                     cmd );
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
 
         return new StatefulKnowledgeSessionRemoteClient( localId,
                                                          this.gsd,
@@ -189,5 +189,4 @@
         throw new UnsupportedOperationException( "Not supported yet." );
     }
 
-   
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderProviderRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -29,6 +29,7 @@
 import org.drools.builder.KnowledgeBuilderFactoryService;
 import org.drools.command.SetVariableCommand;
 import org.drools.command.builder.NewKnowledgeBuilderCommand;
+import org.drools.grid.Grid;
 import org.drools.grid.GridNode;
 import org.drools.grid.GridServiceDescription;
 import org.drools.grid.io.ConversationManager;
@@ -42,12 +43,12 @@
     implements
     KnowledgeBuilderFactoryService {
 
-    private ConversationManager    cm;
-    private GridServiceDescription<GridNode>  gsd;
+    private Grid                             grid;
+    private GridServiceDescription<GridNode> gsd;
 
-    public KnowledgeBuilderProviderRemoteClient(ConversationManager cm,
+    public KnowledgeBuilderProviderRemoteClient(Grid grid,
                                                 GridServiceDescription gsd) {
-        this.cm = cm;
+        this.grid = grid;
         this.gsd = gsd;
     }
 
@@ -65,36 +66,39 @@
     }
 
     public KnowledgeBuilder newKnowledgeBuilder() {
-        return newKnowledgeBuilder(null, null);
-       
+        return newKnowledgeBuilder( null,
+                                    null );
 
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBuilderConfiguration conf) {
-        return newKnowledgeBuilder(null, conf);
+        return newKnowledgeBuilder( null,
+                                    conf );
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase) {
-        return newKnowledgeBuilder(kbase, null);
+        return newKnowledgeBuilder( kbase,
+                                    null );
     }
 
     public KnowledgeBuilder newKnowledgeBuilder(KnowledgeBase kbase,
                                                 KnowledgeBuilderConfiguration conf) {
-         String localId = UUID.randomUUID().toString();
+        String localId = UUID.randomUUID().toString();
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new SetVariableCommand( "__TEMP__",
+                                           Arrays.asList( new Object[]{new SetVariableCommand( "__TEMP__",
                                                                                                 localId,
-                                                                                                new NewKnowledgeBuilderCommand( conf ) ) } ) );
+                                                                                                new NewKnowledgeBuilderCommand( conf ) )} ) );
 
-        ConversationUtil.sendMessage( this.cm,
-                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                     this.gsd.getId(),
-                     cmd );
+        ConversationManager connm = this.grid.get( ConversationManager.class );
+        ConversationUtil.sendMessage( connm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
 
         return new KnowledgeBuilderRemoteClient( localId,
                                                  this.gsd,
-                                                 this.cm );
+                                                 connm );
     }
 
     public JaxbConfiguration newJaxbConfiguration(Options xjcOpts,
@@ -102,5 +106,4 @@
         throw new UnsupportedOperationException( "Not supported yet." );
     }
 
-    
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/KnowledgeBuilderRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -45,9 +45,9 @@
     implements
     KnowledgeBuilder {
 
-    private String                 instanceId;
-    private ConversationManager    cm;
-    private GridServiceDescription<GridNode>  gsd;
+    private String                           instanceId;
+    private ConversationManager              cm;
+    private GridServiceDescription<GridNode> gsd;
 
     public KnowledgeBuilderRemoteClient(String localId,
                                         GridServiceDescription gsd,
@@ -72,18 +72,18 @@
         String localId = UUID.randomUUID().toString();
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderAddCommand( resource,
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderAddCommand( resource,
                                                                                                                                                        type,
                                                                                                                                                        configuration ),
                                                                                                                        this.instanceId,
                                                                                                                        null,
                                                                                                                        null,
-                                                                                                                       null ) } ) );
+                                                                                                                       null )} ) );
 
         ConversationUtil.sendMessage( this.cm,
-                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                     this.gsd.getId(),
-                     cmd );
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
 
     }
 
@@ -105,19 +105,19 @@
         String localId = UUID.randomUUID().toString();
 
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderGetErrorsCommand(),
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new KnowledgeBuilderGetErrorsCommand(),
                                                                                                                        this.instanceId,
                                                                                                                        null,
                                                                                                                        null,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         Object result = ConversationUtil.sendMessage( this.cm,
-                                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                                     this.gsd.getId(),
-                                     cmd );
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
 
         return (KnowledgeBuilderErrors) result;
 
     }
- 
+
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/RemoteGridNodeConnection.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/RemoteGridNodeConnection.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/RemoteGridNodeConnection.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -17,6 +17,7 @@
 
 package org.drools.grid.remote;
 
+import org.drools.grid.Grid;
 import org.drools.grid.GridConnection;
 import org.drools.grid.GridNode;
 import org.drools.grid.GridNodeConnection;
@@ -31,8 +32,10 @@
     GridConnection<GridNode> {
     private GridNode gridNode;
 
-    public RemoteGridNodeConnection(GridServiceDescription gsd) {
-        this.gridNode = new GridNodeRemoteClient( gsd );
+    public RemoteGridNodeConnection(Grid grid,
+                                    GridServiceDescription gsd) {
+        this.gridNode = new GridNodeRemoteClient( grid,
+                                                  gsd );
     }
 
     public GridNode connect() {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/StatefulKnowledgeSessionRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -76,9 +76,9 @@
 public class StatefulKnowledgeSessionRemoteClient
     implements
     StatefulKnowledgeSession {
-    private String                 instanceId;
+    private String                           instanceId;
     private GridServiceDescription<GridNode> gsd;
-    private ConversationManager    cm;
+    private ConversationManager              cm;
 
     public StatefulKnowledgeSessionRemoteClient(String localId,
                                                 GridServiceDescription gsd,
@@ -93,155 +93,150 @@
     }
 
     public void dispose() {
+        System.out.println( "remoted!!!!" );
         String kresultsId = "kresults_" + this.gsd.getId();
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new DisposeCommand(),
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new DisposeCommand(),
                                                                                                                        null,
                                                                                                                        null,
                                                                                                                        this.instanceId,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         ConversationUtil.sendMessage( this.cm,
-                                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                                     this.gsd.getId(),
-                                     cmd );
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public int fireAllRules() {
-        return fireAllRules(-1);
+        return fireAllRules( -1 );
 
-       
     }
 
     public int fireAllRules(int max) {
-         String kresultsId = "kresults_" + this.gsd.getId();
+        String kresultsId = "kresults_" + this.gsd.getId();
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( CommandFactory.newFireAllRules(max),
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( CommandFactory.newFireAllRules( max ),
                                                                                                                        null,
                                                                                                                        null,
                                                                                                                        this.instanceId,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         Object result = ConversationUtil.sendMessage( this.cm,
-                                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                                     this.gsd.getId(),
-                                     cmd );
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
 
         return (Integer) result;
     }
 
     public int fireAllRules(AgendaFilter agendaFilter) {
-         String kresultsId = "kresults_" + this.gsd.getId();
+        String kresultsId = "kresults_" + this.gsd.getId();
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand(agendaFilter),
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new FireAllRulesCommand( agendaFilter ),
                                                                                                                        null,
                                                                                                                        null,
                                                                                                                        this.instanceId,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         Object result = ConversationUtil.sendMessage( this.cm,
-                                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                                     this.gsd.getId(),
-                                     cmd );
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
 
         return (Integer) result;
     }
 
     public void fireUntilHalt() {
-       fireUntilHalt(null); 
+        fireUntilHalt( null );
     }
 
     public void fireUntilHalt(AgendaFilter agendaFilter) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new FireUntilHaltCommand( agendaFilter ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new FireUntilHaltCommand( agendaFilter ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public <T> T execute(Command<T> command) {
-        
+
         throw new UnsupportedOperationException( "Not supported yet." );
 
     }
 
     public <T extends SessionClock> T getSessionClock() {
-            String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetSessionClockCommand(),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        String kresultsId = "kresults_" + this.gsd.getId();
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetSessionClockCommand(),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
         return (T) result;
     }
-    
 
     public void setGlobal(String identifier,
                           Object object) {
-           String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( CommandFactory.newSetGlobal( identifier,
-                                                                                                       object ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        String kresultsId = "kresults_" + this.gsd.getId();
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( CommandFactory.newSetGlobal( identifier,
+                                                                                                                                                   object ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public Object getGlobal(String identifier) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( CommandFactory.newGetGlobal( identifier ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )})); 
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        
-        
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( CommandFactory.newGetGlobal( identifier ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
         return result;
     }
 
     public Globals getGlobals() {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetGlobalsCommand(),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )})); 
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        
-        
-        return (Globals)result;
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetGlobalsCommand(),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
+        return (Globals) result;
     }
 
     public Calendars getCalendars() {
@@ -283,18 +278,18 @@
     }
 
     public void halt() {
-         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new HaltCommand(),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        String kresultsId = "kresults_" + this.gsd.getId();
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new HaltCommand(),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public Agenda getAgenda() {
@@ -303,22 +298,20 @@
 
     public WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetWorkingMemoryEntryPointRemoteCommand( name ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  name,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress[]) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        
-        
-        return new WorkingMemoryEntryPointRemoteClient( this.instanceId, 
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetWorkingMemoryEntryPointRemoteCommand( name ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      name,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress[]) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
+
+        return new WorkingMemoryEntryPointRemoteClient( this.instanceId,
                                                             name,
                                                             this.gsd,
                                                             this.cm );
@@ -347,126 +340,128 @@
 
         String kresultsId = "kresults_" + this.gsd.getId();
         CommandImpl cmd = new CommandImpl( "execute",
-                                           Arrays.asList( new Object[]{ new KnowledgeContextResolveFromContextCommand( new InsertObjectCommand( object,
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new InsertObjectCommand( object,
                                                                                                                                                 true ),
                                                                                                                        null,
                                                                                                                        null,
                                                                                                                        this.instanceId,
-                                                                                                                       kresultsId ) } ) );
+                                                                                                                       kresultsId )} ) );
 
         Object result = ConversationUtil.sendMessage( this.cm,
-                                     (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
-                                     this.gsd.getId(),
-                                     cmd );
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
 
         return (FactHandle) result;
     }
 
     public void retract(FactHandle handle) {
-         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( CommandFactory.newRetract( handle ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        String kresultsId = "kresults_" + this.gsd.getId();
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( CommandFactory.newRetract( handle ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public void update(FactHandle handle,
                        Object object) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new UpdateCommand( handle, object ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new UpdateCommand( handle,
+                                                                                                                                         object ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public FactHandle getFactHandle(Object object) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetFactHandleCommand( object, true ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetFactHandleCommand( object,
+                                                                                                                                                true ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
         return (FactHandle) result;
     }
 
     public Object getObject(FactHandle factHandle) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetObjectCommand(factHandle ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetObjectCommand( factHandle ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
         return result;
     }
 
     public Collection<Object> getObjects() {
-        return getObjects(null);
+        return getObjects( null );
     }
 
     public Collection<Object> getObjects(ObjectFilter filter) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetObjectsCommand( filter ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        return (Collection<Object>)result;
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetObjectsCommand( filter ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
+        return (Collection<Object>) result;
     }
 
     public <T extends FactHandle> Collection<T> getFactHandles() {
-        return getFactHandles(null);
+        return getFactHandles( null );
     }
 
     public <T extends FactHandle> Collection<T> getFactHandles(ObjectFilter filter) {
-       String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetFactHandlesCommand( filter ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        return (Collection<T>)result; 
+        String kresultsId = "kresults_" + this.gsd.getId();
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetFactHandlesCommand( filter ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
+        return (Collection<T>) result;
     }
 
     public long getFactCount() {
@@ -474,114 +469,115 @@
     }
 
     public ProcessInstance startProcess(String processId) {
-        return startProcess(processId, null);
+        return startProcess( processId,
+                             null );
     }
 
     public ProcessInstance startProcess(String processId,
                                         Map<String, Object> parameters) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new StartProcessCommand( processId, parameters ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        
-        
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new StartProcessCommand( processId,
+                                                                                                                                               parameters ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
         return (ProcessInstance) result;
     }
 
     public void signalEvent(String type,
                             Object event) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new SignalEventCommand( type, event ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new SignalEventCommand( type,
+                                                                                                                                              event ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public void signalEvent(String type,
                             Object event,
                             long processInstanceId) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new SignalEventCommand( type, event ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new SignalEventCommand( type,
+                                                                                                                                              event ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
     }
 
     public Collection<ProcessInstance> getProcessInstances() {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetProcessInstancesCommand(  ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        return (Collection<ProcessInstance>)result;
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetProcessInstancesCommand(),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
+        return (Collection<ProcessInstance>) result;
     }
 
     public ProcessInstance getProcessInstance(long processInstanceId) {
         String kresultsId = "kresults_" + this.gsd.getId();
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( new GetProcessInstanceCommand( processInstanceId ),
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        return (ProcessInstance)result;
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( new GetProcessInstanceCommand( processInstanceId ),
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                                      this.gsd.getId(),
+                                                      cmd );
+
+        return (ProcessInstance) result;
     }
 
     public void abortProcessInstance(long processInstanceId) {
-        
+
         String kresultsId = "kresults_" + this.gsd.getId();
         AbortProcessInstanceCommand cmdAbort = new AbortProcessInstanceCommand();
-        cmdAbort.setProcessInstanceId(processInstanceId);
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand(cmdAbort,
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  kresultsId )}));
-        
-        ConversationUtil.sendMessage(this.cm,
-                (InetSocketAddress) this.gsd.getAddresses().get("socket").getObject(),
-                this.gsd.getId(),
-                cmd);
-        
-        
+        cmdAbort.setProcessInstanceId( processInstanceId );
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( cmdAbort,
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      kresultsId )} ) );
+
+        ConversationUtil.sendMessage( this.cm,
+                                      (InetSocketAddress) this.gsd.getAddresses().get( "socket" ).getObject(),
+                                      this.gsd.getId(),
+                                      cmd );
+
     }
 
     public WorkItemManager getWorkItemManager() {
@@ -624,5 +620,4 @@
         throw new UnsupportedOperationException( "Not supported yet." );
     }
 
-   
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/WorkingMemoryEntryPointRemoteClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -43,44 +43,43 @@
     implements
     WorkingMemoryEntryPoint {
 
-    private String               instanceId;
-    private String               name;
+    private String                 instanceId;
+    private String                 name;
     private GridServiceDescription gsd;
-    private ConversationManager cm;
-    
+    private ConversationManager    cm;
 
-    public WorkingMemoryEntryPointRemoteClient(String instanceId, String name,
+    public WorkingMemoryEntryPointRemoteClient(String instanceId,
+                                               String name,
                                                GridServiceDescription gsd,
                                                ConversationManager cm) {
         this.instanceId = instanceId;
         this.name = name;
         this.gsd = gsd;
         this.cm = cm;
-        
+
     }
 
     public FactHandle insert(Object object) throws FactException {
 
-        
         String kresultsId = "kresults_" + this.gsd.getId();
-        
-        InsertObjectCommand insertCmd = new InsertObjectCommand( object, true );
-        insertCmd.setEntryPoint(name);
-        CommandImpl cmd = new CommandImpl("execute",
-                Arrays.asList(new Object[]{ new KnowledgeContextResolveFromContextCommand( insertCmd,
-                                                                                  null,
-                                                                                  null,
-                                                                                  this.instanceId,
-                                                                                  this.name,
-                                                                                  kresultsId )}));
-        
-        Object result = ConversationUtil.sendMessage(this.cm,
-                ((InetSocketAddress[])((Address) this.gsd.getAddresses().get("socket")).getObject()),
-                this.gsd.getServiceInterface().getName(),
-                cmd);
-        return ((FactHandle)result);
-       
-        
+
+        InsertObjectCommand insertCmd = new InsertObjectCommand( object,
+                                                                 true );
+        insertCmd.setEntryPoint( name );
+        CommandImpl cmd = new CommandImpl( "execute",
+                                           Arrays.asList( new Object[]{new KnowledgeContextResolveFromContextCommand( insertCmd,
+                                                                                                                      null,
+                                                                                                                      null,
+                                                                                                                      this.instanceId,
+                                                                                                                      this.name,
+                                                                                                                      kresultsId )} ) );
+
+        Object result = ConversationUtil.sendMessage( this.cm,
+                                                      ((InetSocketAddress[]) ((Address) this.gsd.getAddresses().get( "socket" )).getObject()),
+                                                      this.gsd.getServiceInterface().getName(),
+                                                      cmd );
+        return ((FactHandle) result);
+
     }
 
     public FactHandle insert(Object object,
@@ -132,6 +131,5 @@
     public long getFactCount() {
         throw new UnsupportedOperationException( "Not supported yet." );
     }
-    
-    
+
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaAcceptor.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -40,7 +40,7 @@
                                                new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
             acceptor.getSessionConfig().setReadBufferSize( 2048 );
             acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE,
-                                                     10 );
+                                                     100 );
         }
 
         this.handler = handler;

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnector.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnector.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnector.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -55,10 +55,8 @@
         if ( this.connector == null ) {
             // Allow users to pass their own configured SocketConnector
             this.connector = new NioSocketConnector();
-            this.connector.getFilterChain().addLast(
-                                                     "codec",
-                                                     new ProtocolCodecFilter(
-                                                                              new ObjectSerializationCodecFactory() ) );
+            this.connector.getFilterChain().addLast( "codec",
+                                                     new ProtocolCodecFilter(new ObjectSerializationCodecFactory() ) );
         }
 
         //        this.handler = new MessageHandler() {

Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnectorFactoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnectorFactoryService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaConnectorFactoryService.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -0,0 +1,14 @@
+package org.drools.grid.remote.mina;
+
+import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConnectorFactoryService;
+
+public class MinaConnectorFactoryService
+    implements
+    ConnectorFactoryService {
+
+    public Connector newConnector() {
+        return new MinaConnector();
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/remote/mina/MinaIoHandler.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -55,7 +55,8 @@
     public void messageReceived(IoSession session,
                                 Object object) throws Exception {
         Message msg = (Message) object;
-        Conversation conversation = new ConversationImpl( msg.getConversationId(),
+        Conversation conversation = new ConversationImpl( null, //TODO this should not be null, but we currently have no concept of a ConversationManager on the Acceptor
+                                                          msg.getConversationId(),
                                                           this.senderId,
                                                           msg.getSenderId(),
                                                           this.dispathListener,

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -22,6 +22,6 @@
 
     public void configureService(Grid grid) {
         ((GridImpl) grid).addService( CoreServicesLookup.class,
-                                      new CoreServicesWhitePagesImpl( this.services ) );
+                                      new CoreServicesLookupImpl( this.services ) );
     }
 }
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupImpl.java (from rev 35936, labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java)
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesLookupImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -0,0 +1,25 @@
+package org.drools.grid.service.directory.impl;
+
+import java.util.Map;
+
+import org.drools.grid.CoreServicesLookup;
+import org.drools.grid.GridServiceDescription;
+
+public class CoreServicesLookupImpl
+    implements
+    CoreServicesLookup {
+    private Map<String, GridServiceDescription> services;
+
+    public CoreServicesLookupImpl(Map<String, GridServiceDescription> services) {
+        this.services = services;
+    }
+
+    public Map<String, GridServiceDescription> getServices() {
+        return services;
+    }
+
+    public GridServiceDescription lookup(Class cls) {
+        return this.services.get( cls.getName() );
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/CoreServicesWhitePagesImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -1,25 +0,0 @@
-package org.drools.grid.service.directory.impl;
-
-import java.util.Map;
-
-import org.drools.grid.CoreServicesLookup;
-import org.drools.grid.GridServiceDescription;
-
-public class CoreServicesWhitePagesImpl
-    implements
-    CoreServicesLookup {
-    private Map<String, GridServiceDescription> services;
-
-    public CoreServicesWhitePagesImpl(Map<String, GridServiceDescription> services) {
-        this.services = services;
-    }
-
-    public Map<String, GridServiceDescription> getServices() {
-        return services;
-    }
-
-    public GridServiceDescription lookup(Class cls) {
-        return this.services.get( cls.getName() );
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -18,7 +18,8 @@
     Serializable {
     private GridServiceDescription<T> detached;
 
-    private EntityManagerFactory   emf;
+    
+    private transient EntityManagerFactory      emf;
 
     public GridServiceDescriptionJpa(GridServiceDescription detached,
                                      EntityManagerFactory emf) {
@@ -32,7 +33,7 @@
         for ( Address address : this.detached.getAddresses().values() ) {
             addresses.put( address.getTransport(),
                            new AddressJpa( address,
-                                                                   this.emf ) );
+                                           this.emf ) );
         }
         em.close();
         return Collections.unmodifiableMap( addresses );

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -22,16 +22,12 @@
     implements
     WhitePages,
     MessageReceiverHandlerFactoryService {
-    private Grid grid;
+    private Grid                grid;
 
-    private ConversationManager    conversationManager;
-
-    public WhitePagesClient(Grid grid,
-                            ConversationManager conversationManager) {
+    public WhitePagesClient(Grid grid) {
         this.grid = grid;
-        this.conversationManager = conversationManager;
     }
-    
+
     public GridServiceDescription<WhitePages> getGsd() {
         return this.grid.get( CoreServicesLookup.class ).lookup( WhitePages.class );
     }
@@ -45,21 +41,25 @@
         if ( addr instanceof InetSocketAddress[] ) {
             sockets = (InetSocketAddress[]) addr;
         } else if ( addr instanceof InetSocketAddress ) {
-            sockets = new InetSocketAddress[ 1 ];
+            sockets = new InetSocketAddress[1];
             sockets[0] = (InetSocketAddress) addr;
         }
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         Exception exception = null;
+        Conversation conv = null;
         for ( InetSocketAddress socket : sockets ) {
             try {
-                Conversation conv = conversationManager.startConversation( socket,
-                                                                           id );
+                conv = conversationManager.startConversation( "",
+                                                              socket,
+                                                              id );
                 conv.sendMessage( body,
                                   handler );
                 exception = null;
             } catch ( Exception e ) {
                 exception = e;
-                conversationManager.endConversation();
+                if ( conv != null ) {
+                    conv.endConversation();
+                }
             }
             if ( exception == null ) {
                 break;
@@ -72,7 +72,7 @@
         try {
             return handler.getMessage().getBody();
         } finally {
-            conversationManager.endConversation();
+            conv.endConversation();
         }
     }
 
@@ -80,37 +80,40 @@
         GridServiceDescription<WhitePages> wpGsd = getGsd();
         InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) wpGsd.getAddresses().get( "socket" )).getObject();
         CommandImpl cmd = new CommandImpl( "WhitePages.create",
-                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) );
-        GridServiceDescription gsd = (GridServiceDescription) sendMessage( this.conversationManager,
+                                           Arrays.asList( new Object[]{serviceDescriptionId} ) );
+        ConversationManager convm = this.grid.get( ConversationManager.class );
+        GridServiceDescription gsd = (GridServiceDescription) sendMessage( convm,
                                                                            sockets,
                                                                            wpGsd.getId(),
                                                                            cmd );
         return new GridServiceDescriptionClient( gsd,
                                                  wpGsd,
-                                                 this.conversationManager );
+                                                 convm );
     }
 
     public GridServiceDescription lookup(String serviceDescriptionId) {
         GridServiceDescription<WhitePages> wpGsd = getGsd();
         InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) wpGsd.getAddresses().get( "socket" )).getObject();
         CommandImpl cmd = new CommandImpl( "WhitePages.lookup",
-                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) );
-        GridServiceDescription gsd = (GridServiceDescription) sendMessage( this.conversationManager,
+                                           Arrays.asList( new Object[]{serviceDescriptionId} ) );
+        ConversationManager convm = this.grid.get( ConversationManager.class );
+        GridServiceDescription gsd = (GridServiceDescription) sendMessage( convm,
                                                                            sockets,
                                                                            wpGsd.getId(),
                                                                            cmd );
         return (gsd == null) ? gsd : new GridServiceDescriptionClient( gsd,
                                                                        wpGsd,
-                                                                       this.conversationManager );
+                                                                       convm );
     }
 
     public void remove(String serviceDescriptionId) {
         GridServiceDescription<WhitePages> wpGsd = getGsd();
-        
+
         InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) wpGsd.getAddresses().get( "socket" )).getObject();
         CommandImpl cmd = new CommandImpl( "WhitePages.remove",
-                                           Arrays.asList( new Object[]{ serviceDescriptionId } ) );
-        sendMessage( this.conversationManager,
+                                           Arrays.asList( new Object[]{serviceDescriptionId} ) );
+        ConversationManager convm = this.grid.get( ConversationManager.class );
+        sendMessage( convm,
                      sockets,
                      wpGsd.getId(),
                      cmd );
@@ -120,8 +123,14 @@
         return new WhitePagesServer( this );
     }
 
-    public void registerSocketService(Grid grid, String id, String ip, int port) {
-        WhitePagesImpl.doRegisterSocketService(grid, id, ip, port);
+    public void registerSocketService(Grid grid,
+                                      String id,
+                                      String ip,
+                                      int port) {
+        WhitePagesImpl.doRegisterSocketService( grid,
+                                                id,
+                                                ip,
+                                                port );
     }
 
 }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -44,7 +44,7 @@
     }
     
     public static void doRegisterSocketService(Grid grid, String id, String ip, int port) {
-        CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+        CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
         GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( WhitePages.class );
         if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesRemoteConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -8,24 +8,18 @@
 import org.drools.grid.conf.GridPeerServiceConfiguration;
 import org.drools.grid.impl.GridImpl;
 import org.drools.grid.io.ConversationManager;
+import org.drools.grid.io.impl.ConversationManagerImpl;
 import org.drools.grid.service.directory.WhitePages;
 
 public class WhitePagesRemoteConfiguration
     implements
     GridPeerServiceConfiguration {
-    ConversationManager cm;
 
-    public WhitePagesRemoteConfiguration(ConversationManager cm) {
-        this.cm = cm;
+    public WhitePagesRemoteConfiguration() {
     }
 
     public void configureService(Grid grid) {
-        CoreServicesWhitePagesImpl coreServices = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
-
-        GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( WhitePages.class );
-
-        WhitePages wp = new WhitePagesClient( grid,
-                                              cm );
+        WhitePages wp = new WhitePagesClient( grid );
         ((GridImpl) grid).addService( WhitePages.class,
                                       wp );
     }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesServer.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -71,6 +71,9 @@
                                                          WhitePages whitePages = (WhitePages) object;
                                                          final List list = cmd.getArguments();
                                                          GridServiceDescription gsd = whitePages.lookup( (String) list.get( 0 ) );
+                                                         if ( gsd != null ) {
+                                                             gsd.setServiceInterface( null ); // FIXME URGENT (mdp) workaround due to mina serialization issues.
+                                                         }
                                                          con.respond( gsd );
                                                      }
                                                  } );

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/service/directory/impl/WhitePagesSocketConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -32,7 +32,7 @@
         WhitePages wp = grid.get( WhitePages.class );
 
         if ( port != -1 ) {
-            CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+            CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
             GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( WhitePages.class );
             if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/RegisterSchedulerConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/RegisterSchedulerConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/RegisterSchedulerConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -38,7 +38,7 @@
     }
 
     public void configureService(Grid grid) {
-        CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+        CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
         GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( SchedulerService.class );
         if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -56,11 +56,9 @@
     private Grid                   grid;
 
     public SchedulerClient(Grid grid,
-                           GridServiceDescription schedulerGsd,
-                           ConversationManager conversationManager) {
+                           GridServiceDescription schedulerGsd) {
         this.grid = grid;
         this.schedulerGsd = schedulerGsd;
-        this.conversationManager = conversationManager;
     }
 
     public static Object sendMessage(ConversationManager conversationManager,
@@ -78,16 +76,18 @@
 
         BlockingMessageResponseHandler handler = new BlockingMessageResponseHandler();
         Exception exception = null;
+        Conversation conv = null;
         for ( InetSocketAddress socket : sockets ) {
             try {
-                Conversation conv = conversationManager.startConversation( socket,
-                                                                           id );
+                conv = conversationManager.startConversation( "", // TODO add ID later
+                                                              socket,
+                                                              id );
                 conv.sendMessage( body,
                                   handler );
                 exception = null;
             } catch ( Exception e ) {
                 exception = e;
-                conversationManager.endConversation();
+                conv.endConversation();
             }
             if ( exception == null ) {
                 break;
@@ -100,7 +100,7 @@
         try {
             return handler.getMessage().getBody();
         } finally {
-            conversationManager.endConversation();
+            conv.endConversation();
         }
     }
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerImpl.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -26,7 +26,7 @@
 import org.drools.grid.io.MessageReceiverHandler;
 import org.drools.grid.service.directory.Address;
 import org.drools.grid.service.directory.WhitePages;
-import org.drools.grid.service.directory.impl.CoreServicesWhitePagesImpl;
+import org.drools.grid.service.directory.impl.CoreServicesLookupImpl;
 import org.drools.grid.service.directory.impl.GridServiceDescriptionImpl;
 import org.drools.time.Job;
 import org.drools.time.JobContext;
@@ -76,7 +76,7 @@
                                       String id,
                                       String ip,
                                       int port) {
-        CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+        CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
         GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( SchedulerService.class );
         if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -14,21 +14,17 @@
 public class SchedulerRemoteConfiguration
     implements
     GridPeerServiceConfiguration {
-    private ConversationManager cm;
 
-    public SchedulerRemoteConfiguration(ConversationManager cm) {
-
-        this.cm = cm;
+    public SchedulerRemoteConfiguration() {
     }
 
     public void configureService(Grid grid) {
-        CoreServicesWhitePagesImpl coreServices = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+        CoreServicesLookupImpl coreServices = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
         GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( SchedulerService.class );
 
         SchedulerService scheduler = new SchedulerClient( grid,
-                                                          gsd,
-                                                          cm );
+                                                          gsd);
         ((GridImpl) grid).addService( SchedulerService.class,
                                       scheduler );
 

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -32,7 +32,7 @@
         SchedulerService sched = grid.get( SchedulerService.class );
 
         if ( port != -1 ) {
-            CoreServicesWhitePagesImpl coreServicesWP = (CoreServicesWhitePagesImpl) grid.get( CoreServicesLookup.class );
+            CoreServicesLookupImpl coreServicesWP = (CoreServicesLookupImpl) grid.get( CoreServicesLookup.class );
 
             GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServicesWP.lookup( SchedulerService.class );
             if ( gsd == null ) {

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/grid/NodeTests.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/grid/NodeTests.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/grid/NodeTests.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -36,6 +36,7 @@
 import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
 import org.drools.grid.service.directory.WhitePages;
 import org.drools.grid.service.directory.impl.CoreServicesLookupConfiguration;
+import org.drools.grid.service.directory.impl.WhitePagesImpl;
 import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
 import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
 import org.drools.io.impl.ByteArrayResource;
@@ -119,12 +120,12 @@
         Grid grid1 = new GridImpl( new HashMap<String, Object>() );
         configureGrid1( grid1,
                         8000,
-                        null );
+                        new WhitePagesImpl() );
 
         Grid grid2 = new GridImpl( new HashMap<String, Object>() );
         configureGrid1( grid2,
                         -1,
-                        grid1.get( WhitePages.class ) );
+                        null );
 
         GridNode n1 = grid1.createGridNode( "n1" );
         grid1.get( SocketService.class ).addService( "n1", 8000, n1 );
@@ -183,12 +184,12 @@
         Grid grid1 = new GridImpl( new HashMap<String, Object>() );
         configureGrid1( grid1,
                         8000,
-                        null );
+                        new WhitePagesImpl() );
 
         Grid grid2 = new GridImpl( new HashMap<String, Object>() );
         configureGrid1( grid2,
                         -1,
-                        grid1.get( WhitePages.class ) );
+                        null );
 
         GridNode n1 = grid1.createGridNode( "n1" );
         grid1.get( SocketService.class ).addService( "n1", 8000, n1 );
@@ -272,9 +273,12 @@
         conf.addConfiguration( coreSeviceSchedulerConf );
 
         //Configuring the WhitePages 
-        WhitePagesLocalConfiguration wplConf = new WhitePagesLocalConfiguration();
-        wplConf.setWhitePages( wp );
-        conf.addConfiguration( wplConf );        
+        WhitePagesLocalConfiguration wplConf = null;
+        if ( wp != null ) {
+            wplConf = new WhitePagesLocalConfiguration();
+            wplConf.setWhitePages( wp );
+            conf.addConfiguration( wplConf );
+        }
 
 //        //Create a Local Scheduler
 //        SchedulerLocalConfiguration schlConf = new SchedulerLocalConfiguration( "myLocalSched" );
@@ -283,9 +287,9 @@
         if ( port >= 0 ) {
             //Configuring the SocketService
             MultiplexSocketServiceCongifuration socketConf = new MultiplexSocketServiceCongifuration( new MultiplexSocketServerImpl( "127.0.0.1",
-                                                                                                                              new MinaAcceptorFactoryService(),
-                                                                                                                              SystemEventListenerFactory.getSystemEventListener(),
-                                                                                                                              grid) );
+                                                                                                                                     new MinaAcceptorFactoryService(),
+                                                                                                                                     SystemEventListenerFactory.getSystemEventListener(),
+                                                                                                                                     grid) );
             socketConf.addService( WhitePages.class.getName(), wplConf.getWhitePages(), port );
 //            socketConf.addService( SchedulerService.class.getName(), schlConf.getSchedulerService(), port );
                         

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/MinaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/MinaTest.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/MinaTest.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -9,6 +9,7 @@
 
 import org.drools.SystemEventListener;
 import org.drools.SystemEventListenerFactory;
+import org.drools.grid.impl.GridImpl;
 import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
 import org.drools.grid.io.Acceptor;
 import org.drools.grid.io.Connector;
@@ -22,6 +23,7 @@
 import org.drools.grid.io.impl.MessageImpl;
 import org.drools.grid.remote.mina.MinaAcceptor;
 import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.grid.remote.mina.MinaConnectorFactoryService;
 import org.drools.grid.service.directory.WhitePages;
 
 import junit.framework.TestCase;
@@ -49,13 +51,12 @@
                   accHandler,
                   l );
 
-        Connector conn = new MinaConnector();
 
-        ConversationManager cm = new ConversationManagerImpl( "s1",
-                                                              conn,
+        ConversationManager cm = new ConversationManagerImpl( new GridImpl(),
                                                               l );
 
-        Conversation cv = cm.startConversation( new InetSocketAddress( "127.0.0.1",
+        Conversation cv = cm.startConversation( "s1",
+                                                new InetSocketAddress( "127.0.0.1",
                                                                        5012 ),
                                                                        "r1" );
 
@@ -67,7 +68,7 @@
         Message msg = blockHandler.getMessage( 5000 );
         System.out.println( msg.getBody() );
 
-        conn.close();
+        cv.endConversation();
         if ( acc.isOpen() ) {
             acc.close();
         }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/RemoteWhitePagesTest.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -65,13 +65,7 @@
         coreSeviceConf = new CoreServicesLookupConfiguration( coreServicesMap );
         conf.addConfiguration( coreSeviceConf );
 
-        Connector conn = new MinaConnector();
-
-        ConversationManager cm = new ConversationManagerImpl( "s1",
-                                                              conn,
-                                                              l );
-
-        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( cm );
+        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( );
         conf.addConfiguration( wprConf );
 
         conf.configure( grid2 );
@@ -109,9 +103,6 @@
 
         GridServiceDescription gs2 = wp.lookup( "s2" );
         assertNotNull( gs2 );
-
-        conn.close();
-
         grid1.get( SocketService.class ).close();
 
     }

Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/WhitePagesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/WhitePagesTest.java	2010-11-15 20:26:19 UTC (rev 35980)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl/src/test/java/org/drools/io/mina/WhitePagesTest.java	2010-11-15 20:27:56 UTC (rev 35981)
@@ -16,12 +16,14 @@
 import org.drools.grid.impl.GridImpl;
 import org.drools.grid.impl.MultiplexSocketServerImpl;
 import org.drools.grid.io.Connector;
+import org.drools.grid.io.ConnectorFactoryService;
 import org.drools.grid.io.ConversationManager;
 import org.drools.grid.io.impl.ConversationManagerImpl;
 import org.drools.grid.service.directory.impl.CoreServicesLookupConfiguration;
 import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
 import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
 import org.drools.grid.remote.mina.MinaConnector;
+import org.drools.grid.remote.mina.MinaConnectorFactoryService;
 import org.drools.grid.service.directory.WhitePages;
 import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
 import org.drools.grid.service.directory.impl.WhitePagesRemoteConfiguration;
@@ -63,13 +65,7 @@
         coreSeviceConf = new CoreServicesLookupConfiguration( coreServicesMap );
         conf.addConfiguration( coreSeviceConf );
 
-        Connector conn = new MinaConnector();
-
-        ConversationManager cm = new ConversationManagerImpl( "s1",
-                                                              conn,
-                                                              l );
-
-        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( cm );
+        GridPeerServiceConfiguration wprConf = new WhitePagesRemoteConfiguration( );
         conf.addConfiguration( wprConf );
 
         conf.configure( grid2 );
@@ -91,7 +87,7 @@
                       testGsd_3 );
         assertNotSame( test1Gsd,
                        testGsd_3 );
-        conn.close();
+
         grid1.get( SocketService.class ).close();
     }
 



More information about the jboss-svn-commits mailing list