[jbosscache-commits] JBoss Cache SVN: r5439 - in pojo/tags: 2.1.0.GA and 5 other directories.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Sat Mar 15 01:40:15 EDT 2008
Author: jason.greene at jboss.com
Date: 2008-03-15 01:40:15 -0400 (Sat, 15 Mar 2008)
New Revision: 5439
Added:
pojo/tags/2.1.0.GA/
pojo/tags/2.1.0.GA/pom.xml
pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml
pojo/tags/2.1.0.GA/src/main/release/build.xml
pojo/tags/2.1.0.GA/src/main/release/etc/
pojo/tags/2.1.0.GA/src/main/release/etc/META-INF/
pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/
pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java
Removed:
pojo/tags/2.1.0.GA/pom.xml
pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml
pojo/tags/2.1.0.GA/src/main/release/build.xml
pojo/tags/2.1.0.GA/src/main/release/etc/replSync-service.xml
pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java
Log:
Tag 2.1.0.GA
Copied: pojo/tags/2.1.0.GA (from rev 5432, pojo/branches/2.1)
Deleted: pojo/tags/2.1.0.GA/pom.xml
===================================================================
--- pojo/branches/2.1/pom.xml 2008-03-14 16:12:25 UTC (rev 5432)
+++ pojo/tags/2.1.0.GA/pom.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -1,384 +0,0 @@
-<?xml version="1.0"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <properties>
- <jbosscache-pojo-version>2.1.0.CR4</jbosscache-pojo-version>
- <jbosscache-core-version>2.1.0.CR4</jbosscache-core-version>
- <jboss.aop.version>2.0.0.CR3</jboss.aop.version>
- <jboss.microcontainer.version>2.0.0.Beta6</jboss.microcontainer.version>
- <jboss.common-core.version>2.2.1.GA</jboss.common-core.version>
- <commons-logging.version>1.0.4</commons-logging.version>
- <jboss.javaee.version>5.0.0.Beta3</jboss.javaee.version>
- </properties>
- <parent>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-common-parent</artifactId>
- <version>1.1</version>
- </parent>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-pojo</artifactId>
- <version>${jbosscache-pojo-version}</version>
- <name>JBoss Cache - POJO Edition</name>
- <description>JBoss Cache - POJO Edition</description>
- <packaging>jar</packaging>
- <dependencies>
- <dependency>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop</artifactId>
- <version>${jboss.aop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- <version>${jbosscache-core-version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- <version>${jbosscache-core-version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${commons-logging.version}</version>
- </dependency>
- <dependency>
- <groupId>net.jcip</groupId>
- <artifactId>jcip-annotations</artifactId>
- <version>1.0</version>
- <optional>true</optional>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-1</version>
- <executions>
- <execution>
- <id>assemble</id>
- <phase>install</phase>
- <goals>
- <goal>attached</goal>
- </goals>
- <configuration>
- <descriptors>
- <descriptor>assembly/bin.xml</descriptor>
- <descriptor>assembly/doc.xml</descriptor>
- <descriptor>assembly/all.xml</descriptor>
- </descriptors>
- <finalName>${artifactId}-${jbosscache-pojo-version}</finalName>
- <outputDirectory>target/distribution</outputDirectory>
- <workDirectory>target/assembly/work</workDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <systemProperties>
- <property>
- <name>bind.address</name>
- <value>127.0.0.1</value>
- </property>
- <property>
- <name>java.net.preferIPv4Stack</name>
- <value>true</value>
- </property>
- <property>
- <name>jgroups.stack</name>
- <value>udp</value>
- </property>
- </systemProperties>
- <groups>functional</groups>
- <forkMode>always</forkMode>
- <argLine>-Djboss.aop.path=${basedir}/src/main/resources/META-INF/pojocache-aop.xml -javaagent:${settings.localRepository}/org/jboss/aop/jboss-aop/${jboss.aop.version}/jboss-aop-${jboss.aop.version}.jar</argLine>
- <!-- Warning, this does not work right on 2.4-SNAPSHOT, (see SUREFIRE-349) -->
- <!-- This seems to fail in some cases on 2.3 as well, disable for now -->
- <useSystemClassLoader>true</useSystemClassLoader>
- <redirectTestOutputToFile>false</redirectTestOutputToFile>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jboss.maven.plugins</groupId>
- <artifactId>maven-jbossaop-plugin</artifactId>
- <version>2.0.0.beta1</version>
- <!-- HACK: AOP project and plugin has broken deps -->
- <dependencies>
- <dependency>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- <version>${jbosscache-core-version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop</artifactId>
- <version>${jboss.aop.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- <version>${jboss.microcontainer.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-common-core</artifactId>
- <version>${jboss.common-core.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${commons-logging.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-javaee</artifactId>
- <version>${jboss.javaee.version}</version>
- </dependency>
- </dependencies>
- <executions>
- <execution>
- <id>aopc</id>
- <phase>compile</phase>
- <goals>
- <goal>compile</goal>
- </goals>
- <configuration>
- <verbose>false</verbose>
- <aoppaths>
- <aoppath>${basedir}/src/main/resources/META-INF/pojocache-aop.xml</aoppath>
- </aoppaths>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- the docbook generation plugin for the user guide -->
- <plugin>
- <groupId>org.jboss.maven.plugins</groupId>
- <artifactId>maven-jdocbook-plugin</artifactId>
- <version>2.0.0</version>
- <extensions>true</extensions>
- <dependencies>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-docbook-xslt</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossorg-jdocbook-style</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- <type>jdocbook-style</type>
- </dependency>
- <dependency>
- <groupId>com.uwyn</groupId>
- <artifactId>jhighlight</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>de.java2html</groupId>
- <artifactId>java2html</artifactId>
- <version>5.0</version>
- </dependency>
- <dependency>
- <groupId>org.richfaces.docs</groupId>
- <artifactId>highlight</artifactId>
- <version>3.1.4.GA</version>
- </dependency>
- </dependencies>
- <executions>
-
- <!-- The User Guide-->
- <execution>
- <id>userguide_en</id>
- <phase>package</phase>
- <goals>
- <goal>resources</goal>
- <goal>generate</goal>
- </goals>
- <configuration>
- <sourceDocumentName>master.xml</sourceDocumentName>
- <sourceDirectory>${basedir}/src/main/docbook/userguide/en</sourceDirectory>
- <imageResource>
- <directory>${basedir}/src/main/docbook/images</directory>
- </imageResource>
- <cssResource>
- <directory>${basedir}/src/main/docbook/css</directory>
- </cssResource>
- <targetDirectory>${basedir}/target/docbook/userguide_en</targetDirectory>
- <formats>
- <format>
- <formatName>pdf</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
- <finalName>userguide_en.pdf</finalName>
- </format>
- <format>
- <formatName>html</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <format>
- <formatName>html_single</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- </formats>
- <options>
- <xincludeSupported>false</xincludeSupported>
- </options>
- </configuration>
- </execution>
-
- <!-- The Tutorial -->
- <execution>
- <id>tutorial_en</id>
- <phase>package</phase>
- <goals>
- <goal>resources</goal>
- <goal>generate</goal>
- </goals>
- <configuration>
- <sourceDocumentName>master.xml</sourceDocumentName>
- <sourceDirectory>${basedir}/src/main/docbook/tutorial/en</sourceDirectory>
- <imageResource>
- <directory>${basedir}/src/main/docbook/images</directory>
- </imageResource>
- <cssResource>
- <directory>${basedir}/src/main/docbook/css</directory>
- </cssResource>
- <targetDirectory>${basedir}/target/docbook/tutorial_en</targetDirectory>
- <formats>
- <format>
- <formatName>pdf</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
- <finalName>tutorial_en.pdf</finalName>
- </format>
- <format>
- <formatName>html</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <format>
- <formatName>html_single</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- </formats>
- <options>
- <xincludeSupported>false</xincludeSupported>
- </options>
- </configuration>
- </execution>
-
- <!-- the FAQs -->
- <execution>
- <id>faq_en</id>
- <phase>package</phase>
- <goals>
- <goal>resources</goal>
- <goal>generate</goal>
- </goals>
- <configuration>
- <sourceDocumentName>master.xml</sourceDocumentName>
- <sourceDirectory>${basedir}/src/main/docbook/faq/en</sourceDirectory>
- <imageResource>
- <directory>${basedir}/src/main/docbook/images</directory>
- </imageResource>
- <cssResource>
- <directory>${basedir}/src/main/docbook/css</directory>
- </cssResource>
- <targetDirectory>${basedir}/target/docbook/faq_en</targetDirectory>
- <formats>
- <format>
- <formatName>pdf</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
- <finalName>faq_en.pdf</finalName>
- </format>
- <format>
- <formatName>html</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- <format>
- <formatName>html_single</formatName>
- <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
- <finalName>index.html</finalName>
- </format>
- </formats>
- <options>
- <xincludeSupported>false</xincludeSupported>
- </options>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- <!-- basic JBoss repository so that the common parent POM in jbosscache-support can be found -->
- <repositories>
- <repository>
- <id>repository.jboss.org</id>
- <url>http://repository.jboss.org/maven2</url>
- </repository>
- </repositories>
-
- <profiles>
- <profile>
- <id>JBossAS</id>
- <activation>
- <activeByDefault>false</activeByDefault>
- </activation>
- <properties>
- <jbosscache-pojo-version>2.1.0.CR4-JBossAS</jbosscache-pojo-version>
- <jbosscache-core-version>2.1.0-SNAPSHOT-JBossAS</jbosscache-core-version>
- <jboss.aop.version>2.0.0.CR7</jboss.aop.version>
- <jboss.microcontainer.version>2.0.0.Beta10</jboss.microcontainer.version>
- <jboss.common-core.version>2.2.3.GA</jboss.common-core.version>
- <commons-logging.version>1.1.0.jboss</commons-logging.version>
- <jboss.javaee.version>5.0.0.Beta3Update1</jboss.javaee.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>jgroups</groupId>
- <artifactId>jgroups</artifactId>
- <version>2.6.2</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-javaee</artifactId>
- <version>${jboss.javaee.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-common-core</artifactId>
- <version>${jboss.common-core.version}</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>${commons-logging.version}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.transaction</groupId>
- <artifactId>jboss-jta</artifactId>
- <version>4.3.0.BETA2</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- <version>${jboss.microcontainer.version}</version>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-
-</project>
Copied: pojo/tags/2.1.0.GA/pom.xml (from rev 5433, pojo/branches/2.1/pom.xml)
===================================================================
--- pojo/tags/2.1.0.GA/pom.xml (rev 0)
+++ pojo/tags/2.1.0.GA/pom.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -0,0 +1,404 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <properties>
+ <jbosscache-pojo-version>2.1.0.GA</jbosscache-pojo-version>
+ <jbosscache-core-version>2.1.0.GA</jbosscache-core-version>
+ <jboss.aop.version>2.0.0.CR3</jboss.aop.version>
+ <jboss.microcontainer.version>2.0.0.Beta6</jboss.microcontainer.version>
+ <jboss.common-core.version>2.2.1.GA</jboss.common-core.version>
+ <commons-logging.version>1.0.4</commons-logging.version>
+ <jboss.javaee.version>5.0.0.Beta3</jboss.javaee.version>
+ </properties>
+ <parent>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-common-parent</artifactId>
+ <version>1.1</version>
+ </parent>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-pojo</artifactId>
+ <version>${jbosscache-pojo-version}</version>
+ <name>JBoss Cache - POJO Edition</name>
+ <description>JBoss Cache - POJO Edition</description>
+ <packaging>jar</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop</artifactId>
+ <version>${jboss.aop.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>${jbosscache-core-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>${jbosscache-core-version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>net.jcip</groupId>
+ <artifactId>jcip-annotations</artifactId>
+ <version>1.0</version>
+ <optional>true</optional>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>javadoc</goal>
+ </goals>
+ <configuration>
+ <aggregate>${jbosscache.reports.aggregate}</aggregate>
+ <links>
+ <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
+ <link>http://java.sun.com/javaee/5/docs/api/</link>
+ <link>http://labs.jboss.org/file-access/default/members/jbosscache/freezone/docs/2.1.0.GA/apidocs/</link>
+ </links>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-1</version>
+ <executions>
+ <execution>
+ <id>assemble</id>
+ <phase>install</phase>
+ <goals>
+ <goal>attached</goal>
+ </goals>
+ <configuration>
+ <descriptors>
+ <descriptor>assembly/bin.xml</descriptor>
+ <descriptor>assembly/doc.xml</descriptor>
+ <descriptor>assembly/all.xml</descriptor>
+ </descriptors>
+ <finalName>${artifactId}-${jbosscache-pojo-version}</finalName>
+ <outputDirectory>target/distribution</outputDirectory>
+ <workDirectory>target/assembly/work</workDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <systemProperties>
+ <property>
+ <name>bind.address</name>
+ <value>127.0.0.1</value>
+ </property>
+ <property>
+ <name>java.net.preferIPv4Stack</name>
+ <value>true</value>
+ </property>
+ <property>
+ <name>jgroups.stack</name>
+ <value>udp</value>
+ </property>
+ </systemProperties>
+ <groups>functional</groups>
+ <forkMode>always</forkMode>
+ <argLine>-Djboss.aop.path=${basedir}/src/main/resources/META-INF/pojocache-aop.xml -javaagent:${settings.localRepository}/org/jboss/aop/jboss-aop/${jboss.aop.version}/jboss-aop-${jboss.aop.version}.jar</argLine>
+ <!-- Warning, this does not work right on 2.4-SNAPSHOT, (see SUREFIRE-349) -->
+ <!-- This seems to fail in some cases on 2.3 as well, disable for now -->
+ <useSystemClassLoader>true</useSystemClassLoader>
+ <redirectTestOutputToFile>false</redirectTestOutputToFile>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jbossaop-plugin</artifactId>
+ <version>2.0.0.beta1</version>
+ <!-- HACK: AOP project and plugin has broken deps -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <version>${jbosscache-core-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop</artifactId>
+ <version>${jboss.aop.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ <version>${jboss.microcontainer.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ <version>${jboss.common-core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-javaee</artifactId>
+ <version>${jboss.javaee.version}</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>aopc</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>compile</goal>
+ </goals>
+ <configuration>
+ <verbose>false</verbose>
+ <aoppaths>
+ <aoppath>${basedir}/src/main/resources/META-INF/pojocache-aop.xml</aoppath>
+ </aoppaths>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <!-- the docbook generation plugin for the user guide -->
+ <plugin>
+ <groupId>org.jboss.maven.plugins</groupId>
+ <artifactId>maven-jdocbook-plugin</artifactId>
+ <version>2.0.0</version>
+ <extensions>true</extensions>
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-docbook-xslt</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossorg-jdocbook-style</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <type>jdocbook-style</type>
+ </dependency>
+ <dependency>
+ <groupId>com.uwyn</groupId>
+ <artifactId>jhighlight</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>de.java2html</groupId>
+ <artifactId>java2html</artifactId>
+ <version>5.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.docs</groupId>
+ <artifactId>highlight</artifactId>
+ <version>3.1.4.GA</version>
+ </dependency>
+ </dependencies>
+ <executions>
+
+ <!-- The User Guide-->
+ <execution>
+ <id>userguide_en</id>
+ <phase>package</phase>
+ <goals>
+ <goal>resources</goal>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <sourceDocumentName>master.xml</sourceDocumentName>
+ <sourceDirectory>${basedir}/src/main/docbook/userguide/en</sourceDirectory>
+ <imageResource>
+ <directory>${basedir}/src/main/docbook/images</directory>
+ </imageResource>
+ <cssResource>
+ <directory>${basedir}/src/main/docbook/css</directory>
+ </cssResource>
+ <targetDirectory>${basedir}/target/docbook/userguide_en</targetDirectory>
+ <formats>
+ <format>
+ <formatName>pdf</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
+ <finalName>userguide_en.pdf</finalName>
+ </format>
+ <format>
+ <formatName>html</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>html_single</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>false</xincludeSupported>
+ </options>
+ </configuration>
+ </execution>
+
+ <!-- The Tutorial -->
+ <execution>
+ <id>tutorial_en</id>
+ <phase>package</phase>
+ <goals>
+ <goal>resources</goal>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <sourceDocumentName>master.xml</sourceDocumentName>
+ <sourceDirectory>${basedir}/src/main/docbook/tutorial/en</sourceDirectory>
+ <imageResource>
+ <directory>${basedir}/src/main/docbook/images</directory>
+ </imageResource>
+ <cssResource>
+ <directory>${basedir}/src/main/docbook/css</directory>
+ </cssResource>
+ <targetDirectory>${basedir}/target/docbook/tutorial_en</targetDirectory>
+ <formats>
+ <format>
+ <formatName>pdf</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
+ <finalName>tutorial_en.pdf</finalName>
+ </format>
+ <format>
+ <formatName>html</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>html_single</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>false</xincludeSupported>
+ </options>
+ </configuration>
+ </execution>
+
+ <!-- the FAQs -->
+ <execution>
+ <id>faq_en</id>
+ <phase>package</phase>
+ <goals>
+ <goal>resources</goal>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <sourceDocumentName>master.xml</sourceDocumentName>
+ <sourceDirectory>${basedir}/src/main/docbook/faq/en</sourceDirectory>
+ <imageResource>
+ <directory>${basedir}/src/main/docbook/images</directory>
+ </imageResource>
+ <cssResource>
+ <directory>${basedir}/src/main/docbook/css</directory>
+ </cssResource>
+ <targetDirectory>${basedir}/target/docbook/faq_en</targetDirectory>
+ <formats>
+ <format>
+ <formatName>pdf</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-pdf.xsl</stylesheetResource>
+ <finalName>faq_en.pdf</finalName>
+ </format>
+ <format>
+ <formatName>html</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/main-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ <format>
+ <formatName>html_single</formatName>
+ <stylesheetResource>classpath:/xslt/org/jboss/nochunk-html.xsl</stylesheetResource>
+ <finalName>index.html</finalName>
+ </format>
+ </formats>
+ <options>
+ <xincludeSupported>false</xincludeSupported>
+ </options>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <!-- basic JBoss repository so that the common parent POM in jbosscache-support can be found -->
+ <repositories>
+ <repository>
+ <id>repository.jboss.org</id>
+ <url>http://repository.jboss.org/maven2</url>
+ </repository>
+ </repositories>
+
+ <profiles>
+ <profile>
+ <id>JBossAS</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <jbosscache-pojo-version>2.1.0.CR4-JBossAS</jbosscache-pojo-version>
+ <jbosscache-core-version>2.1.0-SNAPSHOT-JBossAS</jbosscache-core-version>
+ <jboss.aop.version>2.0.0.CR7</jboss.aop.version>
+ <jboss.microcontainer.version>2.0.0.Beta10</jboss.microcontainer.version>
+ <jboss.common-core.version>2.2.3.GA</jboss.common-core.version>
+ <commons-logging.version>1.1.0.jboss</commons-logging.version>
+ <jboss.javaee.version>5.0.0.Beta3Update1</jboss.javaee.version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>jgroups</groupId>
+ <artifactId>jgroups</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-javaee</artifactId>
+ <version>${jboss.javaee.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ <version>${jboss.common-core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.transaction</groupId>
+ <artifactId>jboss-jta</artifactId>
+ <version>4.3.0.BETA2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ <version>${jboss.microcontainer.version}</version>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+
+</project>
Deleted: pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml
===================================================================
--- pojo/branches/2.1/src/main/docbook/faq/en/master.xml 2008-03-14 16:12:25 UTC (rev 5432)
+++ pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -1,807 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "../../../../docbook-support/support/docbook-dtd/docbookx.dtd"
- >
-<article class="faq" lang="en">
- <articleinfo>
- <title>Frequently Asked Questions about PojoCache</title>
- <releaseinfo>Release 2.0.0</releaseinfo>
- <pubdate>June 2007</pubdate>
-
- <author>
- <firstname>Ben</firstname>
- <surname>Wang</surname>
- <email>ben.wang at jboss.com</email>
- </author>
- <author>
- <firstname>Scott</firstname>
- <surname>Marlow</surname>
- <email>smarlow at novell.com</email>
- </author>
-
- </articleinfo>
-
- <para>These are frequently asked questions regarding Pojocache.</para>
-
- <qandaset defaultlabel="qanda">
- <title>General Information</title>
-
- <qandaentry>
- <question id="a49">
- <para>What is PojoCache?</para>
- </question>
-
- <answer>
- <para>PojoCache is a fine-grained field-level replicated and
- transactional POJO (plain old Java object) cache. By POJO, we mean
- that the cache: 1) automatically manages object mapping and
- relationship for a client under both local and replicated cache
- mode, 2) provides support for inheritance relationship between
- "aspectized" POJOs. By leveraging the dynamic AOP in JBossAop, it is
- able to map a complex object into the cache store, preserve and
- manage the object relationship behind the scene. During replication
- mode, it performs fine-granularity (i.e., on a per-field basis)
- update, and thus has the potential to boost cache performance and
- minimize network traffic.
- </para>
-
- <para>From a user perspective, once your POJO is managed by the
- cache, all cache operations are transparent. Therefore, all the
- usual in-VM POJO method semantics are still preserved, providing
- ease of use. For example, if a POJO has been put in PojoCache (by
- calling
- <literal>attach</literal>
- , for example), then any POJO get/set
- method will be
- intercepted by PojoCache to provide the data from the
- cache.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a1">
- <para>What is the relationship between Cache and PojoCache?</para>
- </question>
-
- <answer>
- <para>The core JBoss Cache library
- <literal>Cache</literal>
- is a traditional generic distributed cache system.
- PojoCache uses Cache as the underlying distributed state system to achieve POJO caching. It uses Cache as
- a
- delegate. As a result, all the replication aspects are configured with the Cache configuration XML.
- Additionally, PojoCache also has API to expose the Cache interface (via
- <literal>getCache()</literal>
- API).
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a52">
- <para>What is the difference between Cache and
- PojoCache?
- </para>
- </question>
-
- <answer>
- <para>Think of PojoCache as a Cache on steroids. :-)
- Seriously, both are cache stores-- one is a generic cache and the other other one POJO Cache.
- However, while Cache only
- provides pure object reference storage (e.g.,
- <literal>put(FQN fqn,
- Object key, Object value)
- </literal>
- ), PojoCache goes beyond that
- and performs fine-grained field level replication object mapping and
- relationship management for a user behind the scenes. As a result,
- if you have complex object systems that you would like to cache, you
- can have PojoCache manage it for you. You simply treat your
- object systems as they are residing in-memory, e.g., use your
- regular POJO methods without worrying about cache management.
- Furthermore, this is true in replication mode as well.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a521">
- <para>How does PojoCache work then?</para>
- </question>
-
- <answer>
- <para>PojoCache uses the so-called AOP technology (aspect oriented programming) to do field level
- interception. Currently, it uses
- <literal>JBoss Aop</literal>
- library to do it.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a522">
- <para>What's changed between 1.x and 2.x release then?</para>
- </question>
-
- <answer>
- <para>Starting in 2.0 release, we have a separate library for PojoCache,
- <literal>pojocache.jar</literal>
- that
- is extra to the core
- <literal>jboss-cache.jar</literal>
- . Since we uses Cache as a delegate, user
- will need to have a regular xml to configure the core Cache functionality (e.g., replication and locking
- aspect). In addition, there is also the
- <literal>pojocache-aop.xml</literal>
- that specifies the PojoCache
- interceptor stack (that can be left as default).
- </para>
- <para>Additionally, here are the changed features:
- <itemizedlist>
- <listitem>
- <para>New APIs. It replaces
- <literal>putObject, removeObject, and get</literal>
- with
- <literal>attach, detach, and find</literal>
- .
- </para>
- </listitem>
- <listitem>
- <para>New POJO based events that a user can subscribe to.</para>
- </listitem>
- <listitem>
- <para>New configuration pojocache-aop.xml specifically for PojoCache, in addition to
- the regular cache-service.xml for the delegating Cache.
- </para>
- </listitem>
- <listitem>
- <para>New package namespace (
- <literal>org.jboss.cache.pojo)</literal>
- for PojoCache.
- The previous
- <literal>org.jboss.cache.aop</literal>
- space has been deprecated.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a53">
- <para>What are the steps to use the PojoCache feature?</para>
- </question>
-
- <answer>
- <para>In order to use PojoCache, you will need to:</para>
-
- <itemizedlist>
- <listitem>
- <para>prepare POJO. You can do either via xml declaration or JDK50 annotation.
- This is the step to declare your POJO such that it will be instrumented by
- <literal>JBoss Aop</literal>
- .
- </para>
- </listitem>
- <listitem>
- <para>instrumentation. You will need to instrument your POJO either at compile- or load-time.
- If you do it during compile-time, you use so-called an aop pre-compiler (aopc) to do bytecode
- manipulation.
- If you do it via load-time, however, you need either a special system class loader or, in JDK50,
- you can
- use the javaagent option. Either way,
- <literal>JBoss Aop</literal>
- will byte code manipulate your POJO
- class such that all field access can be intercepted.
- </para>
- </listitem>
- </itemizedlist>
- <para>So if you use JDK50, for example, with annotation and load-time instrumentation, then you won't need
- any pre-processing step to use PojoCache. For a full example, please refer to the distro examples
- directory.
- There are numerous PojoCache examples that uses different options.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a541">
- <para>What is the JDK version required to run PojoCache 2.x?</para>
- </question>
-
- <answer>
- <para>PojoCache 2.x requires JDK5.0 since it uses the annotation extensively.</para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a542">
- <para>Can I run PojoCache as a standalone mode?</para>
- </question>
-
- <answer>
- <para>Yes, same as the core Cache library, you can run PojoCache either as a standalone or
- inside an application server.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a543">
- <para>What is the JBoss AS recommended version to run PojoCache 2.x?</para>
- </question>
-
- <answer>
- <para>PojoCache can be run either in AS4.0.5 (and up) and 5.0. But either way, it will require
- JDK5.0 though.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a56">
- <para>Can I pre-compile the aop classes such that I don't need to
- use the system classloader and jboss-aop configuration xml during runtime?
- </para>
- </question>
-
- <answer>
- <para>Yes. The latest versions of JBossCache have a pre-compiler
- option called
- <literal>aopc</literal>
- . You can use this option to
- pre-compile your "aspectized" POJO. Once the classes have been byte
- code generated, they can be treated as regular class files, i.e.,
- you will not need to include any
- <literal>jboss-aop.xml</literal>
- that specifies the advisable POJO and to specify the JBossAop system
- class loader.
- </para>
-
- <para>For an example of how to use
- <literal>aopc</literal>
- , please
- see 1)
- <literal>tools</literal>
- directory for PojoCacheTasks14.xml
- and PojoCacheTasks50.xml. Both contain Ant tasks that you can
- import to your regular project for
- <literal>aopc</literal>
- . In addition, please also check out the
- <literal>examples</literal>
- directory for concrete examples.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a561">
- <para>In PojoCache 2.x release, do I still need
- <literal>annoc</literal>
- ?
- </para>
- </question>
-
- <answer>
- <para>The annoc precompiler is needed for JDK1.4 style annotation. For 2.x release, since
- we require the use of JDK5.0, there is no need to use annoc anymore.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a57">
- <para>How do I use aopc on multiple module directories?</para>
- </question>
-
- <answer>
- <para>In aopc, you specify the src path for a specific directory. To
- pre-compile multiple ones, you will need to invoke aopc multiple
- times.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a57a">
- <para>Does PojoCache provide POJO event subscription?</para>
- </question>
-
- <answer>
- <para>Yes, since 2.0, you can use PojoCacheListener to subscribe to events
- such as POJO attach and detach and field updates. And if you need some customization,
- you can also use the Obervable pattern directly. TO see an example, please check
- out the test case:
- <literal>org.jboss.cache.pojo.observer.LocalTest.java</literal>
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a58">
- <para>What's in the
- <literal>jboss-aop.xml</literal>
- configuration?
- </para>
- </question>
-
- <answer>
- <para>
- <literal>jboss-aop.xml</literal>
- is needed for POJO
- instrumentation. In
- <literal>jboss-aop.xml</literal>
- , you can
- declare your POJO (e.g.,
- <literal>Person</literal>
- ) to be
- "prepared", a JBossAop term to denote that the object will be
- "aspectized" by the system. After this declaration, JBossAop will
- invoke any interceptor that associates with this POJO. PojoCache
- will dynamically add an
- <literal>org.jboss.cache.pojo.interceptor.dynamic.CacheFieldInterceptor</literal>
- to this POJO
- to perform object mapping and relationship management.
- </para>
-
- <para>Note that to add your POJO, you should declare all the fields
- to be "prepared" as in the example.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a58a">
- <para>What's the difference between
- <literal>jboss-aop.xml</literal>
- <literal>pojocache-aop.xml</literal>
- ?
- </para>
- </question>
-
- <answer>
- <para>
- <literal>pojocache-aop.xml</literal>
- is essentially a
- <literal>jboss-aop.xml</literal>
- ,
- except it is used specifically for PojoCache. The analogy is similar to JBoss' own
- MBean service file
- <literal>jboss-service.xml</literal>
- , for example. So in our documentation,
- we will use these two terms interchangeably.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a59">
- <para>Can I use annotation instead of the xml declaration?</para>
- </question>
-
- <answer>
- <para>Yes, in release 2.0, you can use JDK5.0 annotation to
- instrument your POJO. Check the documentation for details.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a60">
- <para>What are the pro and con of xml vs. annotation?</para>
- </question>
-
- <answer>
- <para>It really depends on your organization environment, I'd say, since this can be turned into a
- hot debate. Having said that, I feel strongly that POJO annotation is well suited for PojoCache. This is
- because once you specify the annotation, you'd probably change it rarely since there is no parameters to
- tune, for example.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a61">
- <para>What are the
- <literal>@org.jboss.cache.pojo.annotation.Transient</literal>
- and
- <literal>@org.jboss.cache.pojo.annotation.Serializable</literal>
- field level annotations?
- </para>
- </question>
-
- <answer>
- <para>In 2.0, we also offer two additional field-level annotations. The first one,
- <literal>@org.jboss.cache.pojo.Transient</literal>
- ,
- when applied has the same effect as declaring a field
- <literal>transient</literal>
- . PojoCache
- won't put this field under management.
- </para>
- <para>The second one,
- <literal>@org.jboss.cache.pojo.Serializable</literal>
- when applied,
- will cause PojoCache to
- treat the field as a Serializable object even when it is
- <literal>@org.jboss.cache.pojo.Replicable</literal>
- .
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a62">
- <para>What about compile-time vs. load-time instrumentation then?</para>
- </question>
-
- <answer>
- <para>Again it depends. But my preference is to do compile-time instrumentation via aopc. I prefer this
- approach because it is easier to debug (at least at the development stage). In addition, once I generate
- the
- new class, there is no more steps needed.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a63">
- <para>Is it possible to store the same object multiple times but
- with different Fqn paths? Like /foo/byName and /foo/byId ?
- </para>
- </question>
-
- <answer>
- <para>Yes, you can use PojoCache to do that. It supports the
- notion of object reference. PojoCache manages the unique object
- through association of the dynamic cache interceptor.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a64">
- <para>Do I need to declare all my objects "prepared" in
- <literal>jboss-aop.xml</literal>
- ?
- </para>
- </question>
-
- <answer>
- <para>Not necessarily. If there is an object that you don't need the
- cache to manage for you, you can leave it out of the declaration.
- The cache will treat this object as a "primitive" type. However, the
- object will need to implement
- <literal>Serializable</literal>
- interface for replication.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a65">
- <para>Can the cache aop intercept update via reflection?</para>
- </question>
-
- <answer>
- <para>No. The update via reflection will not be intercepted in
- JBossAop and therefore PojoCache will not be able to perform the
- necessary synchronization.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a66">
- <para>When I declare my POJO to be "aspectized", what happens to the
- fields with transient, static, and final modifiers?
- </para>
- </question>
-
- <answer>
- <para>PojoCache currently will ignore the fields with these
- modifiers. That is, it won't put these fields into the cache (and
- thus no replication either).
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a67">
- <para>What are those keys such as
- <literal>JBoss:internal:class</literal>
- and
- <literal>PojoInstance</literal>
- ?
- </para>
- </question>
-
- <answer>
- <para>They are for internal use only. Users should ignore these keys
- and values in the node hashmap.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a68">
- <para>What about Collection classes? Do I need to declare them
- "prepared"?
- </para>
- </question>
-
- <answer>
- <para>No. Since the Collection classes such as
- <literal>ArrayList</literal>
- are java util classes, aop by default
- won't instrument these classes. Instead, PojoCache will generate
- a dynamic class proxy for the Collection classes (upon the
- <literal>attach</literal>
- call is invoked). The proxy will
- delegate the operations to a cache interceptor that implements the
- actual Collection classes APIs. That is, the system classes won't be
- invoked when used in PojoCache.
- </para>
-
- <para>Internally, the cache interceptor implements the APIs by
- direct interaction with respect to the underlying cache store. Note
- that this can have implications in performance for certain APIs. For
- example, both
- <literal>ArrayList</literal>
- and
- <literal>LinkedList</literal>
- will have the same implementation.
- Plan is currently underway to optimize these APIs.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a69">
- <para>How do I use
- <literal>List</literal>
- ,
- <literal>Set</literal>
- ,
- and
- <literal>Map</literal>
- dynamic proxy?
- </para>
- </question>
-
- <answer>
- <para>PojoCache supports classes extending from
- <literal>List</literal>
- ,
- <literal>Set</literal>
- , and
- <literal>Map</literal>
- without users to declare them "aspectized".
- It is done via a dynamic proxy. Here is a code snippet to use an
- <literal>ArrayList</literal>
- proxy class.
- </para>
-
- <programlisting role="JAVA"><![CDATA[
- ArrayList list = new ArrayList();
- list.add("first");
-
- cache.attach("list/test", list); // Put the list under the aop cache
- list.add("second"); // Won't work since AOP intercepts the dynamic proxy not the original POJO.
-
- ArrayList myList = (List)cache.find("list/test"); // we are getting a dynamic proxy instead
- myList.add("second"); // it works now
- myList.add("third");
- myList.remove("third");
- ]]></programlisting>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a70">
- <para>What is the proper way of assigning two different keys with
- Collection class object?
- </para>
- </question>
-
- <answer>
- <para>Let's say you want to assign a
- <literal>List</literal>
- object
- under two different names, you will need to use the class proxy to
- insert the second time to ensure both are managed by the cache. Here
- is the code snippet.
- </para>
-
- <programlisting role="JAVA"><![CDATA[
- ArrayList list = new ArrayList();
- list.add("first");
-
- cache.attach("list", list); // Put the list under the aop cache
-
- ArrayList myList = (List)cache.find("list"); // we are getting a dynamic proxy instead
- myList.add("second"); // it works now
-
- cache.attach("list_alias", myList); // Note you will need to use the proxy here!!
- myList.remove("second");
- ]]></programlisting>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a71">
- <para>OK, so I know I am supposed to use proxy when manipulating the
- Collection classes once they are managed by the cache. But what
- happens to Pojos that share the Collection objects, e.g., a
- <literal>List</literal>
- instance that is shared by 2 Pojos?
- </para>
- </question>
-
- <answer>
- <para>Pojos that share Collection instance references will be
- handled by the cache automatically. That is, when you ask the Cache
- to manage it, the Cache will dynamically swap out the regular
- Collection references with the dynamic proxy ones. As a result, it
- is transparent to the users.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a72">
- <para>What happens when my "aspectized" POJO has field members that
- are of Collection class ?
- </para>
- </question>
-
- <answer>
- <para>When a user puts a POJO into the cache through the call
- <literal>attach</literal>
- , it will recursively map the field
- members into the cache store as well. When the field member is of a
- Collection class (e.g., List, Set, or Map), PojoCache will first
- map the collection into cache. Then, it will swap out dynamically
- the field reference with an corresponding proxy reference.
- </para>
-
- <para>This is necessary so that an internal update on the field
- member will be intercepted by the cache.
- </para>
- </answer>
- </qandaentry>
-
-
- <qandaentry>
- <question id="a73">
- <para>What are the limitation of Collection classes in PojoCache?</para>
- </question>
-
- <answer>
- <para>Use of Collection class in PojoCache helps you to track fine-grained changes
- in your collection fields automatically. However, current implementation has the follow
- limitation that we plan to address soon.
- </para>
- <para>Currently, we only support a limited implementation of Collection classes. That is,
- we support APIs in List, Set, and Map. However, since the APIs do not stipulate
- of constraints like NULL key or value, it makes mapping of user instance to our proxy tricky.
- For example, ArrayList would allow NULL value and some other implementation would not.
- The Set interface maps to java.util.HashSet implementation. The List interface maps
- to java.util.ArrayList implementation. The Map interface maps to java.util.HashMap
- implementation.
- </para>
- <para>Another related issue is the expected performance. For example, the current implementation is ordered,
- so
- that makes insert/delete from the Collection slow. Performance between Set, Map and List collections also
- vary.
- Adding items to a Set is slower than a List or Map, since Set does not allow duplicate entries.
- </para>
- </answer>
- </qandaentry>
-
-
- <qandaentry>
- <question id="a74">
- <para>What are the pros and cons of PojoCache?</para>
- </question>
-
- <answer>
- <para>As mentioned in the reference doc, PojoCache has the following advantages:</para>
- <itemizedlist>
- <listitem>
- <para>Fine-grained replication and/or persistency. If you use a distributed PojoCache
- and once your POJO is put in the cache store, there is no need to use another API to
- trigger your changes. Furthermore, the replication are fine-grained field level. Note this
- also applies to persistency.
- </para>
- </listitem>
- <listitem>
- <para>Fine-grained replication can have potential performance gain if your POJO is big and
- the changes are fine-grained, e.g., only to some selected fields.
- </para>
- </listitem>
- <listitem>
- <para>POJO can posses object relationship, e.g., multiple referenced. Distributed
- PojoCache will handle this transparently for you.
- </para>
- </listitem>
- </itemizedlist>
- <para>And here are some cases that you may not want to use PojoCache:</para>
- <itemizedlist>
- <listitem>
- <para>You use only cache. That is you don't need replication or persistency. Then since
- everything is operated on the in-memory POJO reference, there is no need for PojoCache.
- </para>
- </listitem>
- <listitem>
- <para>You have simple and small POJOs. Your POJO is small in size and also there is no
- object relationship, then PojoCache possess not clear advantage to plain cache.
- </para>
- </listitem>
- <listitem>
- <para>Your application is bounded by memory usage. Because PojoCache need almost twice as much
- of memory (the original POJO in-memory space and also the additional cache store for the
- primitive fields), you may not want to use PojoCache.
- </para>
- </listitem>
- <listitem>
- <para>Your POJO lifetime is short. That is, you need to create and destroy your POJO often.
- Then you need to do "attach" and "detach" often, it will be slow in performance.
- </para>
- </listitem>
- </itemizedlist>
- </answer>
- </qandaentry>
- </qandaset>
-
-
- <qandaset defaultlabel="qanda">
- <title>Passiviation and eviction</title>
- <qandaentry>
- <question id="a80">
- <para>Can I use eviction to evict POJO from the memory?</para>
- </question>
- <answer>
- <para>No. In 2.0 release, we have deprecated the POJO-based eviction policy since it has always been
- problematic in earlier release. The main reason is that when we evict a POJO from
- the memory, the user has no ways of knowing it. So if the POJO is accessed after the
- eviction, there won't be any PojoCache interception (e.g., it will be just like ordinary POJO),
- but user may still expect that it will be managed by PojoCache.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question id="a81">
- <para>So what do I do now?</para>
- </question>
- <answer>
- <para>In order to keep your memory from overflowing, you can use the passivation feature that comes with
- the core Cache. Passivation uses the combination of eviction and cache loader such that when the
- items are old, it will be evicted from memory and store in a cache store (can be DB or file). Next time,
- when the item needs to be accessed again, we will retrieve it from the cache store.
- </para>
- <para>In this sense, PojoCache level is not aware of the passivation aspect. It is configured through
- the underlying cache xml.
- </para>
- </answer>
- </qandaentry>
- </qandaset>
-
- <qandaset defaultlabel="qanda">
- <title>Troubleshooting</title>
- <qandaentry>
- <question id="a90">
- <para>I am having problems getting PojoCache to work, where can I get information on troubleshooting?</para>
- </question>
- <answer>
- <para>Troubleshooting section can be found in the following
- <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=PojoCacheTroubleshooting">wiki link</ulink>
- .
- </para>
- </answer>
- </qandaentry>
- </qandaset>
-</article>
Copied: pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml (from rev 5433, pojo/branches/2.1/src/main/docbook/faq/en/master.xml)
===================================================================
--- pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml (rev 0)
+++ pojo/tags/2.1.0.GA/src/main/docbook/faq/en/master.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -0,0 +1,665 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "../../../../docbook-support/support/docbook-dtd/docbookx.dtd"
+ >
+<article class="faq" lang="en">
+ <articleinfo>
+ <title>Frequently Asked Questions about POJO Cache</title>
+ <releaseinfo>Release 2.1.0.GA</releaseinfo>
+ <pubdate>March 2008</pubdate>
+
+ <author>
+ <firstname>Ben</firstname>
+ <surname>Wang</surname>
+ <email>ben.wang at jboss.com</email>
+ </author>
+ <author>
+ <firstname>Scott</firstname>
+ <surname>Marlow</surname>
+ <email>smarlow at novell.com</email>
+ </author>
+ <author>
+ <firstname>Jason</firstname>
+ <surname>Greene</surname>
+ <email>jason.greene at jboss.com</email>
+ </author>
+ </articleinfo>
+
+ <para>These are frequently asked questions regarding POJO Cache.</para>
+
+ <qandaset defaultlabel="qanda">
+ <title>General Information</title>
+
+ <qandaentry>
+ <question id="a49">
+ <para>What is POJO Cache?</para>
+ </question>
+
+ <answer>
+ <para>POJO Cache is a fine-grained field-level replicated and
+ transactional POJO (plain old Java object) cache. By POJO, we mean
+ that the cache: 1) automatically manages object mapping and
+ relationship for a client under both local and replicated cache
+ mode, 2) provides support for inheritance relationship between
+ "aspectized" POJOs. By leveraging the dynamic AOP in JBossAop, it is
+ able to map a complex object into the cache store, preserve and
+ manage the object relationship behind the scene. During replication
+ mode, it performs fine-granularity (i.e., on a per-field basis)
+ update, and thus has the potential to boost cache performance and
+ minimize network traffic.
+ </para>
+
+ <para>From a user perspective, once your POJO is managed by the
+ cache, all cache operations are transparent. Therefore, all the
+ usual in-VM POJO method semantics are still preserved, providing
+ ease of use. For example, if a POJO has been put in POJO Cache (by
+ calling
+ <literal>attach</literal>
+ , for example), then any POJO get/set
+ method will be
+ intercepted by POJO Cache to provide the data from the
+ cache.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a1">
+ <para>What is the relationship between Core Cache and POJO Cache?</para>
+ </question>
+
+ <answer>
+ <para>Cores Cache is a traditional generic distributed cache system.
+ POJO Cache uses Core Cache as the underlying distributed state system to achieve object caching.
+ As a result, all the replication aspects are configured with the Cache configuration XML.
+ Additionally, POJO Cache also has API to expose the Cache interface (via
+ <literal>getCache()</literal>
+ API).
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a52">
+ <para>What is the difference between Core Cache and
+ POJO Cache?
+ </para>
+ </question>
+
+ <answer>
+ <para>Think of POJO Cache as a Cache on steroids. :-)
+ Seriously, both are cache stores-- one is a generic cache and the other other one POJO Cache.
+ However, while Cache only
+ provides pure object reference storage (e.g.,
+ <literal>put(FQN fqn,
+ Object key, Object value)
+ </literal>
+ ), POJO Cache goes beyond that
+ and performs fine-grained field level replication object mapping and
+ relationship management for a user behind the scenes. As a result,
+ if you have complex object systems that you would like to cache, you
+ can have POJO Cache manage it for you. You simply treat your
+ object systems as they are residing in-memory, e.g., use your
+ regular POJO methods without worrying about cache management.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a521">
+ <para>How does POJO Cache work then?</para>
+ </question>
+
+ <answer>
+ <para>POJO Cache uses the JBoss AOP project to perform field level
+ interception. This allows POJO Cache to monitor changes to your object model, and react
+ accordingly.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a522">
+ <para>What's changed between 1.x and 2.x release then?</para>
+ </question>
+
+ <answer>
+ <para>Starting in 2.0 release, we have a separate library for POJO Cache,
+ <literal>pojocache.jar</literal>
+ that
+ is extra to the core
+ <literal>jboss-cache.jar</literal>
+ . Since we uses Cache as a delegate, user
+ will need to have a regular xml to configure the core Cache functionality (e.g., replication and locking
+ aspect). In addition, there is also the
+ <literal>pojocache-aop.xml</literal>
+ that specifies the POJO Cache
+ interceptor stack (that can be left as default).
+ </para>
+ <para>Additionally, here are the changed features:
+ <itemizedlist>
+ <listitem>
+ <para>New APIs. It replaces
+ <literal>putObject, removeObject, and get</literal>
+ with
+ <literal>attach, detach, and find</literal>
+ .
+ </para>
+ </listitem>
+ <listitem>
+ <para>New POJO based events that a user can subscribe to.</para>
+ </listitem>
+ <listitem>
+ <para>New configuration pojocache-aop.xml specifically for POJO Cache, in addition to
+ the regular cache-service.xml for the delegating Cache.
+ </para>
+ </listitem>
+ <listitem>
+ <para>New package namespace (
+ <literal>org.jboss.cache.pojo)</literal>
+ for POJO Cache.
+ The previous
+ <literal>org.jboss.cache.aop</literal>
+ space has been deprecated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a53">
+ <para>How do you use POJO Cache?</para>
+ </question>
+
+ <answer>
+ <para>In order to use POJO Cache, you will need to:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Annotate your POJOt with @Replicable.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Instrument your POJO. This can be done at load-time using special JVM arguments (prefered), or at compile time using the
+ AOP precompiler tool (aopc). See the user guide for more specific details on instrumentation.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a541">
+ <para>What is the JDK version required to run POJO Cache 2.x?</para>
+ </question>
+
+ <answer>
+ <para>POJO Cache 2.x requires Java 5 or newer.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a542">
+ <para>Can I run POJO Cache as a standalone mode?</para>
+ </question>
+
+ <answer>
+ <para>Yes, same as the Core Cache library, you can run POJO Cache either as a standalone or
+ inside an application server.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a543">
+ <para>What is the JBoss AS recommended version to run POJO Cache 2.x?</para>
+ </question>
+
+ <answer>
+ <para>POJO Cache can be run either in AS4.0.5 (and up) and 5.0. But either way, it will require
+ JDK5.0 though.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a56">
+ <para>Can I pre-compile objects used in POJO Cache, so that I don't have to provide an AOP descriptor?
+ </para>
+ </question>
+
+ <answer>
+ <para>Yes. The AOP library included with POJO Cache has a pre-compiler called
+ <literal>aopc</literal> that can be used to instrument objects in advance. However,
+ this is not the recommended approach, since your classes become tied to a specific AOP version.
+ See the instrumentation chapter in the user guide for more information.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a561">
+ <para>In POJO Cache 2.x release, do I still need
+ <literal>annoc</literal>
+ ?
+ </para>
+ </question>
+
+ <answer>
+ <para>No. POJO Cache 2.x requires JDK 5, and recommends load-time instrumentation. Alternatively the offline aopc tool may be used.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a57">
+ <para>How do I use aopc on multiple module directories?</para>
+ </question>
+
+ <answer>
+ <para>In aopc, you specify the src path for a specific directory. To
+ pre-compile multiple ones, you will need to invoke aopc multiple
+ times.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a57a">
+ <para>Does POJO Cache provide a listener/event model for catching changes?</para>
+ </question>
+
+ <answer>
+ <para>Yes. See the javadoc for PojoCache.addListener() and @PojoCacheListener.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a58">
+ <para>What's in the
+ <literal>pojocaches-aop.xml</literal>
+ configuration?
+ </para>
+ </question>
+
+ <answer>
+ <para>
+ These descriptors are necessary for instrumentation. However, yyou typically do not need to touch them since they include a rule
+ which matches the classes with an @Replicable annotation. Therefore, all you need to do, is just
+ annotate your class with @Replicable. Advanced users may decide to customize them with special AOP prepare statements that match
+ classes which do not have @Replicable.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a58a">
+ <para>What's the difference between
+ <literal>jboss-aop.xml</literal>
+ <literal>pojocache-aop.xml</literal>
+ ?
+ </para>
+ </question>
+
+ <answer>
+ <para>
+ <literal>pojocache-aop.xml</literal>
+ is essentially a
+ <literal>jboss-aop.xml</literal>
+ ,
+ except it is used specifically for POJO Cache. The analogy is similar to JBoss' own
+ MBean service file
+ <literal>jboss-service.xml</literal>
+ , for example. So in our documentation,
+ we will use these two terms interchangeably.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a59">
+ <para>Can I use annotations instead of editing the AOP XML descriptors?</para>
+ </question>
+
+ <answer>
+ <para>Yes, in release 2.0, we recommend you use the @Replicable annotation, and don't bother with editing the AOP files.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a60">
+ <para>Is there a problem with using a custom AOP descriptor over the provided annotations?</para>
+ </question>
+
+ <answer>
+ <para>The only real benefit to a custom AOP descriptor is if you can't easily add the annotation to the class source (it's not under your control).
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a61">
+ <para>What are the
+ <literal>@org.jboss.cache.pojo.annotation.Transient</literal>
+ and
+ <literal>@org.jboss.cache.pojo.annotation.Serializable</literal>
+ field level annotations?
+ </para>
+ </question>
+
+ <answer>
+ <para>In 2.0, we also offer two additional field-level annotations. The first one,
+ <literal>@org.jboss.cache.pojo.Transient</literal>
+ ,
+ when applied has the same effect as declaring a field
+ <literal>transient</literal>
+ . POJO Cache
+ won't put this field under management.
+ </para>
+ <para>The second one,
+ <literal>@org.jboss.cache.pojo.Serializable</literal>
+ when applied,
+ will cause POJO Cache to
+ treat the field as a Serializable object even when it is
+ <literal>@org.jboss.cache.pojo.Replicable</literal>
+ .
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a62">
+ <para>Why do you recommend load-time over compile-time instrumentation?</para>
+ </question>
+
+ <answer>
+ <para> The major problem with compile-time instrumentation is that it adds a binary dependency on your class files to whatever
+ version of JBoss AOP that was used to run aopc. Once this has been done, the class may not work with a future version of
+ JBoss AOP (although the AOP team tries to ensure binary compatibility across minor revisions). Load-time doesn't have
+ this problem since the class is instrumented only in memory, and only when it is loaded.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a63">
+ <para>Is it possible to store the same object multiple times but
+ with different Fqn paths? Like /foo/byName and /foo/byId ?
+ </para>
+ </question>
+
+ <answer>
+ <para>Yes, you can use POJO Cache to do that. It supports the
+ notion of multiple object references. POJO Cache manages the unique object
+ through association of the dynamic cache interceptor.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a64">
+ <para>Do I have to instrument my objects?
+ </para>
+ </question>
+
+ <answer>
+ <para> You can also attach objects that implement
+ <literal>Serializable</literal>. However, you lose field-level replication and object identity preservation.
+ This is really only supported as a compatibility measure. It is definately worth useing instrumentation.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a65">
+ <para>Will POJO Cache intercept changes made from Java Reflection?</para>
+ </question>
+
+ <answer>
+ <para>Yes and No. Since POJO Cache intercepts field changes, any method
+ of an object that has been annotated with @Replicable will be handled properly when called with reflection.
+ However, modifying fields using reflection is not currently supported.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a66">
+ <para>When I declare my POJO to be "aspectized", what happens to the
+ fields with transient, static, and final modifiers?
+ </para>
+ </question>
+
+ <answer>
+ <para>POJO Cache currently will ignore the fields with these
+ modifiers. That is, it won't put these fields into the cache (and
+ thus no replication either).
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a67">
+ <para>What are those keys such as
+ <literal>JBoss:internal:class</literal>
+ and
+ <literal>PojoInstance</literal>
+ ?
+ </para>
+ </question>
+
+ <answer>
+ <para>They are for internal use only. Users should ignore these keys
+ and values in the node hashmap.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a68">
+ <para>What about Collection classes? Do I need to declare them
+ "prepared"?
+ </para>
+ </question>
+
+ <answer>
+ <para>No. Since the Collection classes such as
+ <literal>ArrayList</literal>
+ are java util classes, aop by default
+ won't instrument these classes. Instead, POJO Cache will generate
+ a dynamic class proxy for the Collection classes (upon the
+ <literal>attach</literal>
+ call is invoked). The proxy will
+ delegate the operations to a cache interceptor that implements the
+ actual Collection classes APIs. That is, the system classes won't be
+ invoked when used in POJO Cache.
+ </para>
+
+ <para>Internally, the cache interceptor implements the APIs by
+ direct interaction with respect to the underlying cache store. Note
+ that this can have implications in performance for certain APIs. For
+ example, both
+ <literal>ArrayList</literal>
+ and
+ <literal>LinkedList</literal>
+ will have the same implementation.
+ Plan is currently underway to optimize these APIs.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a69">
+ <para>How do I use
+ <literal>List</literal>
+ ,
+ <literal>Set</literal>
+ ,
+ and
+ <literal>Map</literal> with POJO Cache?
+ </para>
+ </question>
+
+ <answer>
+ <para>POJO Cache supports all classes that implement
+ <literal>List</literal>
+ ,
+ <literal>Set</literal>
+ , and
+ <literal>Map</literal>
+ without instrumentation. This is done using a dynamic proxy. Here is an example using
+ <literal>ArrayList</literal>:
+ </para>
+
+ <programlisting role="JAVA"><![CDATA[
+ ArrayList list = new ArrayList();
+ list.add("first");
+
+ cache.attach("/list/test", list); // Put the list under the cache
+ list.add("second"); // Won't work since AOP intercepts the dynamic proxy not the original POJO.
+
+ ArrayList myList = (List)cache.find("/list/test"); // we are getting a dynamic proxy instead
+ myList.add("second"); // it works now
+ myList.add("third");
+ myList.remove("third");
+ ]]></programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a70">
+ <para>What is the proper way of assigning two different keys with
+ Collection class object?
+ </para>
+ </question>
+
+ <answer>
+ <para>Let's say you want to assign a
+ <literal>List</literal>
+ object
+ under two different names, you will need to use the class proxy to
+ insert the second time to ensure both are managed by the cache. Here
+ is the code snippet.
+ </para>
+
+ <programlisting role="JAVA"><![CDATA[
+ ArrayList list = new ArrayList();
+ list.add("first");
+
+ cache.attach("/list", list); // Put the list under the aop cache
+
+ ArrayList myList = (List)cache.find("/list"); // we are getting a dynamic proxy instead
+ myList.add("second"); // it works now
+
+ cache.attach("/list_alias", myList); // Note you will need to use the proxy here!!
+ myList.remove("second");
+ ]]></programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a71">
+ <para>OK, so I know I am supposed to use proxy when manipulating the
+ Collection classes once they are managed by the cache. But what
+ happens to POJOs that share the Collection objects, e.g., a
+ <literal>List</literal>
+ instance that is shared by two objects??
+ </para>
+ </question>
+
+ <answer>
+ <para>POJOss that share Collection instance references will be
+ handled by the cache automatically. That is, when you ask the Cache
+ to manage it, the Cache will dynamically swap out the regular
+ Collection references with the dynamic proxy ones. As a result, it
+ is transparent to you.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a72">
+ <para>What happens when my instrumented object contains collections?
+ </para>
+ </question>
+
+ <answer>
+ <para>When an object is passed to
+ <literal>attach</literal>
+ , it will recursively map the field
+ members into the cache store as well. If the field member is of a
+ Collection class (e.g., List, Set, or Map), POJO Cache will first
+ map the collection into cache. Then, it will swap out
+ the field reference with an corresponding proxy reference.
+ </para>
+
+ <para>This is necessary so that an internal update on the field
+ member will be intercepted by the cache.
+ </para>
+ </answer>
+ </qandaentry>
+
+
+ <qandaentry>
+ <question id="a73">
+ <para>What are the limitations of using Java Collections in POJO Cache?</para>
+ </question>
+ <answer>
+ <para>
+ List, Set, and Map are supported; however, these APIs do not stipulate
+ of constraints like whether a null key or value is allowed. Therefore the behavior of an attached collection may differ
+ slightly from the originals Java implementation. The behavior implemented by POJO Cache follows
+ java.util.HashSet for any Set type, java.util.ArrayList for any List type, and java.util.HashMap for any Map type.s
+ </para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+
+
+ <qandaset defaultlabel="qanda">
+ <title>Passiviation and eviction</title>
+ <qandaentry>
+ <question id="a80">
+ <para>Can I use eviction to evict a POJO from the memory?</para>
+ </question>
+ <answer>
+ <para>In 2.0 release, we removed the POJO-based eviction policy since it has always been
+ problematic in earlier release. You can, however, use the standard Core Cache eviction system to
+ evict the data that backs the POJO.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="a81">
+ <para>Is passivation supported?</para>
+ </question>
+ <answer>
+ <para>Yes, in order to reduce memory consumption, you can use the passivation feature that comes with
+ Core Cache. Passivation uses the combination of eviction and a cache loader such that when the
+ items are old, it will be evicted from memory and store in a cache store (can be DB or file). Next time,
+ when the item needs to be accessed again, we will retrieve it from the cache store.
+ </para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+
+ <qandaset defaultlabel="qanda">
+ <title>Troubleshooting</title>
+ <qandaentry>
+ <question id="a90">
+ <para>I am having problems getting POJO Cache to work, where can I get information on troubleshooting?</para>
+ </question>
+ <answer>
+ <para>Troubleshooting section can be found in the following
+ <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=PojoCacheTroubleshooting">wiki link</ulink>
+ .
+ </para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+</article>
Deleted: pojo/tags/2.1.0.GA/src/main/release/build.xml
===================================================================
--- pojo/branches/2.1/src/main/release/build.xml 2008-03-14 16:12:25 UTC (rev 5432)
+++ pojo/tags/2.1.0.GA/src/main/release/build.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -1,152 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="POJO Cache Distribution" default="help">
-
- <property name="build.sysclasspath" value="ignore"/>
- <!-- 10 mins -->
- <property name="single.test.timeout" value="600000"/>
- <!-- 2h -->
- <property name="all.test.timeout" value="7200000"/>
-
- <property name="source" value="${basedir}/test"/>
- <property name="output" value="${basedir}/output"/>
- <property name="build" value="${output}/classes"/>
- <property name="lib" value="${basedir}/lib"/>
- <property name="etc" value="${basedir}/etc"/>
- <property name="reports" value="${output}/reports"/>
-
- <!-- JVM args for when running tests -->
- <property name="jvm.ipv4" value="-Djava.net.preferIPv4Stack=true"/>
- <property name="jvm.localhost" value="-Dbind.address=127.0.0.1"/>
-
- <!-- Test if JDK5 is available -->
- <available classname="java.lang.Enum" property="HAVE_JDK_1.5"/>
-
- <taskdef name="testng" classpath="lib/testng.jar" classname="org.testng.TestNGAntTask"/>
-
- <!-- set local properties for this build -->
- <path id="lib.classpath">
- <fileset dir="${lib}">
- <include name="**/*.jar"/>
- </fileset>
- </path>
-
- <path id="cache.classpath">
- <fileset dir="${basedir}">
- <include name="jbosscache-pojo.jar"/>
- </fileset>
- </path>
-
- <path id="build.classpath">
- <pathelement path="${build}"/>
- </path>
-
- <path id="test.classpath">
- <path refid="build.classpath"/>
- <path refid="cache.classpath"/>
- <path refid="lib.classpath"/>
- <pathelement path="${etc}"/>
- <!-- this needs to be in the test classpath as well since it contains test configuration XML files -->
- <pathelement path="${source}"/>
- </path>
-
- <target name="help" description="help page">
- <echo><![CDATA[
-build.sh <command> where command is:
- compile -- compile the test code
- clean -- clean up the whole directory
- run.tests -- run batch examples
- one.test -- run one single test case. Need -Dtest=org/jboss/cache/??Test
- run.demo -- run demo GUI
-
- ]]></echo>
- </target>
-
- <target name="chkJdk" unless="HAVE_JDK_1.5">
- <echo>
- **** FATAL
- **** REQUIRES JDK 1.5.0 or greater.
- **** Compilation won't proceed!
- </echo>
- </target>
-
- <!-- set up directory -->
- <target name="init" depends="chkJdk" description="Prepare to build.">
- <!-- Create the time stamp -->
- <tstamp/>
- <!-- Create the build directory structure used by compile
-and copy the deployment descriptors into it-->
- <mkdir dir="${build}"/>
- <mkdir dir="${reports}"/>
- </target>
-
- <target name="clean" description="Clean up compiled classes">
- <delete dir="${output}"/>
- </target>
-
- <target name="compile" depends="init" description="Build unit test classes" if="HAVE_JDK_1.5">
- <javac srcdir="${source}"
- destdir="${build}"
- includes="org/jboss/**"
- target="1.5"
- source="1.5"
- debug="true"
- deprecation="false">
- <classpath>
- <path refid="lib.classpath"/>
- <path refid="cache.classpath"/>
- </classpath>
- </javac>
-
- <copy todir="${output}/etc">
- <fileset dir="${etc}">
- <include name="**/*"/>
- </fileset>
- </copy>
- </target>
-
-
- <!-- eg. ant run.examples -Dtest=org/jboss/test/cache/api/CacheAPITest -->
- <target name="one.test" depends="compile" description="run one TestNG test case.">
- <testng
- outputDir="${reports}"
- haltOnFailure="true"
- timeOut="${single.test.timeout}"
- verbose="2">
- <classpath refid="test.classpath"/>
- <classfileset dir="${build}" includes="${test}.class"/>
- <jvmarg value="${jvm.ipv4}"/>
- <jvmarg value="${jvm.localhost}"/>
- </testng>
- </target>
-
- <target name="run.tests" depends="compile" description="run TestNG test cases.">
- <testng
- outputDir="${reports}"
- haltOnFailure="true"
- timeOut="${all.test.timeout}"
- verbose="2">
- <classpath>
- <path refid="test.classpath"/>
- </classpath>
- <classfileset dir="${build}" includes="**/*Test.class"/>
- <jvmarg value="${jvm.ipv4}"/>
- <jvmarg value="${jvm.localhost}"/>
- <jvmarg value="-javaagent:lib/jboss-aop.jar"/>
- <jvmarg value="-Djboss.aop.path=etc/META-INF/pojocache-aop.xml"/>
- </testng>
- </target>
-
- <target name="run.demo" depends="compile" description="Run JBoss Cache demo.">
- <java classname="org.jboss.cache.pojo.demo.PojoCacheView" fork="yes">
- <jvmarg value="-Xmx128M"/>
- <jvmarg value="-javaagent:lib/jboss-aop.jar"/>
- <jvmarg value="-Djboss.aop.path=etc/META-INF/pojocache-aop.xml"/>
- <classpath refid="test.classpath"/>
- <jvmarg value="${jvm.ipv4}"/>
- <jvmarg value="${jvm.localhost}"/>
- <arg value="-console"/>
- </java>
- </target>
-
-</project>
Copied: pojo/tags/2.1.0.GA/src/main/release/build.xml (from rev 5437, pojo/branches/2.1/src/main/release/build.xml)
===================================================================
--- pojo/tags/2.1.0.GA/src/main/release/build.xml (rev 0)
+++ pojo/tags/2.1.0.GA/src/main/release/build.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+
+<project name="POJO Cache Distribution" default="help">
+
+ <property name="build.sysclasspath" value="ignore"/>
+ <!-- 10 mins -->
+ <property name="single.test.timeout" value="600000"/>
+ <!-- 2h -->
+ <property name="all.test.timeout" value="7200000"/>
+
+ <property name="source" value="${basedir}/test"/>
+ <property name="output" value="${basedir}/output"/>
+ <property name="build" value="${output}/classes"/>
+ <property name="lib" value="${basedir}/lib"/>
+ <property name="etc" value="${basedir}/etc"/>
+ <property name="reports" value="${output}/reports"/>
+
+ <!-- JVM args for when running tests -->
+ <property name="jvm.ipv4" value="-Djava.net.preferIPv4Stack=true"/>
+ <property name="jvm.localhost" value="-Dbind.address=127.0.0.1"/>
+
+ <!-- Test if JDK5 is available -->
+ <available classname="java.lang.Enum" property="HAVE_JDK_1.5"/>
+
+ <taskdef name="testng" classpath="lib/testng.jar" classname="org.testng.TestNGAntTask"/>
+
+ <!-- set local properties for this build -->
+ <path id="lib.classpath">
+ <fileset dir="${lib}">
+ <include name="**/*.jar"/>
+ </fileset>
+ </path>
+
+ <path id="cache.classpath">
+ <fileset dir="${basedir}">
+ <include name="jbosscache-pojo.jar"/>
+ </fileset>
+ </path>
+
+ <path id="build.classpath">
+ <pathelement path="${build}"/>
+ </path>
+
+ <path id="test.classpath">
+ <path refid="build.classpath"/>
+ <path refid="cache.classpath"/>
+ <path refid="lib.classpath"/>
+ <pathelement path="${etc}"/>
+ <!-- this needs to be in the test classpath as well since it contains test configuration XML files -->
+ <pathelement path="${source}"/>
+ </path>
+
+ <target name="help" description="help page">
+ <echo><![CDATA[
+build.sh <command> where command is:
+ compile -- compile the test code
+ clean -- clean up the whole directory
+ run.tests -- run batch examples
+ one.test -- run one single test case. Need -Dtest=org/jboss/cache/??Test
+ run.demo -- run demo GUI
+
+ ]]></echo>
+ </target>
+
+ <target name="chkJdk" unless="HAVE_JDK_1.5">
+ <echo>
+ **** FATAL
+ **** REQUIRES JDK 1.5.0 or greater.
+ **** Compilation won't proceed!
+ </echo>
+ </target>
+
+ <!-- set up directory -->
+ <target name="init" depends="chkJdk" description="Prepare to build.">
+ <!-- Create the time stamp -->
+ <tstamp/>
+ <!-- Create the build directory structure used by compile
+and copy the deployment descriptors into it-->
+ <mkdir dir="${build}"/>
+ <mkdir dir="${reports}"/>
+ </target>
+
+ <target name="clean" description="Clean up compiled classes">
+ <delete dir="${output}"/>
+ </target>
+
+ <target name="compile" depends="init" description="Build unit test classes" if="HAVE_JDK_1.5">
+ <javac srcdir="${source}"
+ destdir="${build}"
+ includes="org/jboss/**"
+ target="1.5"
+ source="1.5"
+ debug="true"
+ deprecation="false">
+ <classpath>
+ <path refid="lib.classpath"/>
+ <path refid="cache.classpath"/>
+ </classpath>
+ </javac>
+
+ <copy todir="${output}/etc">
+ <fileset dir="${etc}">
+ <include name="**/*"/>
+ </fileset>
+ </copy>
+ </target>
+
+
+ <!-- eg. ant run.examples -Dtest=org/jboss/test/cache/api/CacheAPITest -->
+ <target name="one.test" depends="compile" description="run one TestNG test case.">
+ <testng
+ outputDir="${reports}"
+ haltOnFailure="true"
+ timeOut="${single.test.timeout}"
+ verbose="2">
+ <classpath refid="test.classpath"/>
+ <classfileset dir="${build}" includes="${test}.class"/>
+ <jvmarg value="${jvm.ipv4}"/>
+ <jvmarg value="${jvm.localhost}"/>
+ </testng>
+ </target>
+
+ <target name="run.tests" depends="compile" description="run TestNG test cases.">
+ <testng
+ outputDir="${reports}"
+ haltOnFailure="true"
+ listener="org.jboss.cache.pojo.testng.TestListener"
+ timeOut="${all.test.timeout}"
+ verbose="2">
+ <classpath>
+ <path refid="test.classpath"/>
+ </classpath>
+ <classfileset dir="${build}" includes="**/*Test.class"/>
+ <jvmarg value="${jvm.ipv4}"/>
+ <jvmarg value="${jvm.localhost}"/>
+ <jvmarg value="-javaagent:lib/jboss-aop.jar"/>
+ <jvmarg value="-Djboss.aop.path=etc/META-INF/pojocache-aop.xml"/>
+ </testng>
+ </target>
+
+ <target name="run.demo" depends="compile" description="Run JBoss Cache demo.">
+ <java classname="org.jboss.cache.pojo.demo.PojoCacheView" fork="yes">
+ <jvmarg value="-Xmx128M"/>
+ <jvmarg value="-javaagent:lib/jboss-aop.jar"/>
+ <jvmarg value="-Djboss.aop.path=etc/META-INF/pojocache-aop.xml"/>
+ <classpath refid="test.classpath"/>
+ <jvmarg value="${jvm.ipv4}"/>
+ <jvmarg value="${jvm.localhost}"/>
+ <arg value="-console"/>
+ </java>
+ </target>
+
+</project>
Copied: pojo/tags/2.1.0.GA/src/main/release/etc (from rev 5433, pojo/branches/2.1/src/main/release/etc)
Copied: pojo/tags/2.1.0.GA/src/main/release/etc/META-INF (from rev 5437, pojo/branches/2.1/src/main/release/etc/META-INF)
Deleted: pojo/tags/2.1.0.GA/src/main/release/etc/replSync-service.xml
===================================================================
--- pojo/branches/2.1/src/main/release/etc/replSync-service.xml 2008-03-15 04:18:42 UTC (rev 5433)
+++ pojo/tags/2.1.0.GA/src/main/release/etc/replSync-service.xml 2008-03-15 05:40:15 UTC (rev 5439)
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- ===================================================================== -->
-<!-- -->
-<!-- Sample TreeCache Service Configuration -->
-<!-- -->
-<!-- ===================================================================== -->
-
-<server>
-
- <!-- ==================================================================== -->
- <!-- Defines TreeCache configuration -->
- <!-- ==================================================================== -->
-
- <mbean code="org.jboss.cache.jmx.CacheJmxWrapper"
- name="jboss.cache:service=TreeCache">
-
- <depends>jboss:service=Naming</depends>
- <depends>jboss:service=TransactionManager</depends>
-
- <!--
- Configure the TransactionManager
- -->
- <attribute name="TransactionManagerLookupClass">org.jboss.cache.transaction.GenericTransactionManagerLookup
- </attribute>
-
- <!--
- Isolation level : SERIALIZABLE
- REPEATABLE_READ (default)
- READ_COMMITTED
- READ_UNCOMMITTED
- NONE
- -->
- <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
-
- <!--
- Valid modes are LOCAL
- REPL_ASYNC
- REPL_SYNC
- INVALIDATION_ASYNC
- INVALIDATION_SYNC
- -->
- <attribute name="CacheMode">REPL_SYNC</attribute>
-
- <!--
- Just used for async repl: use a replication queue
- -->
- <attribute name="UseReplQueue">false</attribute>
-
- <!--
- Replication interval for replication queue (in ms)
- -->
- <attribute name="ReplQueueInterval">0</attribute>
-
- <!--
- Max number of elements which trigger replication
- -->
- <attribute name="ReplQueueMaxElements">0</attribute>
-
- <!-- Name of cluster. Needs to be the same for all TreeCache nodes in a
- cluster in order to find each other.
- -->
- <attribute name="ClusterName">JBossCache-Cluster</attribute>
-
- <!--Uncomment next three statements to enable JGroups multiplexer.
-This configuration is dependent on the JGroups multiplexer being
-registered in an MBean server such as JBossAS. -->
- <!--
- <depends>jgroups.mux:name=Multiplexer</depends>
- <attribute name="MultiplexerService">jgroups.mux:name=Multiplexer</attribute>
- <attribute name="MultiplexerStack">fc-fast-minimalthreads</attribute>
- -->
-
- <!-- JGroups protocol stack properties.
- ClusterConfig isn't used if the multiplexer is enabled and successfully initialized.
- -->
- <attribute name="ClusterConfig">
- <config>
- <UDP mcast_addr="228.10.10.10"
- mcast_port="45588"
- tos="8"
- ucast_recv_buf_size="20000000"
- ucast_send_buf_size="640000"
- mcast_recv_buf_size="25000000"
- mcast_send_buf_size="640000"
- loopback="false"
- discard_incompatible_packets="true"
- max_bundle_size="64000"
- max_bundle_timeout="30"
- use_incoming_packet_handler="true"
- ip_ttl="2"
- enable_bundling="false"
- enable_diagnostics="true"
-
- use_concurrent_stack="true"
-
- thread_naming_pattern="pl"
-
- thread_pool.enabled="true"
- thread_pool.min_threads="1"
- thread_pool.max_threads="25"
- thread_pool.keep_alive_time="30000"
- thread_pool.queue_enabled="true"
- thread_pool.queue_max_size="10"
- thread_pool.rejection_policy="Run"
-
- oob_thread_pool.enabled="true"
- oob_thread_pool.min_threads="1"
- oob_thread_pool.max_threads="4"
- oob_thread_pool.keep_alive_time="10000"
- oob_thread_pool.queue_enabled="true"
- oob_thread_pool.queue_max_size="10"
- oob_thread_pool.rejection_policy="Run"/>
-
- <PING timeout="2000" num_initial_members="3"/>
- <MERGE2 max_interval="30000" min_interval="10000"/>
- <FD_SOCK/>
- <FD timeout="10000" max_tries="5" shun="true"/>
- <VERIFY_SUSPECT timeout="1500"/>
- <pbcast.NAKACK max_xmit_size="60000"
- use_mcast_xmit="false" gc_lag="0"
- retransmit_timeout="300,600,1200,2400,4800"
- discard_delivered_msgs="true"/>
- <UNICAST timeout="300,600,1200,2400,3600"/>
- <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
- max_bytes="400000"/>
- <pbcast.GMS print_local_addr="true" join_timeout="5000"
- join_retry_timeout="2000" shun="false"
- view_bundling="true" view_ack_collection_timeout="5000"/>
- <FRAG2 frag_size="60000"/>
- <pbcast.STREAMING_STATE_TRANSFER use_reading_thread="true"/>
- <!-- <pbcast.STATE_TRANSFER/> -->
- <pbcast.FLUSH timeout="0"/>
- </config>
- </attribute>
-
-
- <!--
- Whether or not to fetch state on joining a cluster
- NOTE this used to be called FetchStateOnStartup and has been renamed to be more descriptive.
- -->
- <attribute name="FetchInMemoryState">true</attribute>
-
- <!--
- The max amount of time (in milliseconds) we wait until the
- state (ie. the contents of the cache) are retrieved from
- existing members in a clustered environment
- -->
- <attribute name="StateRetrievalTimeout">15000</attribute>
-
- <!--
- Number of milliseconds to wait until all responses for a
- synchronous call have been received.
- -->
- <attribute name="SyncReplTimeout">15000</attribute>
-
- <!-- Max number of milliseconds to wait for a lock acquisition -->
- <attribute name="LockAcquisitionTimeout">10000</attribute>
-
- <!--
- Indicate whether to use region based marshalling or not. Set this to true if you are running under a scoped
- class loader, e.g., inside an application server. Default is "false".
- -->
- <attribute name="UseRegionBasedMarshalling">true</attribute>
- </mbean>
-
-
- <!-- Uncomment to get a graphical view of the TreeCache MBean above -->
- <!-- <mbean code="org.jboss.cache.TreeCacheView" name="jboss.cache:service=TreeCacheView">-->
- <!-- <depends>jboss.cache:service=TreeCache</depends>-->
- <!-- <attribute name="CacheService">jboss.cache:service=TreeCache</attribute>-->
- <!-- </mbean>-->
-
-
-</server>
Copied: pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng (from rev 5436, pojo/branches/2.1/src/test/java/org/jboss/cache/pojo/testng)
Deleted: pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java
===================================================================
--- pojo/branches/2.1/src/test/java/org/jboss/cache/pojo/testng/TestListener.java 2008-03-15 04:23:22 UTC (rev 5436)
+++ pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java 2008-03-15 05:40:15 UTC (rev 5439)
@@ -1,45 +0,0 @@
-package org.jboss.cache.pojo.testng;
-
-import org.testng.ITestContext;
-import org.testng.ITestListener;
-import org.testng.ITestResult;
-import org.testng.TestListenerAdapter;
-
-public class TestListener extends TestListenerAdapter
-{
- public void onStart(ITestContext arg0)
- {
- System.out.println("Running: " + arg0.getName());
-
- }
-
- public void onTestFailedButWithinSuccessPercentage(ITestResult arg0)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void onTestFailure(ITestResult arg0)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void onTestSkipped(ITestResult arg0)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void onTestStart(ITestResult arg0)
- {
- System.out.println("Running test:" + arg0.getTestClass().getName() + "." + arg0.getName());
- }
-
- public void onTestSuccess(ITestResult arg0)
- {
- // TODO Auto-generated method stub
-
- }
-
-}
Copied: pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java (from rev 5437, pojo/branches/2.1/src/test/java/org/jboss/cache/pojo/testng/TestListener.java)
===================================================================
--- pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java (rev 0)
+++ pojo/tags/2.1.0.GA/src/test/java/org/jboss/cache/pojo/testng/TestListener.java 2008-03-15 05:40:15 UTC (rev 5439)
@@ -0,0 +1,27 @@
+package org.jboss.cache.pojo.testng;
+
+import org.testng.ITestResult;
+import org.testng.TestListenerAdapter;
+
+public class TestListener extends TestListenerAdapter
+{
+ public void onTestFailure(ITestResult arg0)
+ {
+ System.out.println("Failed: " + getName(arg0));
+ }
+
+ private String getName(ITestResult arg0)
+ {
+ return arg0.getTestClass().getName() + "." + arg0.getName();
+ }
+
+ public void onTestSkipped(ITestResult arg0)
+ {
+ System.out.println("Skiped: " + getName(arg0));
+ }
+
+ public void onTestStart(ITestResult arg0)
+ {
+ System.out.println("Running test: " + getName(arg0));
+ }
+}
More information about the jbosscache-commits
mailing list