Author: azeez Date: Wed May 23 05:48:25 2007 New Revision: 540941 URL: http://svn.apache.org/viewvc?view=rev&rev=540941 Log: Fixes for clustering implemetation + code cleanup
Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/PropertyUpdater.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceContextCommand.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceGroupContextCommand.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/ServiceContextCommand.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceContextCommand.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceGroupContextCommand.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/ContextClusteringCommandFactory.java Wed May 23 05:48:25 2007 @@ -18,6 +18,8 @@ import org.apache.axis2.clustering.context.commands.*; import org.apache.axis2.context.*; import org.apache.axis2.deployment.DeploymentConstants; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.io.Serializable; import java.util.Iterator; @@ -29,6 +31,8 @@ */ public final class ContextClusteringCommandFactory { + private static final Log log = LogFactory.getLog(ContextClusteringCommandFactory.class); + public static ContextClusteringCommand getUpdateCommand(AbstractContext context, Map excludedPropertyPatterns) { @@ -55,6 +59,7 @@ UpdateServiceContextCommand updateServiceCmd = (UpdateServiceContextCommand) cmd; updateServiceCmd.setServiceGroupName(serviceCtx.getGroupName()); + updateServiceCmd.setServiceGroupContextId(serviceCtx.getServiceGroupContext().getId()); updateServiceCmd.setServiceName(serviceCtx.getAxisService().getName()); fillProperties((UpdateContextCommand) cmd, context, @@ -78,7 +83,7 @@ // Next check whether it matches an excluded pattern if (!isExcluded(key, context.getClass().getName(), excludedPropertyPatterns)) { - System.err.println("..................... sending prop=" + key + "-" + prop); + log.debug("sending property =" + key + "-" + prop); PropertyDifference diff = (PropertyDifference) diffs.get(key); diff.setValue(prop); updateCmd.addProperty(diff); @@ -140,7 +145,7 @@ ServiceContextCommand cmd = new CreateServiceContextCommand(); ServiceGroupContext parent = (ServiceGroupContext) serviceCtx.getParent(); if (parent != null) { - ((CreateServiceContextCommand) cmd).setServiceGroupContextId(parent.getId()); + cmd.setServiceGroupContextId(parent.getId()); } //TODO: check impl cmd.setServiceGroupName(serviceCtx.getGroupName()); Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/PropertyUpdater.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/PropertyUpdater.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/PropertyUpdater.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/PropertyUpdater.java Wed May 23 05:48:25 2007 @@ -17,6 +17,8 @@ import org.apache.axis2.context.AbstractContext; import org.apache.axis2.context.PropertyDifference; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.io.Serializable; import java.util.Iterator; @@ -26,11 +28,12 @@ * */ public class PropertyUpdater implements Serializable { + private static final Log log = LogFactory.getLog(PropertyUpdater.class); private Map properties; public void updateProperties(AbstractContext abstractContext) { - System.err.println("----- updating props in " + abstractContext); + log.debug("Updating props in " + abstractContext); for (Iterator iter = properties.keySet().iterator(); iter.hasNext();) { String key = (String) iter.next(); PropertyDifference propDiff = @@ -39,7 +42,8 @@ abstractContext.removePropertyNonReplicable(key); } else { // it is updated/added abstractContext.setNonReplicableProperty(key, propDiff.getValue()); - System.err.println("........ added prop=" + key + ", value="+ propDiff.getValue() + " to context " + abstractContext); + log.debug("Added prop=" + key + ", value="+ propDiff.getValue() + + " to context " + abstractContext); } } } Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceContextCommand.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceContextCommand.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceContextCommand.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceContextCommand.java Wed May 23 05:48:25 2007 @@ -26,18 +26,8 @@ * */ public class CreateServiceContextCommand extends ServiceContextCommand { - private String serviceGroupContextId; public void execute(ConfigurationContext configurationContext) throws ClusteringFault { - /*AxisService axisService = - configurationContext.getAxisConfiguration(). - getService(message.getContextID()); - ServiceGroupContext sgCtx = - configurationContext.getServiceGroupContext(message.getParentContextID()); - // This will create service context if one is not available - sgCtx.getServiceContext(axisService);*/ - - // TODO: Implementation ServiceGroupContext sgCtx = configurationContext.getServiceGroupContext(serviceGroupContextId); AxisService axisService; @@ -67,10 +57,6 @@ } catch (AxisFault axisFault) { throw new ClusteringFault(axisFault); } - } - - public void setServiceGroupContextId(String serviceGroupContextId) { - this.serviceGroupContextId = serviceGroupContextId; } public int getCommandType() { Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceGroupContextCommand.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceGroupContextCommand.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceGroupContextCommand.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/CreateServiceGroupContextCommand.java Wed May 23 05:48:25 2007 @@ -43,7 +43,6 @@ } public void setServiceGroupContextId(String serviceGroupContextId) { - System.err.println("$$$$$$$$$$$$$$$ set sg ctx ID=" + serviceGroupContextId); this.serviceGroupContextId = serviceGroupContextId; } } Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/ServiceContextCommand.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/ServiceContextCommand.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/ServiceContextCommand.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/ServiceContextCommand.java Wed May 23 05:48:25 2007 @@ -22,6 +22,7 @@ */ public abstract class ServiceContextCommand extends ContextClusteringCommand { protected String serviceGroupName; + protected String serviceGroupContextId; protected String serviceName; public void setServiceGroupName(String serviceGroupName) { @@ -30,5 +31,9 @@ public void setServiceName(String serviceName) { this.serviceName = serviceName; + } + + public void setServiceGroupContextId(String serviceGroupContextId) { + this.serviceGroupContextId = serviceGroupContextId; } } Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceContextCommand.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceContextCommand.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceContextCommand.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceContextCommand.java Wed May 23 05:48:25 2007 @@ -20,6 +20,11 @@ import org.apache.axis2.context.ConfigurationContext; import org.apache.axis2.context.PropertyDifference; import org.apache.axis2.context.ServiceGroupContext; +import org.apache.axis2.context.ServiceContext; +import org.apache.axis2.description.AxisService; +import org.apache.axis2.AxisFault; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import java.util.HashMap; @@ -29,41 +34,22 @@ public class UpdateServiceContextCommand extends ServiceContextCommand implements UpdateContextCommand { + private static final Log log = LogFactory.getLog(UpdateServiceContextCommand.class); + private PropertyUpdater propertyUpdater = new PropertyUpdater(); public void execute(ConfigurationContext configurationContext) throws ClusteringFault { - //TODO: Impl - - /*ServiceGroupContext srvGrpCtx = configurationContext.getServiceGroupContext - (event.getParentContextID()); - Iterator iter = srvGrpCtx.getServiceContexts(); - String serviceCtxName = event.getDescriptionID(); - ServiceContext serviceContext = null; - while (iter.hasNext()) { - ServiceContext serviceContext2 = (ServiceContext) iter.next(); - if (serviceContext2.getName() != null - && serviceContext2.getName().equals(serviceCtxName)) { - serviceContext = serviceContext2; - } + log.debug("Updating service context properties..."); + ServiceGroupContext sgCtx = + configurationContext.getServiceGroupContext(serviceGroupContextId); + try { + AxisService axisService = + configurationContext.getAxisConfiguration().getService(serviceName); + ServiceContext serviceContext = sgCtx.getServiceContext(axisService, false); + propertyUpdater.updateProperties(serviceContext); + } catch (AxisFault e) { + throw new ClusteringFault(e); } - - if (serviceContext != null) { - - Map srvProps = updater.getServiceProps(event.getParentContextID(), event.getContextID()); - - if (srvProps != null) { - serviceContext.setProperties(srvProps); - } - - } else { - String message = "Cannot find the ServiceContext with the ID:" + serviceCtxName; - log.error(message); - }*/ - - //TODO: Get the service context -// ServiceGroupContext sgCtx = -// configurationContext.getServiceGroupContext(serviceGroupContextId); -// propertyUpdater.updateProperties(sgCtx); } public boolean isPropertiesEmpty() { Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceGroupContextCommand.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceGroupContextCommand.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceGroupContextCommand.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/context/commands/UpdateServiceGroupContextCommand.java Wed May 23 05:48:25 2007 @@ -34,8 +34,6 @@ public void execute(ConfigurationContext configurationContext) throws ClusteringFault { ServiceGroupContext sgCtx = configurationContext.getServiceGroupContext(serviceGroupContextId); - System.err.println("%%%%% serviceGroupContextId=" + serviceGroupContextId); - System.err.println("####### sgCtx=" + sgCtx); propertyUpdater.updateProperties(sgCtx); } Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/handlers/ReplicationHandler.java Wed May 23 05:48:25 2007 @@ -40,9 +40,7 @@ public void flowComplete(MessageContext msgContext) { try { - System.err.println("############ Going to replicate state on flow complete"); replicateState(msgContext); - System.err.println("########### Replicated state "); } catch (Exception e) { String message = "Could not replicate the state"; log.error(message, e); Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java (original) +++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/ChannelListener.java Wed May 23 05:48:25 2007 @@ -29,12 +29,11 @@ public class ChannelListener implements org.apache.catalina.tribes.ChannelListener { - + private static final Log log = LogFactory.getLog(ChannelListener.class); + private DefaultContextManager contextManager = null; private DefaultConfigurationManager configurationManager = null; - private static final Log log = LogFactory.getLog(ChannelListener.class); - public ChannelListener(DefaultConfigurationManager configurationManager, DefaultContextManager contextManager) { this.configurationManager = configurationManager; @@ -54,7 +53,7 @@ } public void messageReceived(Serializable msg, Member sender) { - System.err.println("####### Message received " + msg); + log.debug("Message received : " + msg); if (msg instanceof ContextClusteringCommand) { try { ContextClusteringCommand comMsg = (ContextClusteringCommand) msg; Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java?view=diff&rev=540941&r1=540940&r2=540941 ============================================================================== --- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java (original) +++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Wed May 23 05:48:25 2007 @@ -50,7 +50,7 @@ */ private final Map operationContextMap = new HashMap(); private Hashtable serviceGroupContextMap = new Hashtable(); - private Hashtable applicationSessionServiceGroupContextTable = new Hashtable(); + private Hashtable applicationSessionServiceGroupContexts = new Hashtable(); private AxisConfiguration axisConfiguration; private ThreadFactory threadPool; //To keep TransportManager instance @@ -137,7 +137,7 @@ String serviceGroupName = ((AxisServiceGroup) axisService.getParent()).getServiceGroupName(); serviceGroupContext = - (ServiceGroupContext) applicationSessionServiceGroupContextTable.get( + (ServiceGroupContext) applicationSessionServiceGroupContexts.get( serviceGroupName); if (serviceGroupContext == null) { AxisServiceGroup axisServiceGroup = messageContext.getAxisServiceGroup(); @@ -147,7 +147,7 @@ } ConfigurationContext cfgCtx = messageContext.getConfigurationContext(); serviceGroupContext = cfgCtx.createServiceGroupContext(axisServiceGroup); - applicationSessionServiceGroupContextTable + applicationSessionServiceGroupContexts .put(serviceGroupName, serviceGroupContext); ClusterManager clusterManager = this.getAxisConfiguration().getClusterManager(); @@ -159,16 +159,23 @@ } } messageContext.setServiceGroupContext(serviceGroupContext); - messageContext.setServiceContext( - serviceGroupContext.getServiceContext(axisService)); + messageContext.setServiceContext(serviceGroupContext.getServiceContext(axisService)); } else if (Constants.SCOPE_SOAP_SESSION.equals(scope)) { String serviceGroupContextId = messageContext.getServiceGroupContextId(); if (serviceGroupContextId != null) { - serviceGroupContext = getServiceGroupContextFromSoapSessionTable( - serviceGroupContextId, messageContext); + serviceGroupContext = + getServiceGroupContextFromSoapSessionTable(serviceGroupContextId, + messageContext); if (serviceGroupContext == null) { - throw new AxisFault("Unable to find corresponding context" + - " for the serviceGroupId: " + serviceGroupContextId); + + // TODO: Adding this code so that requests to services deployed in soapsession scope will work + // TODO: However, soapsession functionality is still broken + serviceGroupContext = new ServiceGroupContext(this, + (AxisServiceGroup) axisService.getParent()); + serviceGroupContext.setId(serviceGroupContextId); + registerServiceGroupContextintoSoapSessionTable(serviceGroupContext); +// throw new AxisFault("Unable to find corresponding context" + +// " for the serviceGroupId: " + serviceGroupContextId); } } else { AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent(); @@ -185,13 +192,11 @@ contextManager.addContext(serviceGroupContext); } } - messageContext.setServiceGroupContextId(serviceGroupContextId); registerServiceGroupContextintoSoapSessionTable(serviceGroupContext); } messageContext.setServiceGroupContext(serviceGroupContext); - messageContext.setServiceContext( - serviceGroupContext.getServiceContext(axisService)); + messageContext.setServiceContext(serviceGroupContext.getServiceContext(axisService)); } else if (Constants.SCOPE_REQUEST.equals(scope)) { AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent(); serviceGroupContext = createServiceGroupContext(axisServiceGroup); @@ -237,7 +242,8 @@ } } - public void registerServiceGroupContextintoSoapSessionTable(ServiceGroupContext serviceGroupContext) { + public void registerServiceGroupContextintoSoapSessionTable( + ServiceGroupContext serviceGroupContext) { String id = serviceGroupContext.getId(); serviceGroupContextMap.put(id, serviceGroupContext); serviceGroupContext.touch(); @@ -248,10 +254,10 @@ public void addServiceGroupContextintoApplicatoionScopeTable( ServiceGroupContext serviceGroupContext) { - if (applicationSessionServiceGroupContextTable == null) { - applicationSessionServiceGroupContextTable = new Hashtable(); + if (applicationSessionServiceGroupContexts == null) { + applicationSessionServiceGroupContexts = new Hashtable(); } - applicationSessionServiceGroupContextTable.put( + applicationSessionServiceGroupContexts.put( serviceGroupContext.getDescription().getServiceGroupName(), serviceGroupContext); } @@ -339,7 +345,9 @@ * @param contextListener a ContextListener */ public void registerContextListener(ContextListener contextListener) { - if (contextListeners == null) contextListeners = new ArrayList(); + if (contextListeners == null) { + contextListeners = new ArrayList(); + } contextListeners.add(contextListener); } @@ -349,16 +357,18 @@ * @param context the just-created subcontext */ void contextCreated(AbstractContext context) { - if (contextListeners == null) return; + if (contextListeners == null) { + return; + } for (Iterator i = contextListeners.iterator(); i.hasNext();) { - ContextListener listener = (ContextListener)i.next(); + ContextListener listener = (ContextListener) i.next(); listener.contextCreated(context); } } /** * Create a MessageContext, and notify any registered ContextListener. - * + * * @return a new MessageContext */ public MessageContext createMessageContext() { @@ -411,12 +421,12 @@ * Returns a ServiceGroupContext object associated * with the specified ID from the internal table. * - * @param Id The ID string associated with the ServiceGroupContext object + * @param serviceGroupCtxId The ID string associated with the ServiceGroupContext object * @return The ServiceGroupContext object, or null if not found */ - public ServiceGroupContext getServiceGroupContext(String Id) { + public ServiceGroupContext getServiceGroupContext(String serviceGroupCtxId) { - if (Id == null) { + if (serviceGroupCtxId == null) { // Hashtables require non-null key-value pairs return null; } @@ -424,12 +434,19 @@ ServiceGroupContext serviceGroupContext = null; if (serviceGroupContextMap != null) { - serviceGroupContext = (ServiceGroupContext) serviceGroupContextMap.get(Id); + serviceGroupContext = (ServiceGroupContext) serviceGroupContextMap.get(serviceGroupCtxId); if (serviceGroupContext != null) { serviceGroupContext.touch(); + } else { + serviceGroupContext = + (ServiceGroupContext) applicationSessionServiceGroupContexts.get(serviceGroupCtxId); + if (serviceGroupContext != null) { + serviceGroupContext.touch(); + } } } + return serviceGroupContext; } @@ -516,16 +533,16 @@ } public void cleanupContexts() { - if ((applicationSessionServiceGroupContextTable != null) && - (applicationSessionServiceGroupContextTable.size() > 0)) { + if ((applicationSessionServiceGroupContexts != null) && + (applicationSessionServiceGroupContexts.size() > 0)) { Iterator applicationScopeSgs = - applicationSessionServiceGroupContextTable.values().iterator(); + applicationSessionServiceGroupContexts.values().iterator(); while (applicationScopeSgs.hasNext()) { ServiceGroupContext serviceGroupContext = (ServiceGroupContext) applicationScopeSgs.next(); cleanupServiceContexts(serviceGroupContext); } - applicationSessionServiceGroupContextTable.clear(); + applicationSessionServiceGroupContexts.clear(); } if ((serviceGroupContextMap != null) && (serviceGroupContextMap.size() > 0)) { Iterator sopaSessionSgs = serviceGroupContextMap.values().iterator(); @@ -607,7 +624,7 @@ public void removeServiceGroupContext(AxisServiceGroup serviceGroup) { if (serviceGroup != null) { - Object obj = applicationSessionServiceGroupContextTable.get( + Object obj = applicationSessionServiceGroupContexts.get( serviceGroup.getServiceGroupName()); if (obj == null) { ArrayList toBeRemovedList = new ArrayList(); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]