You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wadi-commits@incubator.apache.org by bd...@apache.org on 2005/12/14 23:36:16 UTC
svn commit: r356933 [24/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...
Added: incubator/wadi/trunk/modules/testapp/pom.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/pom.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/pom.xml (added)
+++ incubator/wadi/trunk/modules/testapp/pom.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,58 @@
+<project>
+ <parent>
+ <groupId>wadi</groupId>
+ <artifactId>wadi</artifactId>
+ <version>2.0M1</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>wadi-test-webapp</artifactId>
+ <packaging>war</packaging>
+ <name>WADI :: Test WebApp</name>
+ <scm>
+ <connection>scm:cvs:pserver:anoncvs@cvs.wadi.codehaus.org:/home/projects/wadi/scm:wadi/modules/testapp</connection>
+ <developerConnection>scm:cvs:ext:${maven.username}@cvs.wadi.codehaus.org/home/projects/wadi/scm:wadi/modules/testapp</developerConnection>
+ <url>http://cvs.wadi.codehaus.org/viewrep/wadi/wadi/modules/testapp</url>
+ </scm>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-jsp</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>geronimo-spec</groupId>
+ <artifactId>geronimo-spec-servlet</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>wadi</groupId>
+ <artifactId>wadi-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+
+ <reporting>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <source>1.4</source>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>surefire-report-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </reporting>
+
+</project>
Added: incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/BigString.java
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/BigString.java?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/BigString.java (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/BigString.java Wed Dec 14 15:32:56 2005
@@ -0,0 +1,38 @@
+/**
+ *
+ * Copyright 2003-2005 Core Developers Network Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.codehaus.wadi.webapp;
+
+import java.io.Serializable;
+
+/**
+ * A Custom class for use in the test Session to check that we have our
+ * ClassLoading working correctly...
+ *
+ * @author <a href="mailto:jules@coredevelopers.net">Jules Gosnell</a>
+ * @version $Revision: 1.1 $
+ */
+public class BigString extends CustomString implements Serializable {
+
+ protected final byte[] _deadWeight;
+
+ public BigString(String string, int deadWeight) {
+ super(string);
+ _deadWeight=new byte[deadWeight];
+ }
+
+}
Added: incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/CustomString.java
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/CustomString.java?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/CustomString.java (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/java/org/codehaus/wadi/webapp/CustomString.java Wed Dec 14 15:32:56 2005
@@ -0,0 +1,41 @@
+/**
+ *
+ * Copyright 2003-2005 Core Developers Network Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.codehaus.wadi.webapp;
+
+import java.io.Serializable;
+
+/**
+ * A Custom class for use in the test Session to check that we have our
+ * ClassLoading working correctly...
+ *
+ * @author <a href="mailto:jules@coredevelopers.net">Jules Gosnell</a>
+ * @version $Revision: 1.1 $
+ */
+public class CustomString implements Serializable {
+
+ protected final String _string;
+
+ public CustomString(String string) {
+ _string=string;
+ }
+
+ public String toString() {
+ return _string;
+ }
+
+}
Added: incubator/wadi/trunk/modules/testapp/src/main/resources/jetty-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/resources/jetty-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/resources/jetty-web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/resources/jetty-web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
+
+<Configure class="org.mortbay.jetty.servlet.WebApplicationContext">
+
+<!-- Set up the WADI Proxy Handler
+
+ <Call name="addHandler">
+ <Arg>
+ <New class="org.codehaus.wadi.jetty5.Handler">
+ <Arg>
+ <Call class="java.util.regex.Pattern" name="compile">
+ <Arg>127\\.0\\.0\\.1|192\\.168\\.0\\.\\d{1,3}</Arg>
+ </Call>
+ </Arg>
+ </New>
+ </Arg>
+ </Call>
+ -->
+
+<!-- Set up the WADI Filter -->
+
+ <Call name="getWebApplicationHandler">
+
+ <Call name="defineFilter">
+ <Arg>WadiFilter</Arg>
+ <Arg>org.codehaus.wadi.impl.Filter</Arg>
+ </Call>
+
+ <Call name="addFilterPathMapping">
+ <Arg>/*</Arg>
+ <Arg>WadiFilter</Arg>
+ <Arg type="int">15</Arg> <!-- ALL dispatch types -->
+ </Call>
+
+ </Call>
+
+<!-- needed for StopGracefully (set on Server) to work -->
+ <Set name="StatsOn">true</Set>
+<!-- needed for session evacuation under load -->
+
+<!-- Set up the WADI Session Manager -->
+
+ <Get name="ServletHandler">
+ <Set name="SessionManager">
+ <New class="org.codehaus.wadi.jetty5.JettyManager"/>
+ </Set>
+ </Get>
+
+</Configure>
Added: incubator/wadi/trunk/modules/testapp/src/main/resources/jetty6-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/resources/jetty6-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/resources/jetty6-web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/resources/jetty6-web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
+
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+
+<!-- Set up the WADI Proxy Handler
+
+ <Call name="addHandler">
+ <Arg>
+ <New class="org.codehaus.wadi.jetty5.Handler">
+ <Arg>
+ <Call class="java.util.regex.Pattern" name="compile">
+ <Arg>127\\.0\\.0\\.1|192\\.168\\.0\\.\\d{1,3}</Arg>
+ </Call>
+ </Arg>
+ </New>
+ </Arg>
+ </Call>
+ -->
+
+
+<!-- Set up the WADI Filter -->
+<!-- OhOh, this will overwrite Filters defined in web.xml ?? -->
+
+ <Get name="ServletHandler">
+
+ <Set name="Filters">
+ <Array type="org.mortbay.jetty.servlet.FilterHolder">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.FilterHolder">
+ <Set name="Name">WadiFilter</Set>
+ <Set name="ClassName">org.codehaus.wadi.impl.Filter</Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
+ <Set name="FilterMappings">
+ <Array type="org.mortbay.jetty.servlet.FilterMapping">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.FilterMapping">
+ <Set name="PathSpec">/*</Set>
+ <Set name="Dispatches">15</Set><!-- TODO: is this value still correct? -->
+ <Set name="FilterName">WadiFilter</Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
+
+ </Get>
+
+<!-- needed for StopGracefully (set on Server) to work -->
+<!--
+ <Set name="StatsOn">true</Set>
+-->
+<!-- needed for session evacuation under load -->
+
+<!-- Set up the WADI Session Manager -->
+
+ <Get name="SessionHandler">
+ <Set name="SessionManager">
+ <New class="org.codehaus.wadi.jetty6.JettyManager"/>
+ </Set>
+ </Get>
+
+</Configure>
Added: incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.clustered.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.clustered.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.clustered.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.clustered.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,424 @@
+<?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="Streamer"
+ 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>2000</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>2000</value></constructor-arg>
+ <constructor-arg type="long" index="1"><value>2000</value></constructor-arg>
+ </bean>
+-->
+
+ <bean
+ id="Relocater"
+ class="org.codehaus.wadi.impl.HybridRelocater"
+ >
+ <constructor-arg type="long" index="0"><value>2000</value></constructor-arg>
+ <constructor-arg type="long" index="1"><value>2000</value></constructor-arg>
+<!--
+ <constructor-arg type="boolean"><value>false</value></constructor-arg>
+-->
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </bean>
+
+ <!-- the contextualiser stack -->
+
+ <bean
+ id="Streamer2"
+ 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>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </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="Streamer"/></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>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ <constructor-arg type="int"><value>10</value></constructor-arg>
+ </bean> <!-- if a session is inactive for 10 secs, it moves to disc -->
+
+ <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="Streamer2"/></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="ReplicaterFactory"
+ class="org.codehaus.wadi.impl.DummyReplicaterFactory"
+ >
+ </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>
+
+ <!-- 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="Streamer"/></constructor-arg>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ <constructor-arg><ref bean="ReplicaterFactory"/></constructor-arg>
+ <constructor-arg><ref bean="HttpAddress"/></constructor-arg>
+ <constructor-arg><ref bean="HttpProxy"/></constructor-arg>
+ <constructor-arg index="14"><value>tcp://localhost:61616</value></constructor-arg>
+<!--
+ <constructor-arg index="14"><value>peer://org.codehaus.wadi</value></constructor-arg>
+ -->
+ <constructor-arg index="15"><value>CLUSTER0</value></constructor-arg>
+ <constructor-arg index="16"><value>${node.name}</value></constructor-arg>
+ <constructor-arg index="17"><value>72</value></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=HttpAddress"> <ref bean="HttpAddress"/> </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"/>
+ </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/testapp/src/main/resources/wadi-web.persistent.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.persistent.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.persistent.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/resources/wadi-web.persistent.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,324 @@
+<?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="SessionStreamer"
+ class="org.codehaus.wadi.impl.GZIPStreamer"
+ >
+ </bean>
+
+ <!-- the Contextualiser stack...(shorthand for now) -->
+
+ <bean
+ id="MemoryMap"
+ class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+ >
+ </bean>
+
+<!--
+ <bean
+ id="DataSource"
+ class="org.axiondb.jdbc.AxionDataSource"
+ >
+ <constructor-arg><value>jdbc:axiondb:testdb</value></constructor-arg>
+ </bean>
+-->
+
+ <bean
+ id="ContextPool"
+ class="org.codehaus.wadi.impl.SessionToContextPoolAdapter"
+ >
+ <constructor-arg><ref bean="SessionPool"/></constructor-arg>
+ </bean>
+
+ <!-- the contextualiser stack -->
+
+ <bean
+ id="AttributeStreamer"
+ 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="DatabaseEvicter"
+ class="org.codehaus.wadi.impl.NeverEvicter"
+ >
+ <constructor-arg type="int"><value>10</value></constructor-arg><!-- sweepInterval -->
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- strictOrdering -->
+ </bean>
+
+ <bean
+ id="DatabaseMap"
+ class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+ >
+ </bean>
+
+ <bean
+ id="DatabaseContextualiser"
+ class="org.codehaus.wadi.impl.GiannisContextualiser"
+ >
+ <constructor-arg><ref bean="DummyContextualiser"/></constructor-arg>
+ <constructor-arg><ref bean="Collapser"/></constructor-arg>
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- clean? -->
+ <constructor-arg><ref bean="DatabaseEvicter"/></constructor-arg>
+ <constructor-arg><ref bean="DatabaseMap"/></constructor-arg>
+ <constructor-arg><ref bean="DatabaseStore"/></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="DatabaseContextualiser"/></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="SerialContextualiser"
+ class="org.codehaus.wadi.impl.SerialContextualiser"
+ >
+ <constructor-arg><ref bean="StatelessContextualiser"/></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><!-- sweepInterval -->
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- strictOrdering -->
+ <constructor-arg type="int"><value>10</value></constructor-arg><!-- inactivityInterval -->
+ </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>
+
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.DatabaseReplicaterFactory"
+ >
+ <constructor-arg><ref bean="DatabaseStore"/></constructor-arg>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </bean>
+
+<!--
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.DummyReplicaterFactory"
+ >
+ </bean>
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.SleepingReplicaterFactory"
+ >
+ <constructor-arg type="long"><value>1000</value></constructor-arg>
+ </bean>
+-->
+
+ <!-- and finally - the SessionManager itself -->
+
+ <bean
+ id="SessionManager"
+ class="org.codehaus.wadi.impl.DistributableManager"
+ >
+ <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><!-- accessOnLoad -->
+ <constructor-arg><ref bean="DatabaseReplicaterFactory"/></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=Router"> <ref bean="Router"/> </entry>
+ <entry key="WADI:name=SessionIdFactory"> <ref bean="SessionIdFactory"/> </entry>
+ </map>
+ </property>
+ <property name="server" ref="mbeanServer"/>
+ </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/testapp/src/main/webapp/WEB-INF/wadi-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/webapp/WEB-INF/wadi-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/webapp/WEB-INF/wadi-web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/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>10000</value></constructor-arg> <!-- sweep interval (millis) -->
+ <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/testapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/webapp/WEB-INF/web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/webapp/WEB-INF/web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/webapp/WEB-INF/web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,13 @@
+<?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>
+ <display-name>Simple WADI Test Web Application</display-name>
+ <distributable/>
+ <welcome-file-list>
+ <welcome-file>/index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
+
+
Added: incubator/wadi/trunk/modules/testapp/src/main/webapp/check.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/webapp/check.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/webapp/check.jsp (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/webapp/check.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,14 @@
+<%@ page language="java" contentType="text/html" session="true" %>
+<%
+String sessId = session.getId();
+String color=System.getProperty("node.name");
+%>
+<html>
+ <head>
+ <title>WADI Set Page</title>
+ </head>
+ <body bgcolor="<%= color %>">
+ <p>The session id is = <%= sessId %></p>
+ <p>value = <%= session.getAttribute("foo") %></p>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/wadi/trunk/modules/testapp/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/webapp/index.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/webapp/index.jsp (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/webapp/index.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,13 @@
+<%@ page language="java" contentType="text/html" session="true" %>
+<%
+ String color=System.getProperty("node.name");
+%>
+<html>
+ <head>
+ <title>WADI Test Page</title>
+ </head>
+ <body bgcolor="<%= color %>">
+ <p>The index for the wadi test app.</p>
+ <p>The value of foo = <%= session.getAttribute("foo") %></p>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/wadi/trunk/modules/testapp/src/main/webapp/set.jsp
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/src/main/webapp/set.jsp?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/src/main/webapp/set.jsp (added)
+++ incubator/wadi/trunk/modules/testapp/src/main/webapp/set.jsp Wed Dec 14 15:32:56 2005
@@ -0,0 +1,15 @@
+<%@ page language="java" contentType="text/html" session="true" %>
+<%
+String sessId = session.getId();
+String color=System.getProperty("node.name");
+session.setAttribute("foo", "bar");
+%>
+<html>
+ <head>
+ <title>WADI Set Page</title>
+ </head>
+ <body bgcolor="<%= color %>">
+ <p>The session id is = <%= sessId %></p>
+ <p>The value of foo was set to = <%= session.getAttribute("foo") %></p>
+ </body>
+</html>
\ No newline at end of file
Added: incubator/wadi/trunk/modules/testapp/target/classes/jetty-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/jetty-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/target/classes/jetty-web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/target/classes/jetty-web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
+
+<Configure class="org.mortbay.jetty.servlet.WebApplicationContext">
+
+<!-- Set up the WADI Proxy Handler
+
+ <Call name="addHandler">
+ <Arg>
+ <New class="org.codehaus.wadi.jetty5.Handler">
+ <Arg>
+ <Call class="java.util.regex.Pattern" name="compile">
+ <Arg>127\\.0\\.0\\.1|192\\.168\\.0\\.\\d{1,3}</Arg>
+ </Call>
+ </Arg>
+ </New>
+ </Arg>
+ </Call>
+ -->
+
+<!-- Set up the WADI Filter -->
+
+ <Call name="getWebApplicationHandler">
+
+ <Call name="defineFilter">
+ <Arg>WadiFilter</Arg>
+ <Arg>org.codehaus.wadi.impl.Filter</Arg>
+ </Call>
+
+ <Call name="addFilterPathMapping">
+ <Arg>/*</Arg>
+ <Arg>WadiFilter</Arg>
+ <Arg type="int">15</Arg> <!-- ALL dispatch types -->
+ </Call>
+
+ </Call>
+
+<!-- needed for StopGracefully (set on Server) to work -->
+ <Set name="StatsOn">true</Set>
+<!-- needed for session evacuation under load -->
+
+<!-- Set up the WADI Session Manager -->
+
+ <Get name="ServletHandler">
+ <Set name="SessionManager">
+ <New class="org.codehaus.wadi.jetty5.JettyManager"/>
+ </Set>
+ </Get>
+
+</Configure>
Added: incubator/wadi/trunk/modules/testapp/target/classes/jetty6-web.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/jetty6-web.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/target/classes/jetty6-web.xml (added)
+++ incubator/wadi/trunk/modules/testapp/target/classes/jetty6-web.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure 1.2//EN" "http://jetty.mortbay.org/configure_1_2.dtd">
+
+<Configure class="org.mortbay.jetty.webapp.WebAppContext">
+
+<!-- Set up the WADI Proxy Handler
+
+ <Call name="addHandler">
+ <Arg>
+ <New class="org.codehaus.wadi.jetty5.Handler">
+ <Arg>
+ <Call class="java.util.regex.Pattern" name="compile">
+ <Arg>127\\.0\\.0\\.1|192\\.168\\.0\\.\\d{1,3}</Arg>
+ </Call>
+ </Arg>
+ </New>
+ </Arg>
+ </Call>
+ -->
+
+
+<!-- Set up the WADI Filter -->
+<!-- OhOh, this will overwrite Filters defined in web.xml ?? -->
+
+ <Get name="ServletHandler">
+
+ <Set name="Filters">
+ <Array type="org.mortbay.jetty.servlet.FilterHolder">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.FilterHolder">
+ <Set name="Name">WadiFilter</Set>
+ <Set name="ClassName">org.codehaus.wadi.impl.Filter</Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
+ <Set name="FilterMappings">
+ <Array type="org.mortbay.jetty.servlet.FilterMapping">
+ <Item>
+ <New class="org.mortbay.jetty.servlet.FilterMapping">
+ <Set name="PathSpec">/*</Set>
+ <Set name="Dispatches">15</Set><!-- TODO: is this value still correct? -->
+ <Set name="FilterName">WadiFilter</Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
+
+ </Get>
+
+<!-- needed for StopGracefully (set on Server) to work -->
+<!--
+ <Set name="StatsOn">true</Set>
+-->
+<!-- needed for session evacuation under load -->
+
+<!-- Set up the WADI Session Manager -->
+
+ <Get name="SessionHandler">
+ <Set name="SessionManager">
+ <New class="org.codehaus.wadi.jetty6.JettyManager"/>
+ </Set>
+ </Get>
+
+</Configure>
Added: incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/BigString.class
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/BigString.class?rev=356933&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/BigString.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/CustomString.class
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/CustomString.class?rev=356933&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/wadi/trunk/modules/testapp/target/classes/org/codehaus/wadi/webapp/CustomString.class
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.clustered.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.clustered.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.clustered.xml (added)
+++ incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.clustered.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,424 @@
+<?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="Streamer"
+ 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>2000</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>2000</value></constructor-arg>
+ <constructor-arg type="long" index="1"><value>2000</value></constructor-arg>
+ </bean>
+-->
+
+ <bean
+ id="Relocater"
+ class="org.codehaus.wadi.impl.HybridRelocater"
+ >
+ <constructor-arg type="long" index="0"><value>2000</value></constructor-arg>
+ <constructor-arg type="long" index="1"><value>2000</value></constructor-arg>
+<!--
+ <constructor-arg type="boolean"><value>false</value></constructor-arg>
+-->
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </bean>
+
+ <!-- the contextualiser stack -->
+
+ <bean
+ id="Streamer2"
+ 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>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </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="Streamer"/></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>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ <constructor-arg type="int"><value>10</value></constructor-arg>
+ </bean> <!-- if a session is inactive for 10 secs, it moves to disc -->
+
+ <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="Streamer2"/></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="ReplicaterFactory"
+ class="org.codehaus.wadi.impl.DummyReplicaterFactory"
+ >
+ </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>
+
+ <!-- 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="Streamer"/></constructor-arg>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ <constructor-arg><ref bean="ReplicaterFactory"/></constructor-arg>
+ <constructor-arg><ref bean="HttpAddress"/></constructor-arg>
+ <constructor-arg><ref bean="HttpProxy"/></constructor-arg>
+ <constructor-arg index="14"><value>tcp://localhost:61616</value></constructor-arg>
+<!--
+ <constructor-arg index="14"><value>peer://org.codehaus.wadi</value></constructor-arg>
+ -->
+ <constructor-arg index="15"><value>CLUSTER0</value></constructor-arg>
+ <constructor-arg index="16"><value>${node.name}</value></constructor-arg>
+ <constructor-arg index="17"><value>72</value></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=HttpAddress"> <ref bean="HttpAddress"/> </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"/>
+ </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/testapp/target/classes/wadi-web.persistent.xml
URL: http://svn.apache.org/viewcvs/incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.persistent.xml?rev=356933&view=auto
==============================================================================
--- incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.persistent.xml (added)
+++ incubator/wadi/trunk/modules/testapp/target/classes/wadi-web.persistent.xml Wed Dec 14 15:32:56 2005
@@ -0,0 +1,324 @@
+<?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="SessionStreamer"
+ class="org.codehaus.wadi.impl.GZIPStreamer"
+ >
+ </bean>
+
+ <!-- the Contextualiser stack...(shorthand for now) -->
+
+ <bean
+ id="MemoryMap"
+ class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+ >
+ </bean>
+
+<!--
+ <bean
+ id="DataSource"
+ class="org.axiondb.jdbc.AxionDataSource"
+ >
+ <constructor-arg><value>jdbc:axiondb:testdb</value></constructor-arg>
+ </bean>
+-->
+
+ <bean
+ id="ContextPool"
+ class="org.codehaus.wadi.impl.SessionToContextPoolAdapter"
+ >
+ <constructor-arg><ref bean="SessionPool"/></constructor-arg>
+ </bean>
+
+ <!-- the contextualiser stack -->
+
+ <bean
+ id="AttributeStreamer"
+ 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="DatabaseEvicter"
+ class="org.codehaus.wadi.impl.NeverEvicter"
+ >
+ <constructor-arg type="int"><value>10</value></constructor-arg><!-- sweepInterval -->
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- strictOrdering -->
+ </bean>
+
+ <bean
+ id="DatabaseMap"
+ class="EDU.oswego.cs.dl.util.concurrent.ConcurrentHashMap"
+ >
+ </bean>
+
+ <bean
+ id="DatabaseContextualiser"
+ class="org.codehaus.wadi.impl.GiannisContextualiser"
+ >
+ <constructor-arg><ref bean="DummyContextualiser"/></constructor-arg>
+ <constructor-arg><ref bean="Collapser"/></constructor-arg>
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- clean? -->
+ <constructor-arg><ref bean="DatabaseEvicter"/></constructor-arg>
+ <constructor-arg><ref bean="DatabaseMap"/></constructor-arg>
+ <constructor-arg><ref bean="DatabaseStore"/></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="DatabaseContextualiser"/></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="SerialContextualiser"
+ class="org.codehaus.wadi.impl.SerialContextualiser"
+ >
+ <constructor-arg><ref bean="StatelessContextualiser"/></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><!-- sweepInterval -->
+ <constructor-arg type="boolean"><value>false</value></constructor-arg><!-- strictOrdering -->
+ <constructor-arg type="int"><value>10</value></constructor-arg><!-- inactivityInterval -->
+ </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>
+
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.DatabaseReplicaterFactory"
+ >
+ <constructor-arg><ref bean="DatabaseStore"/></constructor-arg>
+ <constructor-arg type="boolean"><value>true</value></constructor-arg>
+ </bean>
+
+<!--
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.DummyReplicaterFactory"
+ >
+ </bean>
+ <bean
+ id="DatabaseReplicaterFactory"
+ class="org.codehaus.wadi.impl.SleepingReplicaterFactory"
+ >
+ <constructor-arg type="long"><value>1000</value></constructor-arg>
+ </bean>
+-->
+
+ <!-- and finally - the SessionManager itself -->
+
+ <bean
+ id="SessionManager"
+ class="org.codehaus.wadi.impl.DistributableManager"
+ >
+ <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><!-- accessOnLoad -->
+ <constructor-arg><ref bean="DatabaseReplicaterFactory"/></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=Router"> <ref bean="Router"/> </entry>
+ <entry key="WADI:name=SessionIdFactory"> <ref bean="SessionIdFactory"/> </entry>
+ </map>
+ </property>
+ <property name="server" ref="mbeanServer"/>
+ </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>