Author: upul
Date: Thu Nov 29 19:14:36 2007
New Revision: 599687
URL: http://svn.apache.org/viewvc?rev=599687&view=rev
Log:
added feature pinning task to server instance with config element pinnedServers
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
Thu Nov 29 19:14:36 2007
@@ -104,9 +104,9 @@
sandesha2.init(configurationContext, sandeshaAxisModule);
}
- // this server name given by system property SynapseServerName
+ // this server name is given by system property SynapseServerName
// otherwise take host-name
- // else assume localhost
+ // if nothing found assume localhost
String thisServerName =
System.getProperty(SynapseConstants.SYNAPSE_SERVER_NAME);
if(thisServerName == null || thisServerName.equals("")) {
try {
@@ -128,9 +128,9 @@
while (iter.hasNext()) {
ProxyService proxy = (ProxyService) iter.next();
- // start proxy service if,
+ // start proxy service if either,
// pinned server name list is empty
- // else pinned server list has this server name
+ // or pinned server list has this server name
List pinnedServers = proxy.getPinnedServers();
if(pinnedServers != null && !pinnedServers.isEmpty()) {
if(!pinnedServers.contains(thisServerName)) {
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
Thu Nov 29 19:14:36 2007
@@ -19,7 +19,10 @@
package org.apache.synapse.startup.quartz;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.HashSet;
+import java.util.List;
import java.util.Random;
import java.util.Set;
@@ -29,6 +32,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
import org.apache.synapse.startup.AbstractStartup;
import org.quartz.CronTrigger;
@@ -56,6 +60,7 @@
private int repeatCount = -1;
private long repeatInterval;
private String className;
+ private List pinnedServers;
private Scheduler sch;
Set xmlProperties = new HashSet();
@@ -76,6 +81,37 @@
public void init(SynapseEnvironment synapseEnvironment) {
+ // this server name given by system property SynapseServerName
+ // otherwise take host-name
+ // else assume localhost
+ String thisServerName =
System.getProperty(SynapseConstants.SYNAPSE_SERVER_NAME);
+ if(thisServerName == null || thisServerName.equals("")) {
+ try {
+ InetAddress addr = InetAddress.getLocalHost();
+ thisServerName = addr.getHostName();
+
+ } catch (UnknownHostException e) {
+ log.warn("Could not get local host name", e);
+ }
+
+ if(thisServerName == null || thisServerName.equals("")) {
+ thisServerName = "localhost";
+ }
+ }
+ log.debug("Synapse server name : " + thisServerName);
+
+ // start proxy service if either,
+ // pinned server name list is empty
+ // or pinned server list has this server name
+ List pinnedServers = getPinnedServers();
+ if(pinnedServers != null && !pinnedServers.isEmpty()) {
+ if(!pinnedServers.contains(thisServerName)) {
+ log.info("Server name not in pinned servers list. Not starting
Task : " + getName());
+ return;
+ }
+ }
+
+
try {
DirectSchedulerFactory.getInstance().createVolatileScheduler(THREADPOOLSIZE);
sch = DirectSchedulerFactory.getInstance().getScheduler();
@@ -162,6 +198,14 @@
public String getCron() {
return cron;
+ }
+
+ public List getPinnedServers() {
+ return pinnedServers;
+ }
+
+ public void setPinnedServers(List pinnedServers) {
+ this.pinnedServers = pinnedServers;
}
}
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
Thu Nov 29 19:14:36 2007
@@ -19,7 +19,10 @@
package org.apache.synapse.startup.quartz;
+import java.util.ArrayList;
import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
import javax.xml.namespace.QName;
@@ -85,6 +88,25 @@
q.setJobClass(classname);
} else {
handleException("Syntax error in the Task : no task class
specified");
+ }
+
+ // set pinned server list
+ OMAttribute pinnedServers = el.getAttribute(new
QName(XMLConfigConstants.NULL_NAMESPACE, "pinnedServers"));
+ if (pinnedServers != null) {
+ String pinnedServersValue = pinnedServers.getAttributeValue();
+ if (pinnedServersValue == null) {
+ // default to all servers
+ } else {
+ StringTokenizer st = new
StringTokenizer(pinnedServersValue, " ,");
+ List pinnedServersList = new ArrayList();
+ while (st.hasMoreTokens()) {
+ String token = st.nextToken();
+ if (token.length() != 0) {
+ pinnedServersList.add(token);
+ }
+ }
+ q.setPinnedServers(pinnedServersList);
+ }
}
// next sort out the property children
Modified:
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
---
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
(original)
+++
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
Thu Nov 29 19:14:36 2007
@@ -19,6 +19,8 @@
package org.apache.synapse.startup.quartz;
+import java.util.List;
+
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
@@ -53,6 +55,15 @@
task.addAttribute("name", sq.getName(), nullNS);
task.addAttribute("class", sq.getJobClass(), nullNS);
+ List pinnedServers = sq.getPinnedServers();
+ if (pinnedServers != null && !pinnedServers.isEmpty()) {
+ String pinnedServersStr = "" + pinnedServers.get(0);
+ for (int i = 1; i < pinnedServers.size(); i++) {
+ pinnedServersStr = pinnedServersStr + " " + pinnedServers.get(i);
+ }
+ task.addAttribute(fac.createOMAttribute("pinnedServers", nullNS,
pinnedServersStr));
+ }
+
OMElement el = fac.createOMElement("trigger", synNS, task);
if (sq.getInterval() == 1 && sq.getCount() == 1) {
el.addAttribute("once", "true", nullNS);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]