You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/03/20 04:29:58 UTC

svn commit: r639137 - in /openejb/branches/openejb-3.0: ./ assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/ container/openejb-core/ container/openejb-core/src/main/java/org/apache/openejb/core/mdb/ co...

Author: dblevins
Date: Wed Mar 19 20:29:54 2008
New Revision: 639137

URL: http://svn.apache.org/viewvc?rev=639137&view=rev
Log:
Merging r637548 - http://svn.apache.org/viewvc?rev=637548&view=rev

svn merge -r 637547:637548 https://svn.apache.org/repos/asf/openejb/trunk/openejb3 .

------------------------------------------------------------------------
r637548 | djencks | 2008-03-15 23:48:50 -0700 (Sat, 15 Mar 2008) | 1 line

OPENEJB-777 OPENEJB-702.  Introduce NamedXAResource wrapping for DBCP datasources, and supply a TxRecovery parameter to turn this on and off for DBCP pools and for mdbs.  Also introduce a factory bean to create the transaction manager together with XidFactory and HOWLLog so standalone openejb has transaction recovery possibilities.  These are all turned off in embedded as the tests do not shut down the log sufficiently for it to be restarted in the same vm.  The DBCP pool code is hacky but appears to work.
------------------------------------------------------------------------

Added:
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java
      - copied unchanged from r637548, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/GeronimoTransactionManagerFactory.java
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/ManagedDataSourceWithRecovery.java
      - copied unchanged from r637548, openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/ManagedDataSourceWithRecovery.java
Modified:
    openejb/branches/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
    openejb/branches/openejb-3.0/container/openejb-core/pom.xml
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
    openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
    openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
    openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
    openejb/branches/openejb-3.0/pom.xml

Modified: openejb/branches/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml (original)
+++ openejb/branches/openejb-3.0/assembly/openejb-tomcat/openejb-tomcat-webapp/src/main/resources/META-INF/org.apache.openejb.tomcat/service-jar.xml Wed Mar 19 20:29:54 2008
@@ -178,7 +178,7 @@
           id="Default MDB Container"
           service="Container"
           types="MESSAGE"
-          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit"
+          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit, TxRecovery"
           class-name="org.apache.openejb.core.mdb.MdbContainer">
 
     # The resource adapter delivers messages to the container
@@ -198,6 +198,11 @@
 
     InstanceLimit 10
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery true
+
+
   </ServiceProvider>
 
   <!--
@@ -240,11 +245,28 @@
   # Default Transaction Manager implementation
   # ================================================
   -->
-  <ServiceProvider
-          id="Default Transaction Manager"
-          service="TransactionManager"
-          types="TransactionManager"
-          class-name="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
+    <ServiceProvider
+            id="Default Transaction Manager"
+            service="TransactionManager"
+            types="TransactionManager"
+            factory-name="create"
+            constructor="defaultTransactionTimeoutSeconds, tmId, bufferClassName, bufferSizeKb, checksumEnabled, adler32Checksum, flushSleepTimeMilliseconds, logFileDir, logFileExt, logFileName, maxBlocksPerFile, maxBuffers, maxLogFiles, minBuffers, threadsWaitingForceThreshold"
+            class-name="org.apache.openejb.resource.GeronimoTransactionManagerFactory">
+           defaultTransactionTimeoutSeconds 600
+           bufferSizeKb 32
+           checksumEnabled true
+           adler32Checksum true
+           flushSleepTimeMilliseconds 50
+           logFileDir txlog
+           logFileExt log
+           logFileName howl
+           maxBlocksPerFile -1
+           maxBuffers 0
+        # set to 0 or less to disable transaction logging and recovery
+           maxLogFiles 2
+           minBuffers 4
+           threadsWaitingForceThreshold -1
+    </ServiceProvider>
 
   <!--
   # ================================================
@@ -256,7 +278,7 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged,TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     # Determines wether or not this data source should be JTA managed
@@ -271,6 +293,10 @@
 
     JtaManaged = true
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery true
+
     # Driver class name
 
     JdbcDriver org.hsqldb.jdbcDriver
@@ -450,10 +476,11 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged,TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     JtaManaged = false
+    TxRecovery = false
 
     # Driver class name
 
@@ -648,7 +675,8 @@
     BrokerXmlConfig broker:(tcp://localhost:61616)?useJmx=false
 
     # Broker address
-    ServerUrl vm://localhost?async=true
+    # ServerUrl vm://localhost?async=true
+    ServerUrl tcp://localhost:61616
 
     # DataSource for persistence messages
     DataSource Default Unmanaged JDBC Database

Modified: openejb/branches/openejb-3.0/container/openejb-core/pom.xml
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/pom.xml?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/pom.xml (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/pom.xml Wed Mar 19 20:29:54 2008
@@ -275,6 +275,10 @@
       <groupId>org.apache.geronimo.components</groupId>
       <artifactId>geronimo-transaction</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.objectweb.howl</groupId>
+      <artifactId>howl</artifactId>
+    </dependency>
     <!-- JavaMail -->
     <dependency>
       <groupId>org.apache.geronimo.javamail</groupId>

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/EndpointFactory.java Wed Mar 19 20:29:54 2008
@@ -37,14 +37,16 @@
     private final MdbInstanceFactory instanceFactory;
     private final ClassLoader classLoader;
     private final Class[] interfaces;
+    private final boolean txRecovery;
 
-    public EndpointFactory(ActivationSpec activationSpec, MdbContainer container, CoreDeploymentInfo deploymentInfo, MdbInstanceFactory instanceFactory) {
+    public EndpointFactory(ActivationSpec activationSpec, MdbContainer container, CoreDeploymentInfo deploymentInfo, MdbInstanceFactory instanceFactory, boolean txRecovery) {
         this.activationSpec = activationSpec;
         this.container = container;
         this.deploymentInfo = deploymentInfo;
         this.instanceFactory = instanceFactory;
         classLoader = container.getMessageListenerInterface().getClassLoader();
         interfaces = new Class[]{container.getMessageListenerInterface(), MessageEndpoint.class};
+        this.txRecovery = txRecovery;
     }
 
     public ActivationSpec getActivationSpec() {
@@ -56,8 +58,10 @@
     }
 
     public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException {
-        NamedXAResource wrapper = new WrapperNamedXAResource(xaResource, container.getContainerID().toString());
-        EndpointHandler endpointHandler = new EndpointHandler(container, deploymentInfo, instanceFactory, wrapper);
+        if (txRecovery) {
+            xaResource = new WrapperNamedXAResource(xaResource, container.getContainerID().toString());
+        }
+        EndpointHandler endpointHandler = new EndpointHandler(container, deploymentInfo, instanceFactory, xaResource);
         MessageEndpoint messageEndpoint = (MessageEndpoint) Proxy.newProxyInstance(classLoader, interfaces, endpointHandler);
         return messageEndpoint;
     }

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbContainer.java Wed Mar 19 20:29:54 2008
@@ -67,10 +67,11 @@
     private final Class messageListenerInterface;
     private final Class activationSpecClass;
     private final int instanceLimit;
+    private final boolean txRecovery;
 
     private final ConcurrentMap<Object, CoreDeploymentInfo> deployments = new ConcurrentHashMap<Object, CoreDeploymentInfo>();
 
-    public MdbContainer(Object containerID, TransactionManager transactionManager, SecurityService securityService, ResourceAdapter resourceAdapter, Class messageListenerInterface, Class activationSpecClass, int instanceLimit) {
+    public MdbContainer(Object containerID, TransactionManager transactionManager, SecurityService securityService, ResourceAdapter resourceAdapter, Class messageListenerInterface, Class activationSpecClass, int instanceLimit, boolean txRecovery) {
         this.containerID = containerID;
         this.transactionManager = transactionManager;
         this.securityService = securityService;
@@ -78,6 +79,7 @@
         this.messageListenerInterface = messageListenerInterface;
         this.activationSpecClass = activationSpecClass;
         this.instanceLimit = instanceLimit;
+        this.txRecovery = txRecovery;
     }
 
     public DeploymentInfo [] deployments() {
@@ -122,7 +124,7 @@
 
         // create the message endpoint
         MdbInstanceFactory instanceFactory = new MdbInstanceFactory(deploymentInfo, transactionManager, securityService, instanceLimit);
-        EndpointFactory endpointFactory = new EndpointFactory(activationSpec, this, deploymentInfo, instanceFactory);
+        EndpointFactory endpointFactory = new EndpointFactory(activationSpec, this, deploymentInfo, instanceFactory, txRecovery);
 
         // update the data structures
         // this must be done before activating the endpoint since the ra may immedately begin delivering messages

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/BasicManagedDataSource.java Wed Mar 19 20:29:54 2008
@@ -17,13 +17,14 @@
  */
 package org.apache.openejb.resource.jdbc;
 
-import org.apache.openejb.loader.SystemInstance;
-
-import javax.sql.DataSource;
 import java.io.File;
 import java.sql.SQLException;
 import java.util.Properties;
 
+import javax.sql.DataSource;
+
+import org.apache.openejb.loader.SystemInstance;
+
 public class BasicManagedDataSource extends org.apache.commons.dbcp.managed.BasicManagedDataSource {
     public synchronized String getUserName() {
         return super.getUsername();
@@ -54,7 +55,7 @@
         int level = IsolationLevels.getIsolationLevel(s);
         super.setDefaultTransactionIsolation(level);
     }
-    
+
     protected synchronized DataSource createDataSource() throws SQLException {
         if (dataSource != null) {
             return dataSource;
@@ -68,7 +69,8 @@
             helper.configure(this);
         }
 
-        // creat the data source
+        wrapTransactionManager();
+        // create the data source
         if (helper == null || !helper.enableUserDirHack()) {
             return super.createDataSource();
         } else {
@@ -86,4 +88,8 @@
             }
         }
     }
+
+    protected void wrapTransactionManager() {
+    }
+
 }

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java Wed Mar 19 20:29:54 2008
@@ -22,9 +22,13 @@
  * @version $Rev$ $Date$
  */
 public class DataSourceFactory {
-    public static DataSource create(boolean managed){
+    public static DataSource create(boolean managed, boolean txRecovery){
         if (managed){
-            return new BasicManagedDataSource();
+            if (txRecovery) {
+                return new ManagedDataSourceWithRecovery();
+            } else {
+                return new BasicManagedDataSource();
+            }
         } else {
             return new BasicDataSource();
         }

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb.embedded/service-jar.xml Wed Mar 19 20:29:54 2008
@@ -176,7 +176,7 @@
           id="Default MDB Container"
           service="Container"
           types="MESSAGE"
-          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit"
+          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit, TxRecovery"
           class-name="org.apache.openejb.core.mdb.MdbContainer">
 
     # The resource adapter delivers messages to the container
@@ -196,6 +196,10 @@
 
     InstanceLimit 10
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery false
+
   </ServiceProvider>
 
   <!--
@@ -235,7 +239,24 @@
           id="Default Transaction Manager"
           service="TransactionManager"
           types="TransactionManager"
-          class-name="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
+          factory-name="create"
+          constructor="defaultTransactionTimeoutSeconds, tmId, bufferClassName, bufferSizeKb, checksumEnabled, adler32Checksum, flushSleepTimeMilliseconds, logFileDir, logFileExt, logFileName, maxBlocksPerFile, maxBuffers, maxLogFiles, minBuffers, threadsWaitingForceThreshold"
+          class-name="org.apache.openejb.resource.GeronimoTransactionManagerFactory">
+         defaultTransactionTimeoutSeconds 600
+         bufferSizeKb 32
+         checksumEnabled true
+         adler32Checksum true
+         flushSleepTimeMilliseconds 50
+         logFileDir txlog
+         logFileExt log
+         logFileName howl
+         maxBlocksPerFile -1
+         maxBuffers 0
+      # set to 0 or less to disable transaction logging and recovery
+         maxLogFiles 0
+         minBuffers 4
+         threadsWaitingForceThreshold -1
+  </ServiceProvider>
 
   <!--
   # ================================================
@@ -247,7 +268,7 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged, TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     # Determines wether or not this data source should be JTA managed
@@ -262,6 +283,10 @@
 
     JtaManaged = true
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery false
+
     # Driver class name
 
     JdbcDriver org.hsqldb.jdbcDriver
@@ -441,10 +466,11 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged, TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     JtaManaged = false
+    TxRecovery = false
 
     # Driver class name
 
@@ -638,9 +664,9 @@
     # Broker configuration
     BrokerXmlConfig broker:(tcp://localhost:61616)?useJmx=false
 
-    # Broker address
-      # ServerUrl vm://localhost?async=true
-      ServerUrl tcp://localhost:61616
+    # Broker address (vm transport may not work with TxRecovery on)
+    ServerUrl vm://localhost?async=true
+    # ServerUrl tcp://localhost:61616
 
 
     # DataSource for persistence messages

Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/resources/META-INF/org.apache.openejb/service-jar.xml Wed Mar 19 20:29:54 2008
@@ -181,7 +181,7 @@
           id="Default MDB Container"
           service="Container"
           types="MESSAGE"
-          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit"
+          constructor="id, transactionManager, securityService, ResourceAdapter, MessageListenerInterface, ActivationSpecClass, InstanceLimit, TxRecovery"
           class-name="org.apache.openejb.core.mdb.MdbContainer">
 
     # The resource adapter delivers messages to the container
@@ -201,6 +201,10 @@
 
     InstanceLimit 10
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery true
+
   </ServiceProvider>
 
   <!--
@@ -236,11 +240,28 @@
   # Default Transaction Manager implementation
   # ================================================
   -->
-  <ServiceProvider
-          id="Default Transaction Manager"
-          service="TransactionManager"
-          types="TransactionManager"
-          class-name="org.apache.geronimo.transaction.manager.GeronimoTransactionManager"/>
+    <ServiceProvider
+            id="Default Transaction Manager"
+            service="TransactionManager"
+            types="TransactionManager"
+            factory-name="create"
+            constructor="defaultTransactionTimeoutSeconds, tmId, bufferClassName, bufferSizeKb, checksumEnabled, adler32Checksum, flushSleepTimeMilliseconds, logFileDir, logFileExt, logFileName, maxBlocksPerFile, maxBuffers, maxLogFiles, minBuffers, threadsWaitingForceThreshold"
+            class-name="org.apache.openejb.resource.GeronimoTransactionManagerFactory">
+           defaultTransactionTimeoutSeconds 600
+           bufferSizeKb 32
+           checksumEnabled true
+           adler32Checksum true
+           flushSleepTimeMilliseconds 50
+           logFileDir txlog
+           logFileExt log
+           logFileName howl
+           maxBlocksPerFile -1
+           maxBuffers 0
+        # set to 0 or less to disable transaction logging and recovery
+           maxLogFiles 2
+           minBuffers 4
+           threadsWaitingForceThreshold -1
+    </ServiceProvider>
 
   <!--
   # ================================================
@@ -252,7 +273,7 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged,TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     # Determines wether or not this data source should be JTA managed
@@ -267,6 +288,10 @@
 
     JtaManaged = true
 
+    # Specifies whether to use NamedXAResource wrappers to allow the geronimo tm
+    # to log and recover in doubt transactions.
+    TxRecovery true
+
     # Driver class name
 
     JdbcDriver org.hsqldb.jdbcDriver
@@ -446,10 +471,12 @@
           service="Resource"
           types="javax.sql.DataSource, DataSource"
           factory-name="create"
-          constructor="JtaManaged"
+          constructor="JtaManaged,TxRecovery"
           class-name="org.apache.openejb.resource.jdbc.DataSourceFactory">
 
     JtaManaged = false
+    TxRecovery true
+
 
     # Driver class name
 

Modified: openejb/branches/openejb-3.0/pom.xml
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/pom.xml?rev=639137&r1=639136&r2=639137&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/pom.xml (original)
+++ openejb/branches/openejb-3.0/pom.xml Wed Mar 19 20:29:54 2008
@@ -643,6 +643,11 @@
         </exclusions>
       </dependency>
       <dependency>
+        <groupId>org.objectweb.howl</groupId>
+        <artifactId>howl</artifactId>
+        <version>1.0.1-1</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.geronimo.javamail</groupId>
         <artifactId>geronimo-javamail_1.4_mail</artifactId>
         <version>1.2</version>