[jboss-svn-commits] JBL Code SVN: r34683 - in labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer: drools-timer-core/src/main/java/org/drools/timer/core and 10 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Aug 12 15:38:24 EDT 2010
Author: diegoll
Date: 2010-08-12 15:38:20 -0400 (Thu, 12 Aug 2010)
New Revision: 34683
Added:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
Modified:
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml
labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java
Log:
[JBRULES-2616] tunning scheduler to be ready in integration
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/pom.xml 2010-08-12 19:38:20 UTC (rev 34683)
@@ -80,6 +80,16 @@
</dependency>
<dependency>
<groupId>org.drools</groupId>
+ <artifactId>drools-spring</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-persistence-jpa</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
<artifactId>drools-timer-executor</artifactId>
<scope>test</scope>
</dependency>
@@ -88,6 +98,36 @@
<artifactId>drools-timer-scheduler</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- weird dependencies -->
+ <dependency>
+ <groupId>org.opensymphony.quartz</groupId>
+ <artifactId>quartz</artifactId>
+ <version>1.6.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${springframework-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+
</dependencies>
</project>
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/ProcessTimerQuartzPersistenceStrategy.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -5,25 +5,14 @@
import org.drools.time.impl.IntervalTrigger;
import org.drools.time.impl.ProcessJobHandle;
import org.drools.timer.core.connector.SchedulerConnector;
-import org.drools.timer.persistence.JPATimerPersistence;
import org.drools.timer.persistence.TimerPersistence;
import org.drools.timer.persistence.model.TimerState;
public class ProcessTimerQuartzPersistenceStrategy implements ProcessTimerPersistenceStrategy {
- private final SchedulerConnector connector;
- private final TimerPersistence timerPersistence;
+ private SchedulerConnector connector;
+ private TimerPersistence timerPersistence;
- public ProcessTimerQuartzPersistenceStrategy(SchedulerConnector connector) throws Exception {
- this(connector, new JPATimerPersistence());
- }
-
- public ProcessTimerQuartzPersistenceStrategy(SchedulerConnector connector, TimerPersistence timerPersistence) throws Exception {
- this.connector = connector;
- this.connector.connect();
- this.timerPersistence = timerPersistence;
- }
-
public void save(ProcessJobContext processContext, IntervalTrigger intervalTrigger) {
connector.save(processContext);
TimerState timerState = new TimerState();
@@ -37,4 +26,12 @@
return false;
}
+ public void setConnector(SchedulerConnector connector) {
+ this.connector = connector;
+ }
+
+ public void setTimerPersistence(TimerPersistence timerPersistence) {
+ this.timerPersistence = timerPersistence;
+ }
+
}
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/SchedulerConnector.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -5,8 +5,6 @@
public interface SchedulerConnector {
- public void connect() throws Exception;
- public void disconnect() throws Exception;
public void save(ProcessJobContext processContext);
public boolean remove(ProcessJobHandle jobHandle);
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/main/java/org/drools/timer/core/connector/impl/HornetQSchedulerConnector.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -3,89 +3,21 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
-import java.util.HashMap;
-import java.util.Map;
import org.drools.process.instance.timer.TimerManager.ProcessJobContext;
import org.drools.time.impl.ProcessJobHandle;
import org.drools.timer.core.connector.SchedulerConnector;
import org.drools.timer.message.impl.InsertScheduledTimerMessage;
import org.hornetq.api.core.HornetQException;
-import org.hornetq.api.core.TransportConfiguration;
import org.hornetq.api.core.client.ClientMessage;
import org.hornetq.api.core.client.ClientProducer;
import org.hornetq.api.core.client.ClientSession;
-import org.hornetq.api.core.client.ClientSessionFactory;
-import org.hornetq.api.core.client.HornetQClient;
-import org.hornetq.integration.transports.netty.NettyConnectorFactory;
-import org.hornetq.integration.transports.netty.TransportConstants;
public class HornetQSchedulerConnector implements SchedulerConnector {
- private String DEFAULT_TIMER_MESSAGES_QUEUE = "timerServiceMessages";
-
private ClientSession session;
private ClientProducer producer;
- private Integer port;
- private String address;
- private boolean connected;
- /**
- * Create a HornetQ connector with the Timer Scheduler
- * @param address Timer Scheduler address
- * @param port Timer Scheduler port
- */
- public HornetQSchedulerConnector(String address, Integer port) {
- if (address==null) {
- throw new IllegalArgumentException("address is a required argument");
- }
- if (port==null) {
- throw new IllegalArgumentException("port is a required argument");
- }
- this.address = address;
- this.port = port;
- }
-
- /**
- * Create a HornetQ connector to the Timer Scheduler
- * @param address Timer Scheduler address
- * @param port Timer Scheduler port
- * @param timersMessageQueue Must be configured if was changed in the Timer Scheduler configuration.
- * Default value: timerServiceMessages
- */
- public HornetQSchedulerConnector(String address, Integer port, String timersMessageQueue) {
- this(address, port);
- if (timersMessageQueue==null) {
- throw new IllegalArgumentException("TimersMessageQueue is a required argument");
- }
- this.DEFAULT_TIMER_MESSAGES_QUEUE = timersMessageQueue;
- }
-
- /**
- * Create the connection with the Timer Scheduler.
- */
- public void connect() throws HornetQException {
- if (connected) {
- return;
- }
- Map<String, Object> connectionParams = new HashMap<String, Object>();
- connectionParams.put(TransportConstants.PORT_PROP_NAME, port);
- connectionParams.put(TransportConstants.HOST_PROP_NAME, address);
- TransportConfiguration transportConfiguration = new TransportConfiguration(NettyConnectorFactory.class.getCanonicalName(), connectionParams);
- ClientSessionFactory factory = HornetQClient.createClientSessionFactory(transportConfiguration);
- session = factory.createSession();
- producer = session.createProducer(DEFAULT_TIMER_MESSAGES_QUEUE);
- session.start();
- connected = true;
- }
-
- public void disconnect() throws Exception {
- if (session!= null && !session.isClosed()) {
- session.close();
- producer.close();
- }
- }
-
public void save(ProcessJobContext processContext) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oout;
@@ -111,4 +43,11 @@
return true;
}
+ public void setSession(ClientSession session) {
+ this.session = session;
+ }
+
+ public void setProducer(ClientProducer producer) {
+ this.producer = producer;
+ }
}
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1,7 @@
+package org.drools.timer.test;
+
+import java.io.Serializable;
+
+public class Buddy implements Serializable{
+
+}
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/Buddy.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/java/org/drools/timer/test/PersistentTimerProcessTest.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -12,20 +12,42 @@
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.timer.message.TimerJob;
import org.drools.timer.scheduler.TimerSchedulerHornetQService;
+import org.h2.tools.DeleteDbFiles;
+import org.h2.tools.Server;
+import org.junit.AfterClass;
import org.junit.Assert;
-import org.junit.Ignore;
+import org.junit.BeforeClass;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class PersistentTimerProcessTest {
+
+ private static final String H2_DB_NAME = "persistentTimersTest";
+ private static final Logger logger = LoggerFactory.getLogger(PersistentTimerProcessTest.class);
+ private static Server h2Server;
+
+ @BeforeClass
+ public static void startH2Database() throws Exception {
+ DeleteDbFiles.execute("", H2_DB_NAME, true);
+ h2Server = Server.createTcpServer(new String[0]);
+ h2Server.start();
+ }
+ @AfterClass
+ public static void stopH2Database() throws Exception {
+ logger.info( "stoping database" );
+ h2Server.stop();
+ DeleteDbFiles.execute( "", H2_DB_NAME, true );
+ }
+
@Test
- @Ignore
public void scheduleAndTriggerPersistentTimer() throws InterruptedException{
- String sessionContextLocation = "classpath:/completedProcessSession.xml";
+ String sessionContextLocation = "classpath:/timerProcessSession.xml";
AbstractApplicationContext mainApplicationContext = createMainApplicationContext(sessionContextLocation);
AbstractApplicationContext executorApplicationContext = createExecutorApplicationContext(sessionContextLocation);
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcess.rf 2010-08-12 19:38:20 UTC (rev 34683)
@@ -6,7 +6,7 @@
<header>
<imports>
- <import name="org.drools.job.executor.timer.Buddy" />
+ <import name="org.drools.timer.test.Buddy" />
</imports>
</header>
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-core/src/test/resources/timerProcessSession.xml 2010-08-12 19:38:20 UTC (rev 34683)
@@ -57,11 +57,51 @@
<key>
<util:constant static-field="org.drools.runtime.EnvironmentName.PROCESS_TIMER_STRATEGY"/>
</key>
- <bean class="org.drools.job.executor.timer.MockProcessTimerPersistenceStrategy" />
+ <ref bean="quartzPersistenceStrategy"/>
</entry>
</map>
</property>
</bean>
+
+ <!-- persistence strategy configuration -->
+ <bean id="quartzPersistenceStrategy" class="org.drools.timer.core.ProcessTimerQuartzPersistenceStrategy">
+ <property name="connector">
+ <bean class="org.drools.timer.core.connector.impl.HornetQSchedulerConnector">
+ <property name="session" ref="clientSession" />
+ <property name="producer">
+ <bean factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+ <constructor-arg value="timerServiceMessages" />
+ </bean>
+ </property>
+ </bean>
+ </property>
+ <property name="timerPersistence">
+ <bean class="org.drools.timer.persistence.JPATimerPersistence">
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
+ </bean>
+ </property>
+ </bean>
+
+ <!-- HornetQ configuration -->
+ <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start"/>
+ <bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient" factory-method="createClientSessionFactory" depends-on="hornetQServer" >
+ <constructor-arg>
+ <bean class="org.hornetq.api.core.TransportConfiguration">
+ <constructor-arg>
+ <value>org.hornetq.integration.transports.netty.NettyConnectorFactory</value>
+ </constructor-arg>
+ <constructor-arg>
+ <map>
+ <entry>
+ <key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME"/></key>
+ <value>5446</value>
+ </entry>
+ </map>
+ </constructor-arg>
+ </bean>
+ </constructor-arg>
+ </bean>
+ <bean id="hornetQServer" class="java.lang.Object"/>
<!-- persistence configuration -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/java/org/drools/timer/persistence/JPATimerPersistence.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -1,59 +1,49 @@
package org.drools.timer.persistence;
import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import javax.persistence.EntityManagerFactory;
import org.drools.timer.persistence.model.TimerState;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.TransactionCallback;
-import org.springframework.transaction.support.TransactionTemplate;
public class JPATimerPersistence implements TimerPersistence {
- @PersistenceContext
- private EntityManager em;
- private PlatformTransactionManager transactionManager;
+ private EntityManagerFactory entityManagerFactory;
public void save(final TimerState object) {
- TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
- txTemplate.execute(new TransactionCallback() {
- public Object doInTransaction(TransactionStatus status) {
- em.persist(object);
- return object;
- }
- });
+ getEntityManager().persist(object);
}
public boolean isExecutable(final long processInstanceId) {
- TransactionTemplate txTemplate = new TransactionTemplate(transactionManager);
- txTemplate.execute(new TransactionCallback() {
- public Object doInTransaction(TransactionStatus status) {
- TimerState timerState = (TimerState) em.createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
- .setParameter("processInstanceId", processInstanceId).getSingleResult();
- return timerState.isExecuted();
- }
- });
- return false;
+ TimerState timerState = (TimerState) getEntityManager()
+ .createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+ .setParameter("processInstanceId", processInstanceId)
+ .getSingleResult();
+ return timerState.isExecuted();
}
public TimerState load(long processInstanceId) {
- TimerState timerState = (TimerState) em.createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
- .setParameter("processInstanceId", processInstanceId).getSingleResult();
+ TimerState timerState = (TimerState) getEntityManager()
+ .createQuery("SELECT t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+ .setParameter("processInstanceId", processInstanceId)
+ .getSingleResult();
return timerState;
}
public void remove(long processInstanceId) {
- em.createQuery("DELETE t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
+ getEntityManager().createQuery("DELETE t FROM TimerState t WHERE t.processInstanceId=:processInstanceId")
.setParameter("processInstanceId", processInstanceId).executeUpdate();
}
- public void setTransactionManager(PlatformTransactionManager transactionManager) {
- this.transactionManager = transactionManager;
- }
+ private EntityManager getEntityManager(){
+ return getEntityManagerFactory().createEntityManager();
+ }
- public PlatformTransactionManager getTransactionManager() {
- return transactionManager;
- }
+ public EntityManagerFactory getEntityManagerFactory() {
+ return entityManagerFactory;
+ }
+ public void setEntityManagerFactory(EntityManagerFactory entityManagerFactory) {
+ this.entityManagerFactory = entityManagerFactory;
+ }
+
}
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml 2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd">
+ <persistence-unit name="org.drools.timer.persistence.jpa" transaction-type="JTA">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <jta-data-source>jdbc/timersDS</jta-data-source>
+ <class>org.drools.timer.persistence.model.TimerState</class>
+ <properties>
+ <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
+ <property name="hibernate.max_fetch_depth" value="3"/>
+ <property name="hibernate.hbm2ddl.auto" value="update" />
+ <property name="hibernate.show_sql" value="true" />
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.BTMTransactionManagerLookup" />
+ </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/META-INF/persistence.xml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties (rev 0)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties 2010-08-12 19:38:20 UTC (rev 34683)
@@ -0,0 +1 @@
+java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory
\ No newline at end of file
Property changes on: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-persistence/src/main/resources/jndi.properties
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-scheduler/src/main/resources/schedulerContext.xml 2010-08-12 19:38:20 UTC (rev 34683)
@@ -8,24 +8,24 @@
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd" >
+
<bean id="schedulerService" class="org.drools.timer.scheduler.TimerSchedulerHornetQService">
<property name="consumer" ref="timerMessageConsumer"/>
<property name="timerScheduler" ref="timerScheduler"/>
</bean>
-
+
<bean id="timerMessageConsumer" factory-bean="clientSession" factory-method="createConsumer" destroy-method="close">
<constructor-arg value="timerServiceMessages"/>
</bean>
-
- <bean id="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler" >
+
+ <bean id="timerScheduler" class="org.drools.timer.scheduler.TimerScheduler">
<property name="scheduler" ref="scheduler" />
+ <property name="timerPersistence" ref="jpaTimerPersistence" />
+ <property name="session" ref="clientSession" />
+ <property name="timerExecutorConnector" ref="timerMessageProducer" />
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
- <!-- Create a datasource and remove the quartz datasource properties -->
- <!-- <property name="dataSource">-->
- <!-- <ref bean="DBDataSource"/>-->
- <!-- </property>-->
<property name="autoStartup"><value>true</value></property>
<property name="applicationContextSchedulerContextKey"><value>applicationContext</value></property>
<property name="waitForJobsToCompleteOnShutdown"><value>true</value></property>
@@ -35,21 +35,6 @@
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">5</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
- <!-- Job store -->
- <prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
- <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
- <prop key="org.quartz.jobStore.driverDelegateClass">${jdbc.quartz.delegateClassName}</prop>
- <prop key="org.quartz.jobStore.useProperties">false</prop>
- <prop key="org.quartz.jobStore.isClustered">true</prop>
- <prop key="org.quartz.jobStore.clusterCheckinInterval">10000</prop>
- <prop key="org.quartz.jobStore.dataSource">quartzDS</prop>
- <!-- DataSource -->
- <prop key="org.quartz.dataSource.quartzDS.driver">${jdbc.driverClassName}</prop>
- <prop key="org.quartz.dataSource.quartzDS.URL">${jdbc.url}</prop>
- <prop key="org.quartz.dataSource.quartzDS.user">${jdbc.username}</prop>
- <prop key="org.quartz.dataSource.quartzDS.password">${jdbc.password}</prop>
- <prop key="org.quartz.dataSource.quartzDS.maxConnections">5</prop>
- <!-- <prop key="org.quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?</prop>-->
<!-- Plugins -->
<prop key="org.quartz.plugin.shutdownhook.class">org.quartz.plugins.management.ShutdownHookPlugin</prop>
<prop key="org.quartz.plugin.shutdownhook.cleanShutdown">true</prop>
@@ -59,44 +44,59 @@
</props>
</property>
</bean>
-
-
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <value>classpath:jdbc.properties</value>
- </property>
+
+ <bean id="jpaTimerPersistence" class="org.drools.timer.persistence.JPATimerPersistence" >
+ <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
+
+ <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start"/>
<bean id="dataSource" class="bitronix.tm.resource.jdbc.PoolingDataSource" init-method="init" destroy-method="close">
- <property name="className" value="" />
+ <property name="className" value="org.h2.jdbcx.JdbcDataSource" />
<property name="uniqueName" value="jdbc/timersDS" />
<property name="minPoolSize" value="0" />
<property name="maxPoolSize" value="3" />
<property name="allowLocalTransactions" value="true" />
<property name="driverProperties">
<props>
- <prop key="user"></prop>
- <prop key="password"></prop>
- <prop key="URL"></prop>
+ <prop key="user">sa</prop>
+ <prop key="password">sasa</prop>
+ <prop key="URL">jdbc:h2:mem:mydb</prop>
</props>
</property>
</bean>
- <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+ <!-- Bitronix Transaction Manager embedded configuration -->
+ <bean id="btmConfig" factory-method="getConfiguration" class="bitronix.tm.TransactionManagerServices">
+ <property name="serverId" value="spring-btm" />
+ </bean>
- <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" depends-on="dataSource"/>
+ <!-- create BTM transaction manager -->
+ <bean id="bitronixTransactionManager" factory-method="getTransactionManager" class="bitronix.tm.TransactionManagerServices" depends-on="btmConfig, dataSource" destroy-method="shutdown" />
- <bean class="org.springframework.orm.jpa.JpaTransactionManager">
- <property name="entityManagerFactory" ref="entityManagerFactory" />
+ <!-- Spring JtaTransactionManager -->
+ <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
+ <property name="transactionManager" ref="bitronixTransactionManager" />
+ <property name="userTransaction" ref="bitronixTransactionManager" />
</bean>
+ <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" depends-on="transactionManager">
+ <property name="persistenceUnitName" value="org.drools.timer.persistence.jpa"/>
+ </bean>
+
+ <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
+
<bean id="timerSchedulerHornetQServer" class="org.drools.timer.scheduler.TimerSchedulerHornetQServer" init-method="start" destroy-method="stop">
<property name="consumer" ref="timerMessageConsumer"/>
<property name="timerScheduler" ref="timerScheduler"/>
</bean>
-
+
+ <bean id="timerMessageProducer" factory-bean="clientSession" factory-method="createProducer" destroy-method="close">
+ <constructor-arg value="executeTimerMessages" />
+ </bean>
+
+
<!-- client connection with the HornetQ server -->
- <bean id="clientSession" factory-bean="clientSessionFactory" factory-method="createSession" init-method="start"/>
<bean id="clientSessionFactory" class="org.hornetq.api.core.client.HornetQClient" factory-method="createClientSessionFactory" depends-on="hornetQServer" >
<constructor-arg>
<bean class="org.hornetq.api.core.TransportConfiguration">
@@ -106,10 +106,6 @@
<constructor-arg>
<map>
<entry>
- <key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.HOST_PROP_NAME"/></key>
- <value>localhost</value>
- </entry>
- <entry>
<key><util:constant static-field="org.hornetq.integration.transports.netty.TransportConstants.PORT_PROP_NAME"/></key>
<value>5446</value>
</entry>
@@ -119,5 +115,14 @@
</constructor-arg>
</bean>
+ <!-- HornetQ server starting queue named messageBoardQueue -->
<bean id="hornetQServer" class="java.lang.Object"/>
+
+ <!--
+ <bean id="timerMessageHornetQClient" class="org.drools.timer.scheduler.TimerMessageHornetQClient">
+ <property name="session" ref="clientSession" />
+ <property name="producer" ref="timerMessageProducer" />
+ </bean>
+ -->
+
</beans>
\ No newline at end of file
Modified: labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java
===================================================================
--- labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java 2010-08-12 19:06:32 UTC (rev 34682)
+++ labs/jbossrules/branches/5_1_20100802_esteban_diega/drools-process/drools-persistent-timer/drools-timer-tests/src/test/java/org/drools/timer/test/JPAPersistentTimerTest.java 2010-08-12 19:38:20 UTC (rev 34683)
@@ -16,8 +16,6 @@
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
-import org.drools.timer.core.ProcessTimerQuartzPersistenceStrategy;
-import org.drools.timer.core.connector.impl.HornetQSchedulerConnector;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bitronix.tm.TransactionManagerServices;
@@ -36,7 +34,7 @@
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
- env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new ProcessTimerQuartzPersistenceStrategy(new HornetQSchedulerConnector("127.0.0.1", 5446)));
+ //env.set(EnvironmentName.PROCESS_TIMER_STRATEGY, new ProcessTimerQuartzPersistenceStrategy(new HornetQSchedulerConnector("127.0.0.1", 5446)));
env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());
StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
More information about the jboss-svn-commits
mailing list