[jboss-svn-commits] JBL Code SVN: r26408 - in labs/jbosstm/workspace/resttx: webservice and 16 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 6 17:00:24 EDT 2009
Author: mmusgrov
Date: 2009-05-06 17:00:23 -0400 (Wed, 06 May 2009)
New Revision: 26408
Added:
labs/jbosstm/workspace/resttx/webservice/
labs/jbosstm/workspace/resttx/webservice/ObjectStore/
labs/jbosstm/workspace/resttx/webservice/ObjectStore/HashedActionStore/
labs/jbosstm/workspace/resttx/webservice/ObjectStore/HashedActionStore/defaultStore/
labs/jbosstm/workspace/resttx/webservice/ObjectStore/HashedActionStore/defaultStore/Recovery/
labs/jbosstm/workspace/resttx/webservice/ObjectStore/HashedActionStore/defaultStore/Recovery/TransactionStatusManager/
labs/jbosstm/workspace/resttx/webservice/build.xml
labs/jbosstm/workspace/resttx/webservice/go
labs/jbosstm/workspace/resttx/webservice/pom.xml
labs/jbosstm/workspace/resttx/webservice/src/
labs/jbosstm/workspace/resttx/webservice/src/main/
labs/jbosstm/workspace/resttx/webservice/src/main/webapp/
labs/jbosstm/workspace/resttx/webservice/src/main/webapp/WEB-INF/
labs/jbosstm/workspace/resttx/webservice/src/main/webapp/WEB-INF/web.xml
labs/jbosstm/workspace/resttx/webservice/src/test/
labs/jbosstm/workspace/resttx/webservice/src/test/java/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/test/
labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/test/AppTest.java
labs/jbosstm/workspace/resttx/webservice/src/test/resources/
labs/jbosstm/workspace/resttx/webservice/src/test/resources/log4j.xml
Log:
Add a demo
Added: labs/jbosstm/workspace/resttx/webservice/build.xml
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/build.xml (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/build.xml 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+
+<project name="REST" default="run" basedir=".">
+
+ <property name="build.classes.dir" value="target/classes/"/>
+ <property name="xsrc.dir" value="src"/>
+ <property name="src.dir" value="src/main/java/org/jboss/jbossts/rts/client/"/>
+
+ <property name="resteasy.dir" value="${basedir}/target/rest-tx/WEB-INF/lib"/>
+
+ <path id="classpath">
+ <pathelement location="${build.classes.dir}"/>
+ <pathelement location="target/rest-tx/WEB-INF/lib/junit-4.5.jar"/>
+ <pathelement location="${basedir}/target/rest-tx/WEB-INF/lib/log4j-1.2.12.jar"/>
+ <pathelement location="${basedir}/target/rest-tx/WEB-INF/lib/commons-logging-1.1.jar"/>
+ <pathelement location="${basedir}/target/test-classes"/>
+ <fileset dir="${resteasy.dir}" >
+ <include name="jaxrs-api-1.0-RC1.jar"/>
+ <include name="resteasy-jaxrs-1.0-RC1.jar"/>
+ <include name="commons-httpclient-3.1.jar"/>
+ <include name="commons-logging-1.0.4.jar"/>
+ <include name="commons-codec-1.2.jar"/>
+ </fileset>
+ </path>
+
+ <target name="compile">
+ <javac srcdir="${src.dir}"
+ destdir="${build.classes.dir}"
+ debug="on"
+ deprecation="on"
+ optimize="off"
+ includes="**">
+ <classpath refid="classpath"/>
+ </javac>
+ </target>
+ <target name="classes" depends="compile" />
+
+ <target name="run" depends="compile">
+ <java classname="org.jboss.jbossts.rts.client.TxTest" fork="yes" dir=".">
+ <classpath refid="classpath"/>
+ <sysproperty key="PORT" value="9099"/>
+ <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006" />
+ <jvmarg value="-Xms128m" />
+ <jvmarg value="-Xmx512M" />
+ </java>
+ </target>
+</project>
Added: labs/jbosstm/workspace/resttx/webservice/go
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/go (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/go 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+mvn jetty6:run-exploded -Dmaven.test.skip
+
+# run an external recovery manager
+#export CLASSPATH=/home/mmusgrov/.m2/repository/jboss/jbossts/jbossjta/4.4.0.GA/jbossjta-4.4.0.GA.jar:/home/mmusgrov/.m2/repository/jboss/jbossts/jbossts-common/4.4.0.GA/jbossts-common-4.4.0.GA.jar:/home/mmusgrov/source/jbosstm/branches/JBOSSTS_4_2_3_GA_SP/install/lib/ext/log4j-1.2.8.jar:/home/mmusgrov/source/jbosstm/branches/JBOSSTS_4_2_3_GA_SP/install/lib/ext/commons-logging.jar:src/test/resources/:target/classes
+
+#java com.arjuna.ats.arjuna.recovery.RecoveryManager -test
Property changes on: labs/jbosstm/workspace/resttx/webservice/go
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbosstm/workspace/resttx/webservice/pom.xml
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/pom.xml (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/pom.xml 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ JBoss, Home of Professional Open Source Copyright 2009, Red Hat
+ Middleware LLC, and others contributors as indicated by the @authors
+ tag. All rights reserved. See the copyright.txt in the distribution
+ for a full listing of individual contributors. This copyrighted
+ material is made available to anyone wishing to use, modify, copy, or
+ redistribute it subject to the terms and conditions of the GNU Lesser
+ General Public License, v. 2.1. This program is distributed in the
+ hope that it will be useful, but WITHOUT A WARRANTY; without even the
+ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU Lesser General Public License for more details.
+ You should have received a copy of the GNU Lesser General Public
+ License, v.2.1 along with this distribution; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA.
+-->
+
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.jbossts.rts</groupId>
+ <artifactId>rest-tx-web</artifactId>
+ <version>1.0-M1-SNAPSHOT</version>
+ <packaging>war</packaging>
+ <name/>
+ <description/>
+
+ <repositories>
+ <repository>
+ <id>java.net</id>
+ <url>http://download.java.net/maven/1</url>
+ <layout>legacy</layout>
+ </repository>
+ <repository>
+ <id>maven repo</id>
+ <name>maven repo</name>
+ <url>http://repo1.maven.org/maven2/</url>
+ </repository>
+ <repository>
+ <id>jboss</id>
+ <name>jboss repo</name>
+ <url>http://repository.jboss.org/maven2</url>
+ </repository>
+ <repository>
+ <id>scannotation</id>
+ <url>http://scannotation.sf.net/maven2</url>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.jbossts.rts</groupId>
+ <artifactId>rest-tx-api</artifactId>
+ <version>1.0-M1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss.jbossts</groupId>
+ <artifactId>jbossjts</artifactId>
+ <version>4.4.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss.jbossts</groupId>
+ <artifactId>jbossts-common</artifactId>
+ <version>4.4.0.GA</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxrs</artifactId>
+ <version>1.0-RC1</version>
+
+ <!-- filter out unwanted jars -->
+ <exclusions>
+ <exclusion>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ </exclusion>
+<!--
+ <exclusion>
+ <groupId>tjws</groupId>
+ <artifactId>webserver</artifactId>
+ </exclusion>
+-->
+ <exclusion>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.resteasy</groupId>
+ <artifactId>resteasy-jaxb-provider</artifactId>
+ <version>1.0-RC1</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty6-plugin</artifactId>
+ <version>6.0.0beta17</version>
+ <configuration>
+ <!-- By default the artifactId is taken, override it with something simple -->
+ <contextPath>/</contextPath>
+ <scanIntervalSeconds>2</scanIntervalSeconds>
+ <connectors>
+ <connector
+ implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+ <port>9099</port>
+ <host>localhost</host>
+ <maxIdleTime>60000</maxIdleTime>
+ </connector>
+ </connectors>
+ <systemProperties>
+ <systemProperty>
+ <name>PORT</name>
+ <value>9099</value>
+ </systemProperty>
+ <systemProperty>
+ <name>log4j.configuration</name>
+ <value>file:./src/test/resources/log4j.xml</value>
+ </systemProperty>
+ <systemProperty>
+ <name>com.arjuna.ats.arjuna.common.propertiesFile</name>
+ <value>file:./src/test/resources/jbossjta-properties.xml</value>
+ </systemProperty>
+ </systemProperties>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: labs/jbosstm/workspace/resttx/webservice/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/src/main/webapp/WEB-INF/web.xml 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,36 @@
+<?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>Archetype Created Web Application</display-name>
+
+ <context-param>
+ <param-name>javax.ws.rs.core.Application</param-name>
+ <param-value>org.jboss.jbossts.rts.service.TMApplication</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>resteasy.servlet.mapping.prefix</param-name>
+ <param-value>/tx</param-value>
+ </context-param>
+
+ <listener>
+ <listener-class>
+ org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
+ </listener-class>
+ </listener>
+
+ <servlet>
+ <servlet-name>Tx</servlet-name>
+ <servlet-class>
+ org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
+ </servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Tx</servlet-name>
+ <url-pattern>/tx/*</url-pattern>
+ </servlet-mapping>
+
+</web-app>
\ No newline at end of file
Added: labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/test/AppTest.java
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/test/AppTest.java (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/src/test/java/org/jboss/jbossts/rts/test/AppTest.java 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,236 @@
+package org.jboss.jbossts.rts.test;
+
+import junit.framework.TestCase;
+
+import org.jboss.resteasy.plugins.server.tjws.TJWSEmbeddedJaxrsServer;
+import org.jboss.resteasy.util.HttpResponseCodes;
+import org.jboss.jbossts.rts.util.TxUtil;
+import org.jboss.jbossts.rts.service.TMApplication;
+import org.jboss.jbossts.rts.provider.HttpResponseException;
+import org.apache.log4j.Logger;
+
+import java.io.IOException;
+
+/**
+ * Run through some basic tests to validate that the protocol matches the specification
+ */
+public class AppTest extends TestCase
+{
+ protected final static Logger log = Logger.getLogger(AppTest.class);
+ private static int PORT = TxUtil.getIntProperty("PORT", "9096");
+ private static TJWSEmbeddedJaxrsServer tjws;
+
+ private String[] URLS;
+
+ /**
+ * Create the test case
+ *
+ * @param testName name of the test case
+ */
+ public AppTest( String testName )
+ {
+ super( testName );
+ }
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ TxUtil.setEndpoint("localhost", PORT, "");
+
+ log.trace("setUp: " + TxUtil.getBaseURI());
+ URLS = new String[] {
+ TxUtil.txURI + ".html", // list txns
+ TxUtil.txURI + "/begin?clientId=12345", // start a tx on behalf of client id 12345
+ TxUtil.txURI + "/tx/commit", // commit tx 123
+ TxUtil.txURI + "/0/commit", // commit a non existant tx
+ TxUtil.txURI + "/commit", // commit a non existant tx
+ TxUtil.txURI + "/tx", // enlist a participant in tx 123
+ };
+
+ tjws = new TJWSEmbeddedJaxrsServer();
+ tjws.setPort(PORT);
+ tjws.setBindAddress("127.0.0.1");
+ TMApplication.initApplication(tjws);
+ tjws.start();
+ System.out.println("web server is running on port " + PORT);
+ }
+
+ protected void tearDown() throws Exception
+ {
+ log.trace("stoppig server");
+ super.tearDown();
+
+ tjws.stop();
+ }
+
+ private String startTx(long timeout, boolean fail) throws IOException
+ {
+ String tx = null;
+
+ try {
+ String query = "clientId=12345" + (timeout == 0 ? "" : "&timeout=" + timeout);
+
+ tx = TxUtil.doPost(new int[] {HttpResponseCodes.SC_CREATED}, TxUtil.txURI + "/begin?" + query);
+ log.trace("Started tx: " + tx);
+ if (fail)
+ assertTrue("start tx should have failed", false);
+ } catch (HttpResponseException e) {
+ if (!fail)
+ assertTrue(e.getMessage(), false);
+ }
+
+ return tx;
+ }
+
+ private String modifyResource(String tx, String pid, String name, String value)
+ {
+ try {
+ return TxUtil.doPost(new int[] {HttpResponseCodes.SC_OK}, TxUtil.getBaseURI() + "participant/work/" + pid,
+ "name=" + name, "value=" + value, "context=" + tx);
+ } catch (HttpResponseException e) {
+ assertTrue(e.getMessage(), false);
+ return null;
+ }
+ }
+
+ private String getResource(String tx, String pid, String name)
+ {
+ try {
+ return TxUtil.doGet(new int[] {HttpResponseCodes.SC_OK}, TxUtil.getBaseURI() + "participant/work/" + pid,
+ "name=" + name, "context=" + tx);
+ } catch (HttpResponseException e) {
+ assertTrue(e.getMessage(), false);
+ return null;
+ }
+ }
+
+ private void terminateTx(String tx, String how, boolean fail, String ... args)
+ {
+ try {
+ TxUtil.doPut(new int[] {HttpResponseCodes.SC_OK}, tx + "/" + how, "", args);
+ if (fail)
+ assertTrue("commit should not have succeeded", false);
+ } catch (HttpResponseException e) {
+ if (!fail)
+ assertTrue(e.getMessage(), false);
+ }
+ }
+
+ private void commitTx(String tx, boolean fail, String ... args)
+ {
+ terminateTx(tx, "commit", fail, args);
+ }
+
+ private void rollbackTx(String tx, boolean fail, String ... args)
+ {
+ terminateTx(tx, "rollback", fail, args);
+ }
+
+ // 1PC commit
+ public void test1() throws IOException
+ {
+ String tx = startTx(0L, false);
+ modifyResource(tx, "pid1", "p1", "v1");
+ commitTx(tx, false);
+ }
+ // 2PC commit
+ public void test2() throws IOException
+ {
+ String tx = startTx(0L, false);
+ modifyResource(tx, "pid1", "p1", "v1");
+ modifyResource(tx, "pid2", "p2", "v2");
+ commitTx(tx, false);
+ commitTx(tx, true); // should not be able to commit a completed transaction
+ }
+ // commit an invalid transaction
+ public void test3() throws IOException
+ {
+ String tx = "http://localhost:9096/transaction-coordinator/dead_7f000001_b9cc_4981ded5_5";
+ commitTx(tx, true);
+ }
+
+ /**
+ * Modify a resource within a transaction and rollback.
+ * Ensure that the resource has not changed.
+ */
+ public void test4() throws IOException
+ {
+ String v1 = modifyResource(null, "pid1", "p1", "v1");
+ String v2 = modifyResource(null, "pid2", "p1", "v1");
+
+ String tx = startTx(0L, false);
+
+ String v3 = modifyResource(tx, "pid1", "p1", "txv1");
+ String v4 = modifyResource(tx, "pid2", "p1", "txv1");
+
+ rollbackTx(tx, false);
+ rollbackTx(tx, true); // should not be able to rollback a completed transaction
+
+ // make sure the changes were rolled back
+ String v5 = getResource(null, "pid1", "p1");
+ String v6 = getResource(null, "pid2", "p1");
+
+ assertTrue("participant 1's work wasn't rolled back correctly", v1.equals(v5));
+ assertTrue("participant 2's work wasn't rolled back correctly", v2.equals(v6));
+ }
+
+ /**
+ * Test the Recovery URL
+ */
+ public void test5() throws IOException
+ {
+ String tx = startTx(0L, false); // start a transaction
+
+ String pUrl = TxUtil.getBaseURI() + "particpant/123"; // participant url
+ // Registering a participant with the transaction returns a recovery url
+ String recCoordId = TxUtil.doPut(new int[] {HttpResponseCodes.SC_OK}, tx, pUrl, "URL=" + pUrl);
+
+ // doing a GET on recCoordId should return the original url
+ String origUrl = TxUtil.doGet(new int[] {HttpResponseCodes.SC_OK}, recCoordId);
+ assertEquals("GET on recovery url does not return orignal participant url", pUrl, origUrl);
+
+ // doing a PUT on recCoordId should replace the participant URL (used by
+ // participants to tell the recovery coordinator that they have moved
+ pUrl = TxUtil.getBaseURI() + "particpant/123"; // the new participant URL
+ // replace the url with a new one
+ TxUtil.doPut(new int[] {HttpResponseCodes.SC_OK}, recCoordId, pUrl, "URL=" + pUrl);
+
+ // check that the url was replaced by doing another GET on the recovery URL
+ origUrl = TxUtil.doGet(new int[] {HttpResponseCodes.SC_OK}, recCoordId);
+ assertEquals("GET on recovery url does not return the replaced participant url", pUrl, origUrl);
+
+ // and finally check that POST and DELETE on the recovery URL fail
+ TxUtil.doPost(new int[] {HttpResponseCodes.SC_UNAUTHORIZED}, recCoordId);
+ TxUtil.doDelete(new int[] {HttpResponseCodes.SC_UNAUTHORIZED}, recCoordId);
+
+ rollbackTx(tx, false);
+ }
+
+ /*
+ * Test recovery
+ */
+ public void test6() throws IOException
+ {
+ boolean crashVM = false;
+ String[] txns = {startTx(0L, false), startTx(0L, false)};
+
+ for (int i = 0; i < txns.length; i++) {
+ modifyResource(txns[i], "pid1", "p1", "v1" + i);
+ modifyResource(txns[i], "pid2", "p2", "v2" + i);
+ }
+
+ // list transactions
+ String txlist = TxUtil.doGet(new int[] {HttpResponseCodes.SC_OK}, TxUtil.txURI);
+ // there should be 2
+ assertEquals("List transactions does not match the number of running transactions",
+ txlist.split("ActionStatus").length - 1, 2);
+
+ for (int i = 0; i < txns.length; i++) {
+ if (i == txns.length - 1 && crashVM)
+ commitTx(txns[i], false, "fault=commit_halt");
+ else
+ commitTx(txns[i], false);
+ }
+ }
+}
Added: labs/jbosstm/workspace/resttx/webservice/src/test/resources/log4j.xml
===================================================================
--- labs/jbosstm/workspace/resttx/webservice/src/test/resources/log4j.xml (rev 0)
+++ labs/jbosstm/workspace/resttx/webservice/src/test/resources/log4j.xml 2009-05-06 21:00:23 UTC (rev 26408)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out"/>
+ <param name="Threshold" value="INFO"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{ABSOLUTE} {%8.8t} (%x) [%-5p,%-10c{1}] %m%n"/>
+ </layout>
+ </appender>
+
+ <appender name="file" class="org.apache.log4j.FileAppender">
+ <param name="File" value="logs/test.log"/>
+ <param name="Append" value="false"/>
+ <param name="Threshold" value="INFO"/>
+
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
+ </layout>
+ </appender>
+
+ <category name="org.jboss.resteasy">
+ <level value="WARN"/>
+ <appender-ref ref="console"/>
+ <appender-ref ref="file"/>
+ </category>
+
+ <category name="org.jboss.jbossts.rts">
+ <level value="INFO"/>
+ <appender-ref ref="console"/>
+ <appender-ref ref="file"/>
+ </category>
+
+ <category name="com.arjuna">
+ <level value="WARN"/>
+ <appender-ref ref="console"/>
+ <appender-ref ref="file"/>
+ </category>
+
+ <category name="org.apache.commons.httpclient">
+ <level value="WARN"/>
+ <appender-ref ref="console"/>
+ <appender-ref ref="file"/>
+ </category>
+
+</log4j:configuration>
More information about the jboss-svn-commits
mailing list