incubator-wadi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bdud...@apache.org
Subject svn commit: r356933 [28/35] - in /incubator/wadi/trunk: ./ etc/ modules/ modules/assembly/ modules/assembly/src/ modules/assembly/src/bin/ modules/assembly/src/conf/ modules/assembly/src/main/ modules/assembly/src/main/assembly/ modules/core/ modules/c...
Date Wed, 14 Dec 2005 23:36:16 GMT
Added: incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/wadi-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/wadi-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/wadi-web.xml (added)
+++ incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/wadi-web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,453 @@
+<?xml version="1.0"  encoding="ISO-8859-1"?>
+
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+
+<!--
+  Three Beans have already been created as part of the contract between WADI and Spring:
+
+    SessionFactory, SessionWrapperFactory
+
+  This is so because these three types need to be parameterised according to within which
+  WebContainer we are running...
+-->
+
+  <bean
+    id="SessionPool"
+    class="org.codehaus.wadi.impl.SimpleSessionPool"
+    >
+    <constructor-arg><ref bean="SessionFactory"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="AttributesFactory"
+    class="org.codehaus.wadi.impl.DistributableAttributesFactory"
+    >
+  </bean>
+
+  <bean
+    id="ValueFactory"
+    class="org.codehaus.wadi.impl.DistributableValueFactory"
+    >
+  </bean>
+
+  <bean
+    id="ValuePool"
+    class="org.codehaus.wadi.impl.SimpleValuePool"
+    >
+    <constructor-arg><ref bean="ValueFactory"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="SessionIdFactory"
+    class="org.codehaus.wadi.impl.TomcatSessionIdFactory"
+    >
+  </bean>
+
+  <bean
+    id="AttributeStreamer"
+    class="org.codehaus.wadi.impl.SimpleStreamer"
+    >
+  </bean>
+
+  <!-- the Contextualiser stack...(shorthand for now) -->
+
+  <bean
+    id="MemoryMap"
+    class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+    >
+  </bean>
+
+  <bean
+    id="DatabaseURL"
+    class="java.lang.String"
+    >
+    <constructor-arg><value>jdbc:axiondb:WADI</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="DataSource"
+    class="org.axiondb.jdbc.AxionDataSource"
+    >
+    <constructor-arg><ref bean="DatabaseURL"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="ContextPool"
+    class="org.codehaus.wadi.impl.SessionToContextPoolAdapter"
+    >
+    <constructor-arg><ref bean="SessionPool"/></constructor-arg>
+  </bean>
+
+<!--
+  <bean
+    id="Relocater"
+    class="org.codehaus.wadi.impl.MessagingMigratingRelocater"
+    >
+    <constructor-arg type="long" index="0"><value>5000</value></constructor-arg>
+    <constructor-arg type="long" index="1"><value>1000</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="Relocater"
+    class="org.codehaus.wadi.impl.ProxyingRelocater"
+    >
+    <constructor-arg type="long" index="0"><value>5000</value></constructor-arg>
+    <constructor-arg type="long" index="1"><value>5000</value></constructor-arg>
+  </bean>
+-->
+
+  <bean
+    id="Relocater"
+    class="org.codehaus.wadi.impl.HybridRelocater"
+    >
+    <constructor-arg type="long" index="0"><value>5000</value></constructor-arg>
+    <constructor-arg type="long" index="1"><value>5000</value></constructor-arg>
+    <constructor-arg type="boolean" index="2"><value>true</value></constructor-arg><!-- relocate session, not request, if possible -->
+  </bean>
+
+  <!-- the contextualiser stack -->
+
+  <bean
+    id="SessionStreamer"
+    class="org.codehaus.wadi.impl.SimpleStreamer"
+    >
+  </bean>
+
+<!--
+  <bean
+    id="Collapser"
+    class="org.codehaus.wadi.impl.DebugCollapser"
+    >
+  </bean>
+-->
+
+  <bean
+    id="Collapser"
+    class="org.codehaus.wadi.impl.HashingCollapser"
+    >
+    <constructor-arg type="int"><value>1024</value></constructor-arg>
+    <constructor-arg type="long"><value>10000</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="DummyContextualiser"
+    class="org.codehaus.wadi.impl.DummyContextualiser"
+    >
+  </bean>
+
+  <bean
+    id="DatabaseStore"
+    class="org.codehaus.wadi.impl.DatabaseStore"
+    >
+    <constructor-arg><ref bean="DatabaseURL"/></constructor-arg>
+    <constructor-arg><ref bean="DataSource"/></constructor-arg>
+    <constructor-arg><value>SESSIONS</value></constructor-arg>
+    <constructor-arg type="boolean"><value>false</value></constructor-arg>
+    <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- reusingStore -->
+    <constructor-arg type="boolean"><value>true</value></constructor-arg><!-- build -->
+  </bean>
+
+  <bean
+    id="DatabaseContextualiser"
+    class="org.codehaus.wadi.impl.SharedStoreContextualiser"
+    >
+    <constructor-arg><ref bean="DummyContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="Collapser"/></constructor-arg>
+    <constructor-arg type="boolean"><value>true</value></constructor-arg>
+    <constructor-arg><ref bean="DatabaseStore"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="ClusterContextualiser"
+    class="org.codehaus.wadi.impl.ClusterContextualiser"
+    >
+    <constructor-arg><ref bean="DatabaseContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="Collapser"/></constructor-arg>
+    <constructor-arg><ref bean="Relocater"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="StatelessMethods"
+    class="java.util.regex.Pattern"
+    factory-method="compile"
+    >
+    <constructor-arg><value>GET|POST</value></constructor-arg>
+    <constructor-arg type="int"><value>2</value></constructor-arg><!--  Pattern.CASE_INSENSITIVE -->
+  </bean>
+
+  <bean
+    id="StatelessURIs"
+    class="java.util.regex.Pattern"
+    factory-method="compile"
+    >
+    <constructor-arg><value>.*\\.(JPG|JPEG|GIF|PNG|ICO|HTML|HTM)(|;jsessionid=.*)</value></constructor-arg>
+    <constructor-arg type="int"><value>2</value></constructor-arg><!--  Pattern.CASE_INSENSITIVE -->
+  </bean>
+
+  <bean
+    id="StatelessContextualiser"
+    class="org.codehaus.wadi.impl.StatelessContextualiser"
+    >
+    <constructor-arg><ref bean="ClusterContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="StatelessMethods"/></constructor-arg>
+    <constructor-arg type="boolean"><value>true</value></constructor-arg>
+    <constructor-arg><ref bean="StatelessURIs"/></constructor-arg>
+    <constructor-arg type="boolean"><value>false</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="TmpDirectory"
+    class="java.io.File"
+    >
+    <constructor-arg><value>${java.io.tmpdir}</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="DiscDirectory"
+    class="java.io.File"
+    >
+    <constructor-arg><ref bean="TmpDirectory"/></constructor-arg>
+    <constructor-arg><value>sessions</value></constructor-arg>
+  </bean>
+
+<!--
+        dir.delete();
+        dir.mkdir();
+-->
+
+  <bean
+    id="DiscEvicter"
+    class="org.codehaus.wadi.impl.NeverEvicter"
+    >
+    <constructor-arg type="int"><value>20</value></constructor-arg><!-- sweep interval (millis) -->
+    <constructor-arg type="boolean"><value>true</value></constructor-arg><!-- strict ordering -->
+  </bean> <!-- sessions never pass below this point, unless the node is shutdown -->
+
+  <bean
+    id="DiscMap"
+    class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+    >
+  </bean>
+
+  <bean
+    id="DiscContextualiser"
+    class="org.codehaus.wadi.impl.ExclusiveStoreContextualiser"
+    >
+    <constructor-arg><ref bean="StatelessContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="Collapser"/></constructor-arg>
+    <constructor-arg type="boolean"><value>true</value></constructor-arg>
+    <constructor-arg><ref bean="DiscEvicter"/></constructor-arg>
+    <constructor-arg><ref bean="DiscMap"/></constructor-arg>
+    <constructor-arg><ref bean="SessionStreamer"/></constructor-arg>
+    <constructor-arg><ref bean="DiscDirectory"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="SerialContextualiser"
+    class="org.codehaus.wadi.impl.SerialContextualiser"
+    >
+    <constructor-arg><ref bean="DiscContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="Collapser"/></constructor-arg>
+    <constructor-arg><ref bean="MemoryMap"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="MemoryEvicter"
+    class="org.codehaus.wadi.impl.AbsoluteEvicter"
+    >
+    <constructor-arg type="int"><value>10</value></constructor-arg> <!-- sweep interval (secs) -->
+    <constructor-arg type="boolean"><value>true</value></constructor-arg> <!-- strict ordering -->
+    <constructor-arg type="int"><value>10</value></constructor-arg> <!-- inactivity interval (secs) -->
+  </bean>
+
+  <bean
+    id="RequestPool"
+    class="org.codehaus.wadi.impl.DummyStatefulHttpServletRequestWrapperPool"
+    >
+  </bean>
+
+  <bean
+    id="MemoryContextualiser"
+    class="org.codehaus.wadi.impl.MemoryContextualiser"
+    >
+    <constructor-arg><ref bean="SerialContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="MemoryEvicter"/></constructor-arg>
+    <constructor-arg><ref bean="MemoryMap"/></constructor-arg>
+    <constructor-arg><ref bean="SessionStreamer"/></constructor-arg>
+    <constructor-arg><ref bean="ContextPool"/></constructor-arg>
+    <constructor-arg><ref bean="RequestPool"/></constructor-arg>
+  </bean>
+
+
+  <!-- the Router (load-balancer integration) -->
+
+<!--
+  <bean
+    id="Router"
+    class="org.codehaus.wadi.impl.JkRouter"
+    >
+    <constructor-arg><value>${node.name}</value></constructor-arg>
+  </bean>
+-->
+
+  <bean
+    id="Router"
+    class="org.codehaus.wadi.impl.DummyRouter"
+    >
+  </bean>
+
+  <!-- other stuff... -->
+
+  <bean
+    id="HttpProxy"
+    class="org.codehaus.wadi.impl.StandardHttpProxy"
+    >
+    <constructor-arg><value>jsessionid</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="NumPartitions"
+    class="java.lang.Integer"
+    >
+    <constructor-arg><value>72</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="ReplicaterFactory"
+    class="org.codehaus.wadi.impl.MemoryReplicaterFactory"
+    >
+    <constructor-arg><ref bean="NumPartitions"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="LocalHost"
+    class="java.net.InetAddress"
+    factory-method="getLocalHost"
+    >
+  </bean>
+
+  <bean
+    id="HttpAddress"
+    class="java.net.InetSocketAddress"
+    >
+    <constructor-arg><ref bean="LocalHost"/></constructor-arg>
+    <constructor-arg type="int"><value>${http.port}</value></constructor-arg>
+  </bean>
+
+  <bean
+    id="ProxiedLocation"
+    class="org.codehaus.wadi.http.HTTPProxiedLocation"
+    >
+    <constructor-arg><ref bean="HttpAddress"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="PartitionManager"
+    class="org.codehaus.wadi.gridstate.impl.DummyPartitionManager"
+    >
+    <constructor-arg><ref bean="NumPartitions"/></constructor-arg>
+  </bean>
+
+  <bean
+    id="Dispatcher"
+    class="org.codehaus.wadi.gridstate.activecluster.ActiveClusterDispatcher"
+    >
+    <constructor-arg><value>${node.name}</value></constructor-arg>
+    <constructor-arg><value>CLUSTER0</value></constructor-arg>
+<!--
+    <constructor-arg><value>peer://org.codehaus.wadi</value></constructor-arg>
+ -->
+    <constructor-arg><value>tcp://localhost:61616</value></constructor-arg>
+    <constructor-arg type="long"><value>5000</value></constructor-arg>
+  </bean>
+
+  <!-- and finally - the SessionManager itself -->
+
+  <bean
+    id="SessionManager"
+    class="org.codehaus.wadi.impl.ClusteredManager"
+    >
+    <constructor-arg><ref bean="SessionPool"/></constructor-arg>
+    <constructor-arg><ref bean="AttributesFactory"/></constructor-arg>
+    <constructor-arg><ref bean="ValuePool"/></constructor-arg>
+    <constructor-arg><ref bean="SessionWrapperFactory"/></constructor-arg>
+    <constructor-arg><ref bean="SessionIdFactory"/></constructor-arg>
+    <constructor-arg><ref bean="MemoryContextualiser"/></constructor-arg>
+    <constructor-arg><ref bean="MemoryMap"/></constructor-arg>
+    <constructor-arg><ref bean="Router"/></constructor-arg>
+    <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- errorIfSessionNotAcquired -->
+    <constructor-arg><ref bean="AttributeStreamer"/></constructor-arg>
+    <constructor-arg type="boolean"><value>true</value></constructor-arg>
+    <constructor-arg><ref bean="ReplicaterFactory"/></constructor-arg>
+    <constructor-arg><ref bean="ProxiedLocation"/></constructor-arg>
+    <constructor-arg><ref bean="HttpProxy"/></constructor-arg>
+    <constructor-arg><ref bean="Dispatcher"/></constructor-arg>
+    <constructor-arg><ref bean="PartitionManager"/></constructor-arg>
+    <constructor-arg><ref bean="Collapser"/></constructor-arg>
+  </bean>
+
+
+<!-- JMX support -->
+
+  <!--
+  This allows introspection via e.g mc4j (http://mc4j.sourceforge.net) on a running WADI system.
+
+  If you are using Tomcat 5.0.28, you will need to remove bin/jmx.jar,
+  d/l mx4j-3.0.1 and place mx4j-tools.jar and mx4j-remote.jar into
+  server/lib/.
+
+  If you do not require JMX support, feel free to comment out this section.
+
+  For further information please view the Spring JMX integration documentation.
+  -->
+
+  <!--
+  This will create a new MBeanServer unless one already exists, in which case it will be reused.
+  -->
+  <bean id="mbeanServer" class="org.codehaus.wadi.impl.MBeanServerFactoryBean"/>
+
+  <!--
+  This will register the beans mentioned in its 'beans' map with the MBeanServer.
+  -->
+  <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
+    <property name="beans">
+      <map>
+        <entry key="WADI:name=SessionManager"> <ref bean="SessionManager"/> </entry>
+        <entry key="WADI:name=MemoryContextualiser"> <ref bean="MemoryContextualiser"/> </entry>
+        <entry key="WADI:name=DiscContextualiser"> <ref bean="DiscContextualiser"/> </entry>
+        <entry key="WADI:name=ClusterContextualiser"> <ref bean="ClusterContextualiser"/> </entry>
+        <entry key="WADI:name=Router"> <ref bean="Router"/> </entry>
+        <entry key="WADI:name=HttpProxy"> <ref bean="HttpProxy"/> </entry>
+        <entry key="WADI:name=ProxiedLocation"> <ref bean="ProxiedLocation"/> </entry>
+        <entry key="WADI:name=Relocater"> <ref bean="Relocater"/> </entry>
+        <entry key="WADI:name=SessionIdFactory"> <ref bean="SessionIdFactory"/> </entry>
+      </map>
+    </property>
+    <property name="server" ref="mbeanServer"/>
+    <property name="registrationBehavior"><value>2</value></property> <!-- REGISTRATION_REPLACE_EXISTING -->
+  </bean>
+
+  <!--
+  if you are running your own jndi registry, you may comment this out
+  (untested)
+  <bean id="registry" class="java.rmi.registry.LocateRegistry" factory-method="createRegistry">
+    <constructor-arg value="${jndi.port}"/>
+  </bean>
+  -->
+
+  <!--
+  if you are running your own jmx remote connector, you may comment this out
+  you will also need to remove the reference to 'serverConnector' in the 'exporter' bean definition.
+  (untested)
+  <bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean" depends-on="registry">
+    <property name="objectName" value="connector:name=rmi"/>
+    <property name="serviceUrl" value="service:jmx:rmi://localhost/jndi/rmi://localhost:${jndi.port}/wadi"/>
+    <property name="server"><ref local="mbeanServer"/></property>
+    <property name="threaded" value="true"/>
+    <property name="daemon" value="true"/>
+  </bean>
+  -->
+
+</beans>

Added: incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/web.xml (added)
+++ incubator/wadi/trunk/modules/webapp/src/webapp/WEB-INF/web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+
+  <distributable/>
+
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
+    <param-value>/wadi</param-value>
+    <description>create session cookies with given path</description>
+  </context-param>
+
+<!--
+  <listener>
+    <listener-class>org.codehaus.wadi.test.SessionListener</listener-class>
+  </listener>
+  <listener>
+    <listener-class>org.codehaus.wadi.test.AttributeListener</listener-class>
+  </listener>
+-->
+
+<!-- now deployed programmatically in Jetty
+  <filter>
+    <filter-name>WadiFilter</filter-name>
+    <filter-class>org.codehaus.wadi.Filter</filter-class>
+  </filter>
+-->
+
+<!-- [INSERT FRAGMENT HERE] -->
+
+<!--
+  <filter-mapping>
+    <filter-name>WadiFilter</filter-name>
+    <url-pattern>/*</url-pattern>
+  </filter-mapping>
+-->
+
+</web-app>
+
+

Added: incubator/wadi/trunk/modules/webapp/src/webapp/destroy.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/webapp/src/webapp/destroy.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/webapp/src/webapp/destroy.jsp (added)
+++ incubator/wadi/trunk/modules/webapp/src/webapp/destroy.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,28 @@
+    <%@ page language="java" contentType="text/html" session="true" %>
+      <%@ page import="java.util.Date" %>
+      <%@ page import="org.apache.commons.logging.Log" %>
+      <%@ page import="org.apache.commons.logging.LogFactory" %>
+      <%
+      Log log=LogFactory.getLog(getClass());
+      log.trace("DESTROY: "+session.getId());
+      String colour=System.getProperty("node.name");
+      %>
+      <HTML>
+	<BODY BGCOLOR="<%= colour %>">
+	  <H2>Session Destruction</H2>
+
+	  <pre>id:            <%= request.getSession(false).getId() %></pre>
+	  <pre>created:       <%= new Date(request.getSession(false).getCreationTime()) %></pre>
+	  <pre>last accessed: <%= new Date(request.getSession(false).getLastAccessedTime()) %></pre>
+
+	  <%
+	  HttpSession s=request.getSession(false);
+	  s.invalidate();
+	  %>
+
+	</BODY>
+      </HTML>
+
+    <%
+      response.setHeader("Connection", "close");
+      %>

Added: incubator/wadi/trunk/modules/webapp/src/webapp/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/webapp/src/webapp/index.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/webapp/src/webapp/index.jsp (added)
+++ incubator/wadi/trunk/modules/webapp/src/webapp/index.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,81 @@
+<%@ page language="java" contentType="text/html" session="true" %>
+<%@ page import="java.util.SortedMap" %>
+<%@ page import="java.util.TreeMap" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="java.net.URL" %>
+<%@ page import="org.codehaus.wadi.webapp.Counter" %>
+<%
+  String colour=System.getProperty("node.name");
+
+  URL tmp=new URL(request.getRequestURL().toString());
+  String url=tmp.toString();
+
+  String params="";
+
+  String limit=request.getParameter("limit");
+  int l=-1;
+  if (limit!=null) {
+    l=Integer.parseInt(limit);
+    params+=(params.length()==0?"?":"&")+"limit="+limit;
+  }
+
+  String refresh=request.getParameter("refresh");
+  if (refresh!=null) {
+    params+=(params.length()==0?"?":"&")+"refresh="+refresh;
+  }
+
+  if (params.length()>0) {
+    url+=params;
+%>
+<meta http-equiv="refresh" content="<%= refresh %>;url=<%= url %>"/>
+<%
+}
+
+url="./session.jsp?insert=false";
+
+// acquire session history
+Counter counter=null;
+SortedMap history=null;
+
+synchronized (session) {
+  if ((counter=(Counter)session.getAttribute("counter"))==null) {
+    session.setAttribute("counter", (counter=new Counter()));
+  }
+
+  if ((history=(SortedMap)session.getAttribute("history"))==null) {
+    session.setAttribute("history", (history=new TreeMap()));
+  }
+}
+
+synchronized (history) {
+
+  // add a new history item to end of queue
+  counter.increment();
+  history.put(new Integer(counter.getValue()), colour);
+  // remove an old item from the beginning if history is getting too long
+  if (l>=0 && history.size()>l) {
+    Iterator i=history.entrySet().iterator();
+    i.next();
+    i.remove();
+  }
+}
+
+%>
+
+<HTML>
+  <frameset rows="33%,33%,34%" cols="33%,33%,34%">
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+    <frame src="<%= url %>"/>
+  </frameset>
+</HTML>
+
+<%
+  response.setHeader("Connection", "close");
+%>

Added: incubator/wadi/trunk/modules/webapp/src/webapp/session.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/webapp/src/webapp/session.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/webapp/src/webapp/session.jsp (added)
+++ incubator/wadi/trunk/modules/webapp/src/webapp/session.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,122 @@
+    <%@ page language="java" contentType="text/html" session="true" %>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.SortedMap" %>
+<%@ page import="java.util.TreeMap" %>
+<%@ page import="java.util.Iterator" %>
+<%@ page import="org.codehaus.wadi.webapp.Counter" %>
+<%
+  String colour=System.getProperty("node.name");
+
+  String insert=request.getParameter("insert");
+  if (insert==null) {
+    insert="true";
+  }
+
+  String limit=request.getParameter("limit");
+  int l=-1;
+  if (limit!=null)
+  l=Integer.parseInt(limit);
+
+  String refresh=request.getParameter("refresh");
+  if (refresh!=null)
+  {
+    String url=request.getRequestURL().toString();
+    int i=url.indexOf(";jsessionid=");
+    if (i!=-1)
+    url=url.substring(0, i);
+    String id=session.getId();
+    if (id!=null)
+    url+=";jsessionid="+id;
+    url+="?refresh="+refresh;
+%>
+<meta http-equiv="refresh" content="<%= refresh %>;url=<%= url %>"/>
+<%
+}
+
+// acquire session history
+Counter counter=null;
+SortedMap history=null;
+
+synchronized (session) {
+  if ((counter=(Counter)session.getAttribute("counter"))==null) {
+    session.setAttribute("counter", (counter=new Counter()));
+  }
+
+  if ((history=(SortedMap)session.getAttribute("history"))==null) {
+    session.setAttribute("history", (history=new TreeMap()));
+  }
+}
+
+if (history.size()==0)
+System.out.println("KEY: "+session.getId()+", HISTORY: "+history+" - "+Thread.currentThread().getName());
+
+if (insert!=null && insert.equals("true")) {
+  synchronized (history) {
+
+    // add a new history item to end of queue
+    counter.increment();
+    history.put(new Integer(counter.getValue()), colour);
+    // remove an old item from the beginning if history is getting too long
+    if (l>=0 && history.size()>l) {
+      Iterator i=history.entrySet().iterator();
+      i.next();
+      i.remove();
+    }
+  }
+
+  // take our own thread-local copy
+  history=new TreeMap(history);
+}
+
+
+
+int hsize=history.size();
+int rows=1;
+int cols=1;
+
+if (hsize>1) {
+  rows=(int)Math.sqrt((double)hsize);
+  cols=hsize/rows;
+  if (cols*rows<hsize)
+    rows++;
+  }
+  %>
+
+  <HTML>
+    <BODY BGCOLOR="<%= colour %>">
+      <center>
+        <table border="2">
+          <%
+            int r=0;
+            Iterator v=history.entrySet().iterator();
+            while (r++<rows) {
+                int c=0;
+            %>
+            <tr>
+              <%
+                while (c++<cols) {
+                    Object label="";
+                    Object bg="black";
+                    if (v.hasNext()) {
+                      Map.Entry entry=(Map.Entry)v.next();
+                      label=entry.getKey();
+                      bg=entry.getValue().toString();
+                    }
+
+                %>
+                <td align="center" bgcolor="<%= bg %>" width="25" height="25"><%= label %></td>
+                <%
+                }
+                %>
+            </tr>
+            <%
+            }
+            %>
+        </table>
+      </center>
+    </BODY>
+  </HTML>
+
+  <%
+    response.setHeader("Connection", "close");
+  %>

Added: incubator/wadi/trunk/pom.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/pom.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/pom.xml (added)
+++ incubator/wadi/trunk/pom.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,546 @@
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>wadi</groupId>
+    <artifactId>wadi</artifactId>
+    <version>2.0M1</version>
+    <packaging>pom</packaging>
+    <name>WADI</name>
+    <mailingLists>
+        <mailingList>
+            <name>Development List</name>
+            <subscribe>dev-subscribe@wadi.codehaus.org</subscribe>
+            <unsubscribe>dev-unsubscribe@wadi.codehaus.org</unsubscribe>
+            <post>dev@wadi.codehaus.org</post>
+            <archive>http://archive.wadi.codehaus.org/dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>User List</name>
+            <subscribe>user-subscribe@wadi.codehaus.org</subscribe>
+            <unsubscribe>user-unsubscribe@wadi.codehaus.org</unsubscribe>
+            <post>user@wadi.codehaus.org</post>
+            <archive>http://archive.wadi.codehaus.org/user/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Commits List</name>
+            <subscribe>scm-subscribe@wadi.codehaus.org</subscribe>
+            <unsubscribe>scm-unsubscribe@wadi.codehaus.org</unsubscribe>
+            <archive>http://archive.wadi.codehaus.org/scm/</archive>
+        </mailingList>
+    </mailingLists>
+    <developers>
+        <developer>
+            <id>janb</id>
+            <name>Jan Bartel</name>
+            <email>janb@mortbay.com</email>
+            <organization>Mort Bay Consulting</organization>
+            <organizationUrl>http://www.mortbay.com</organizationUrl>
+        </developer>
+        <developer>
+            <id></id>
+            <name>Gianny Damour</name>
+            <email>gianny.damour@optusnet.com.au</email>
+            <organization></organization>
+            <organizationUrl></organizationUrl>
+        </developer>
+        <developer>
+            <id>bdudney</id>
+            <name>Bill Dudney</name>
+            <email>bdudney@codehaus.org</email>
+            <organization>Virtuas</organization>
+            <organizationUrl>http://www.virtuas.com</organizationUrl>
+        </developer>
+        <developer>
+            <id>jeff</id>
+            <name>Jeff Genender</name>
+            <email>jgenender@codehaus.org</email>
+            <organization>Virtuas</organization>
+            <organizationUrl>http://www.virtuas.com</organizationUrl>
+        </developer>
+        <developer>
+            <id>jgoodwill</id>
+            <name>James Goodwill</name>
+            <email>jgoodwill@codehaus.org</email>
+            <organization>Virtuas</organization>
+            <organizationUrl>http://www.virtuas.com</organizationUrl>
+        </developer>
+        <developer>
+            <id>jules</id>
+            <name>Jules Gosnell</name>
+            <email>jules@coredevelopers.net</email>
+            <organization>Core Developers Network</organization>
+            <organizationUrl>http://www.coredevelopers.net</organizationUrl>
+        </developer>
+        <developer>
+            <id>gianni</id>
+            <name>Gianni Scenini</name>
+            <email>gianni.scenini@gmail.com</email>
+            <organization>Quativa</organization>
+            <!--<organizationUrl>http://www.quativa.com</organizationUrl>-->
+        </developer>
+        <developer>
+            <id>bruce</id>
+            <name>Bruce Snyder</name>
+            <email>bsnyder@codehaus.org</email>
+            <organization>LogicBlaze</organization>
+            <organizationUrl>http://www.logicblaze.com</organizationUrl>
+        </developer>
+        <developer>
+            <id>gregw</id>
+            <name>Greg Wilkins</name>
+            <email>gregw@mortbay.com</email>
+            <organization>Mort Bay Consulting</organization>
+            <organizationUrl>http://www.mortbay.com</organizationUrl>
+        </developer>
+    </developers>
+
+    <contributors>
+        <contributor>
+            <name>Simone Bordet</name>
+            <email></email>
+        </contributor>
+        <contributor>
+            <name>Hiram Chirino</name>
+            <email></email>
+            <organization>LogicBlaze</organization>
+            <organizationUrl>http://www.logicblaze.com</organizationUrl>
+        </contributor>
+        <contributor>
+            <name>James Strachan</name>
+            <email></email>
+            <organization>LogicBlaze</organization>
+            <organizationUrl>http://www.logicblaze.com</organizationUrl>
+        </contributor>
+    </contributors>
+
+    <issueManagement>
+        <system>jira</system>
+        <url>http://jira.codehaus.org/browse/WADI</url>
+    </issueManagement>
+    <scm>
+        <connection>scm:cvs:pserver:anoncvs@cvs.wadi.codehaus.org:/home/projects/wadi/scm:wadi</connection>
+        <developerConnection>scm:cvs:ext:${maven.username}@cvs.wadi.codehaus.org/home/projects/wadi/scm:wadi</developerConnection>
+        <url>http://cvs.wadi.codehaus.org/wadi/</url>
+    </scm>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <distributionManagement>
+        <site>
+            <id>wadi-website</id>
+            <name>WADI Website</name>
+            <url>scpexe://beaver.codehaus.org/home/projects/wadi/public_html/</url>
+        </site>
+        <repository>
+            <id>codehaus-repo</id>
+            <name>Codehaus Repository</name>
+            <url>scpexe://beaver.codehaus.org/dist</url>
+            <layout>legacy</layout>
+        </repository>
+        <snapshotRepository>
+            <id>codehaus-snapshots</id>
+            <name>Codehaus Snapshots</name>
+            <url>scpexe://beaver.codehaus.org/dist</url>
+            <layout>legacy</layout>
+        </snapshotRepository>
+    </distributionManagement>
+    <repositories>
+        <repository>
+            <id>mortbay</id>
+            <name>Mortbay Repository on codehaus</name>
+            <url>http://www.mortbay.org/maven2/snapshot</url>
+        </repository>
+        <repository>
+            <id>central</id>
+            <name>Maven 2 Repository on ibibio</name>
+            <url>http://repo1.maven.org/maven2</url>
+        </repository>
+        <repository>
+            <id>maven1-ibiblio</id>
+            <name>Maven 1 Repository on ibibio</name>
+            <url>http://ibiblio.org/maven</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>codehaus</id>
+            <name>Codehaus Repo</name>
+            <url>http://dist.codehaus.org</url>
+            <layout>legacy</layout>
+        </repository>
+        <repository>
+            <id>jgenender</id>
+            <name>Jeff Genender's  Repository on codehaus</name>
+            <url>http://codehaus.org/~jgenender/maven2</url>
+        </repository>
+        <repository>
+            <id>snapshots</id>
+            <name>Maven Central Development Repository</name>
+            <url>http://snapshots.maven.codehaus.org/maven2</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+        </repository>
+    </repositories>
+    <pluginRepositories>
+        <pluginRepository>
+            <id>jgenender</id>
+            <name>Jeff Genender's  Repository on codehaus</name>
+            <url>http://codehaus.org/~jgenender/maven2</url>
+        </pluginRepository>
+        <pluginRepository>
+            <id>mortbay-repo</id>
+            <name>Mortbay Repository on codehaus</name>
+            <url>http://www.mortbay.org/maven2/snapshot</url>
+        </pluginRepository>
+    </pluginRepositories>
+    <modules>
+        <module>modules/core</module>
+        <module>modules/tomcat50</module>
+        <module>modules/tomcat55</module>
+        <module>modules/jetty5</module>
+        <module>modules/jetty6</module>
+        <module>modules/webapp</module>
+        <module>modules/assembly</module>
+        <module>wadi-site</module>
+    </modules>
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>ant</groupId>
+                <artifactId>ant</artifactId>
+                <version>1.6.5</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>3.8.1</version>
+                <scope>test</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>geronimo-spec</groupId>
+                <artifactId>geronimo-spec-j2ee-management</artifactId>
+                <version>1.0-rc4</version>
+            </dependency>
+
+            <dependency>
+                <groupId>geronimo-spec</groupId>
+                <artifactId>geronimo-spec-jms</artifactId>
+                <version>1.1-rc4</version>
+            </dependency>
+
+            <dependency>
+                <groupId>jcache</groupId>
+                <artifactId>jcache</artifactId>
+                <version>1.0-dev-2</version>
+            </dependency>
+
+            <!-- for axion -->
+            <dependency>
+                <groupId>commons-primitives</groupId>
+                <artifactId>commons-primitives</artifactId>
+                <version>1.0</version>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-collections</groupId>
+                <artifactId>commons-collections</artifactId>
+                <version>3.1</version>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-el</groupId>
+                <artifactId>commons-el</artifactId>
+                <version>1.0</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>commons-logging</groupId>
+                        <artifactId>commons-logging</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-logging</groupId>
+                <artifactId>commons-logging-api</artifactId>
+                <version>1.0.4</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>axion</groupId>
+                <artifactId>axion</artifactId>
+                <version>1.0-M3-dev</version>
+            </dependency>
+
+            <!-- run time -->
+
+            <dependency>
+                <groupId>commons-httpclient</groupId>
+                <artifactId>commons-httpclient</artifactId>
+                <version>2.0.2</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>commons-logging</groupId>
+                        <artifactId>commons-logging</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-el</groupId>
+                <artifactId>commons-el</artifactId>
+                <version>1.0</version>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-pool</groupId>
+                <artifactId>commons-pool</artifactId>
+                <version>1.2</version>
+            </dependency>
+
+            <dependency>
+                <groupId>commons-dbcp</groupId>
+                <artifactId>commons-dbcp</artifactId>
+                <version>1.2.1</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>jdbc</groupId>
+                        <artifactId>jdbc</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>xml-apis</groupId>
+                        <artifactId>xml-apis</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>xerces</groupId>
+                        <artifactId>xerces</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <dependency>
+                <groupId>concurrent</groupId>
+                <artifactId>concurrent</artifactId>
+                <version>1.3.4</version>
+            </dependency>
+
+            <dependency>
+                <groupId>activemq</groupId>
+                <artifactId>activemq</artifactId>
+                <!--<version>3.2</version>--> <!-- broken distro -->
+                <!--<version>3.2.1</version>--> <!-- broken distro -->
+                <!--<version>3.2-M1</version>--> <!-- works but old -->
+                <version>WADI-3.2</version>
+                <!-- version>4.0-M2</version -->
+            </dependency>
+
+            <dependency>
+                <groupId>backport-util-concurrent</groupId>
+                <artifactId>backport-util-concurrent</artifactId>
+                <version>2.0_01_pd</version>
+            </dependency>
+
+            <dependency>
+                <groupId>activecluster</groupId>
+                <artifactId>activecluster</artifactId>
+                <version>1.2-20051115174934</version>
+            </dependency>
+
+            <dependency>
+                <groupId>mx4j</groupId>
+                <artifactId>mx4j</artifactId>
+                <version>3.0.1</version>
+            </dependency>
+
+            <dependency>
+                <groupId>mx4j</groupId>
+                <artifactId>mx4j-remote</artifactId>
+                <version>3.0.1</version>
+            </dependency>
+
+            <dependency>
+                <groupId>geronimo-spec</groupId>
+                <artifactId>geronimo-spec-jsp</artifactId>
+                <version>2.0-rc4</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>geronimo-spec</groupId>
+                <artifactId>geronimo-spec-servlet</artifactId>
+                <version>2.4-rc4</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>regexp</groupId>
+                <artifactId>regexp</artifactId>
+                <version>1.3</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring</artifactId>
+                <version>1.2.5</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-support</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-core</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-orm</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-hibernate</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.springframework</groupId>
+                        <artifactId>spring-remoting</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <dependency>
+                <groupId>tomcat</groupId>
+                <artifactId>jasper-compiler</artifactId>
+                <version>5.5.12</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>tomcat</groupId>
+                <artifactId>jasper-runtime</artifactId>
+                <version>5.5.12</version>
+                <scope>provided</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-tomcat50</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-tomcat55</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-jetty5</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-jetty6</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>wadi</groupId>
+                <artifactId>wadi-webapp</artifactId>
+                <version>${project.version}</version>
+                <type>war</type>
+            </dependency>
+
+            <dependency>
+                <groupId>xerces</groupId>
+                <artifactId>xerces</artifactId>
+                <version>2.4.0</version>
+            </dependency>
+
+        </dependencies>
+
+    </dependencyManagement>
+    <build>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.wagon</groupId>
+                <artifactId>wagon-ssh-external</artifactId>
+                <version>1.0-alpha-6-SNAPSHOT</version>
+            </extension>
+        </extensions>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>jspc-maven-plugin</artifactId>
+                    <version>1.1</version>
+                    <executions>
+                        <execution>
+                            <id>jspc</id>
+                            <phase>generate-sources</phase>
+                            <goals>
+                                <goal>compile</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
+                        <inputWebXml>${basedir}/src/webapp/WEB-INF/web.xml</inputWebXml>
+                    </configuration>
+                </plugin>
+
+                <plugin>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>maven-jetty6-plugin</artifactId>
+                    <version>6.0-SNAPSHOT</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.4</source>
+                    <target>1.4</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+            </plugin>
+	    <plugin>
+	      <groupId>org.apache.maven.plugins</groupId>
+	      <artifactId>maven-clover-plugin</artifactId>
+	      <configuration>
+		<jdk>1.4</jdk>
+		<flushPolicy>threaded</flushPolicy>
+		<flushInterval>100</flushInterval>
+		<licenseFile>./clover.license</licenseFile>
+	      </configuration>
+	    </plugin>
+        </plugins>
+    </reporting>
+
+</project>

Added: incubator/wadi/trunk/svn-commit.tmp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/svn-commit.tmp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/svn-commit.tmp (added)
+++ incubator/wadi/trunk/svn-commit.tmp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,4 @@
+wadi thing
+--This line, and those below, will be ignored--
+
+A    https://svn.dudney.net/svn/repository/wadi

Added: incubator/wadi/trunk/wadi-site/.cvsignore
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/.cvsignore?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/.cvsignore (added)
+++ incubator/wadi/trunk/wadi-site/.cvsignore Wed Dec 14 15:32:56 2005
@@ -0,0 +1,5 @@
+.classpath
+.project
+.settings
+.wtpmodules
+target

Added: incubator/wadi/trunk/wadi-site/README
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/README?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/README (added)
+++ incubator/wadi/trunk/wadi-site/README Wed Dec 14 15:32:56 2005
@@ -0,0 +1,8 @@
+To build the site do the following:
+
+1.) cd to the top level wadi/ dir.
+2.) mvn site javadoc:javadoc -Dmaven.test.failure.ignore=true (takes a while)
+3.) cd to wadi-site
+4.) mvn site -Dmaven.test.failure.ignore=true
+5.) open wadi/wadi-site/target/site/index.html
+

Added: incubator/wadi/trunk/wadi-site/pom.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/pom.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/pom.xml (added)
+++ incubator/wadi/trunk/wadi-site/pom.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,37 @@
+<project>
+    <parent>
+        <groupId>wadi</groupId>
+        <artifactId>wadi</artifactId>
+        <version>2.0M1</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>wadi-site</artifactId>
+    <packaging>pom</packaging>
+    <name>WADI</name>
+    <scm>
+        <connection>scm:cvs:pserver:anoncvs@cvs.wadi.codehaus.org:/home/projects/wadi/scm:wadi</connection>
+        <developerConnection>scm:cvs:ext:${maven.username}@cvs.wadi.codehaus.org/home/projects/wadi/scm:wadi</developerConnection>
+        <url>http://cvs.wadi.codehaus.org/wadi/</url>
+    </scm>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <reportSets>
+                     <reportSet>
+                        <reports>
+                           <report>project-team</report>
+                           <report>mailing-list</report>
+                           <report>cim</report>
+                           <report>issue-tracking</report>
+                           <report>license</report>
+                           <report>scm</report>
+                        </reports>
+                     </reportSet>
+                  </reportSets>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>

Added: incubator/wadi/trunk/wadi-site/src/old_docs/BUG
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/BUG?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/src/old_docs/BUG (added)
+++ incubator/wadi/trunk/wadi-site/src/old_docs/BUG Wed Dec 14 15:32:56 2005
@@ -0,0 +1,4 @@
+DefaultCluster creates StateServiceImpl in its ctor
+StateServiceImpl sets up Timer in its ctor
+
+if DefaultCluster.start is not called in time, Timer will go off before start() is called and distribute Nodes distributed State...

Added: incubator/wadi/trunk/wadi-site/src/old_docs/DataCreationProtocol.odg
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/DataCreationProtocol.odg?rev=356933&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/wadi/trunk/wadi-site/src/old_docs/DataCreationProtocol.odg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wadi/trunk/wadi-site/src/old_docs/DataDestructionProtocol.odg
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/DataDestructionProtocol.odg?rev=356933&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/wadi/trunk/wadi-site/src/old_docs/DataDestructionProtocol.odg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wadi/trunk/wadi-site/src/old_docs/DataMigrationProtocol.odg
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/DataMigrationProtocol.odg?rev=356933&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/wadi/trunk/wadi-site/src/old_docs/DataMigrationProtocol.odg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wadi/trunk/wadi-site/src/old_docs/EffectiveWebTierClustering.sxi
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/EffectiveWebTierClustering.sxi?rev=356933&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/wadi/trunk/wadi-site/src/old_docs/EffectiveWebTierClustering.sxi
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/wadi/trunk/wadi-site/src/old_docs/FEATURES.TXT
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/FEATURES.TXT?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/src/old_docs/FEATURES.TXT (added)
+++ incubator/wadi/trunk/wadi-site/src/old_docs/FEATURES.TXT Wed Dec 14 15:32:56 2005
@@ -0,0 +1,33 @@
+
+Implemented:
+
+- Tomcat-5.2x/Jetty-5.1x
+- [Fully spec compliant distributed HttpSession manager]
+- Pluggable (in terms of length number of components and composition) Session storage stack (memory, disc, database, cluster)
+- Session promotion/demotion up/down this stack is overlapped/transaction-aware for safety
+- Pluggable Eviction strategies decide when to expire or demote sessions
+- Pluggable Streaming Strategies (simple, gzip) applied when [de]serialising sessions
+- Pluggable [de]serialisation strategies for non-Serializable Session Attributes
+- Lazy Session Attribute deserialisation and activation notification
+- Switchable Session serialisation strategies (Whole-Session, Per-Attribute)
+- Transparent peer-to-peer session redistribution upon node shutdown
+- Transparent on-demand session migration between nodes
+- Migration of passivated session on node A to node B, without deserialisation ocurring on node A
+- Transparent on-demand request proxying[/redirection] between nodes
+- Pluggable session/request relocation strategies (migrate, proxy (HttpUrlConnection/Commons-HttpClient)[, redirect])
+- auto-partitioning/healing clustering substrate
+- Fully IOC
+- Spring-wired
+- Technologies: Java-1.4, AspectJ-1.2, ActiveCluster/MQ, and more ...
+
+
+NYI :
+
+- true p2p network - no single point of failure or contention
+- request relocation via redirection (routing lbs only)
+- integration of various lbs
+- replication
+- pluggable replication policies - immediate, request-group, timeout
+- [strict LRU eviction...]
+
+- OpenEJB

Added: incubator/wadi/trunk/wadi-site/src/old_docs/IDEAS.txt
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/wadi-site/src/old_docs/IDEAS.txt?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/wadi-site/src/old_docs/IDEAS.txt (added)
+++ incubator/wadi/trunk/wadi-site/src/old_docs/IDEAS.txt Wed Dec 14 15:32:56 2005
@@ -0,0 +1,162 @@
+
+CLUSTER PROTOCOL THOUGHTS
+
+Its important that there is a 'leave' as well as a 'join' protocol so
+that everyone can discern the difference between a controlled shutdown
+and a catastrophic failure.
+
+Nodes are arranged into
+
+Explicit Join (1-N nodes)
+- joiners have no state
+- all existing members are informed of joining
+- joiner is DTM and mediates join XA
+- joiners negotiate ownership of some share of cluster state - it is migrated to them
+- corresponding backup services are also redistributed and backup state rearranged
+
+Explicit Leave (1-N nodes)
+ - leavers inform all existing members of wish to leave
+ - ownership of leavers' state is transferred to remaining members
+ - leaver is DTM and mediates leave XA
+ - corresponding backup services are also redistributed and backup state rearranged
+ - leaver[s] drop[s] state and leave[s]
+
+Implicit leave (failure)
+ - interested parties should reach agreement that it is unreachable/dead
+ - all members should be notified of the death
+ - if node is 'undead' and makes contact with any member it will be notified that it is 'dead', should dump its state and rejoin
+ - interested parties negotiate replacement services with rest of cluster
+
+(3) cluster split....
+
+say the cluster was split in two equally sized groups.
+it is possible that each group would have a complete copy of the state
+each group would see the other as having catastropically failed.
+the fun starts when the network heals itself :-)
+
+- interested parties should reach agreement that 1-N nodes are unreachable/dead.
+- remaining nodes should adopt state owned by dead node[s]
+- replacement services should be renegotiated amongst remaining nodes
+
+(a) nodes never rejoin...
+
+If N>B where N is the number of dead nodes and B is the number of
+state backups, then we may have lost some state.
+
+(b) nodes were really dead, are restarted and rejoin - goto
+
+
+
+
+-----------------------------------------------------------------
+
+CRAZED REPLICATION MODEL
+
+chaotic - model of life
+
+cells (sessions) arrange themselves in colonies (buckets)
+
+a primary colony will clone itself a number (n) of times.
+
+clones repel each other so that they will not choose the same host
+(vm) and will try to avoid geographically close hosts (i.e. vms on the
+same box).
+
+if a primary colony's host dies a secondary colony (clone) will
+be promoted to primary status and one of the remaining colonies (if
+possible a secondary one) will clone a replacement copy into a
+compatible organ/host.
+
+peer colonies keep each other informed of their location.
+organs are aware of the location of all primary colonies
+
+under certain conditions a cell may migrate between primary colonies,
+provided that the corresponding peer cell migrates between the
+corresponding peer colonies.
+
+colonies, particularly secondary ones, may migrate from resource-poor
+to resource-rich organs (taking into account their repellant
+behaviour).
+
+primary cells keep their secondary peers up to date with their
+mutations (state changes).
+
+primary colonies keep their secondary peers up to date with any
+internal change in cell structure through cell creation or cell death.
+
+
+---------------------------------------------------------------------
+
+In order to come up with good distributed algorithms, it is useful to
+model the components as autonomous since a single point of control is
+a single point of failure. Multiple autonomous units will be more
+resilient.
+
+Life starts with a number of colonies (buckets)
+
+Each of these is designated 'primary'
+
+Each primary colony will clone itself, assuring a population of N
+(resilience) peers.
+
+Colony peers repel each other and will therefore migrate away from
+each other, if possible, when placed in the same host (vm) or in
+geographically close hosts (i.e. vms on the same box). - In fact if in
+the same host and unable to migrate away, all but one peer will die.
+
+Colonies, less so primary ones, migrate towards resources (cpu,
+memory).
+
+Colony peers maintain contact with each other.
+
+Colony peers will endeavour to maintain a constant population of N.
+
+If a colony peer dies (because of the catastrophic death of it's host
+- or perhaps inability to migrate from dwindling resources), a
+remaining peer will attempt to produce a replacement by cloning itself
+into another host with sufficient resources.
+
+If the primary peer dies a surviving secondary peer will be promoted
+to primary.
+
+Colonies contain cells (sessions).
+
+Primary colonies may grow/shrink through cell birth/death.
+
+Secondary colonies keep their content in sync with their primary,
+which will notify them of such change.
+
+Cells contain DNA (state).
+
+A primary cell's DNA may mutate.
+
+A primary cell's mutations are notified to it's secondary peer cells
+so that they may sync their DNA with it.
+
+Every host is aware of the location of every primary colony.
+
+In some circumstance a primary cell may migrate between primary
+colonies - provided that it's secondary peer cells also migrate to the
+corresponding secondary peer colony.
+
+Every host is connected to every other host.
+
+Colonies need to negotiate with each other for resources. i.e. if
+there are insufficient resources available in the cluster for more
+than N-1 peers for each colony, then they should settle on this
+number...
+
+
+
+
+If a primary session is needed on a node that already hold a secondary replicant - switch their roles without moving them
+
+protocol :
+
+- secondary send message containing its version via bucket-owner
+- bucket owner forwards to primary
+- primary locks access and compares versions
+
+- if same needs to swap roles at bucket owner and let secondary know that it is now primary
+- if not same, needs to send update to secondary and then do as if same
+



Mime
View raw message