Centralize MySQL config
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 27 Apr 2009 14:11:09 +0000 (14:11 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 27 Apr 2009 14:11:09 +0000 (14:11 +0000)
Improve newExecution dispatching

git-svn-id: https://svn.argeo.org/slc/trunk@2379 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

13 files changed:
demo/pom.xml
org.argeo.slc/pom.xml
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgentProxy.java
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java [new file with mode: 0644]
runtime/org.argeo.slc.support.hibernate/pom.xml
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.agent/META-INF/spring/jms.xml
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.jms/META-INF/spring/jms.xml
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/MANIFEST.MF [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/mysql.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/osgi.xml [new file with mode: 0644]
server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/mysql.properties [new file with mode: 0644]
server/org.argeo.slc.siteserver/pom.xml

index e4f569132e78ba7214314cde18b60f0e5d369e3d..e8ed6781e0bda144bc839216e19e53c7511a014f 100644 (file)
@@ -67,7 +67,7 @@
                                                                        org.springframework.osgi.web.extender,
                                                                        org.springframework.osgi.samples.simplewebapp,
                                                                        org.argeo.slc.server.activemq,
-                                                                       org.argeo.slc.server.hsqldb,
+                                                                       org.argeo.slc.server.mysql,
                                                                        org.argeo.slc.server.hibernate,
                                                                        org.argeo.slc.server.services,
                                                                        org.argeo.slc.server.jms,
index 7dbcd53cd4eed76685d1ad64619b97a9d6664a59..efa7f3db87295b49341b6e5653e96f62f4e9630f 100644 (file)
@@ -563,12 +563,28 @@ limitations under the License.
                                <artifactId>com.springsource.org.apache.commons.pool</artifactId>
                                <version>1.4.0</version>
                        </dependency>
+                       <dependency>
+                               <groupId>org.apache.commons</groupId>
+                               <artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
+                               <version>1.2.2.osgi</version>
+                       </dependency>
+
                        <!-- DB Drivers -->
                        <dependency>
                                <groupId>org.hsqldb</groupId>
                                <artifactId>com.springsource.org.hsqldb</artifactId>
                                <version>1.8.0.9</version>
                        </dependency>
+                       <dependency>
+                               <groupId>net.sourceforge.jtds</groupId>
+                               <artifactId>jtds</artifactId>
+                               <version>1.2.2</version>
+                       </dependency>
+                       <dependency>
+                               <groupId>com.mysql.jdbc</groupId>
+                               <artifactId>com.springsource.com.mysql.jdbc</artifactId>
+                               <version>5.1.6</version>
+                       </dependency>
 
                        <!-- XML -->
                        <dependency>
index 4b031f9472801fdbb92fe244a52ff66a400de33a..7490f32d1db4c4a89dab9b407fa46fca3b83b3e9 100644 (file)
@@ -31,6 +31,9 @@ import org.springframework.jms.support.converter.MessageConversionException;
 /** JMS based implementation of SLC Agent. */
 public class JmsAgent extends AbstractAgent implements SlcAgent,
                InitializingBean, DisposableBean, SessionAwareMessageListener {
+       public final static String PROPERTY_QUERY = "query";
+       public final static String PROPERTY_SLC_AGENT_ID = "slc_agentId";
+
        private final static Log log = LogFactory.getLog(JmsAgent.class);
 
        private final SlcAgentDescriptor agentDescriptor;
@@ -101,7 +104,7 @@ public class JmsAgent extends AbstractAgent implements SlcAgent,
 
        public void onMessage(Message message, Session session) throws JMSException {
                MessageProducer producer = session.createProducer(responseDestination);
-               String query = message.getStringProperty("query");
+               String query = message.getStringProperty(PROPERTY_QUERY);
                String correlationId = message.getJMSCorrelationID();
                if (log.isDebugEnabled())
                        log.debug("Received query " + query + " with correlationId "
@@ -123,16 +126,23 @@ public class JmsAgent extends AbstractAgent implements SlcAgent,
                        agentDescriptorToSend.setModuleDescriptors(lst);
                        responseMsg = jmsTemplate.getMessageConverter().toMessage(
                                        agentDescriptorToSend, session);
+               } else if ("newExecution".equals(query)) {
+
+                       SlcExecution slcExecution = (SlcExecution) jmsTemplate
+                                       .getMessageConverter().fromMessage(message);
+                       runSlcExecution(slcExecution);
                } else {
-                       try {
-                               //FIXME: generalize
-                               SlcExecution slcExecution = (SlcExecution) jmsTemplate
-                                               .getMessageConverter().fromMessage(message);
-                               runSlcExecution(slcExecution);
-                       } catch (MessageConversionException e) {
-                               if (log.isDebugEnabled())
-                                       log.debug("Unsupported query " + query, e);
-                       }
+                       // try {
+                       // // FIXME: generalize
+                       // SlcExecution slcExecution = (SlcExecution) jmsTemplate
+                       // .getMessageConverter().fromMessage(message);
+                       // runSlcExecution(slcExecution);
+                       // } catch (MessageConversionException e) {
+                       // if (log.isDebugEnabled())
+                       // log.debug("Unsupported query " + query, e);
+                       // }
+                       if (log.isDebugEnabled())
+                               log.debug("Unsupported query " + query);
                        return;
                }
 
index 3a311b9349aa933cdf0ca458d05d63f2e75e357a..66cf3920e7799e8415606c3fbf67a9a2601ea1bc 100644 (file)
@@ -12,15 +12,11 @@ import javax.jms.TextMessage;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.slc.SlcException;
-import org.argeo.slc.execution.ExecutionModule;
 import org.argeo.slc.execution.ExecutionModuleDescriptor;
-import org.argeo.slc.msg.ObjectList;
 import org.argeo.slc.runtime.SlcAgent;
 import org.argeo.slc.runtime.SlcAgentDescriptor;
-import org.springframework.jms.JmsException;
 import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.core.MessageCreator;
-import org.springframework.jms.support.converter.MessageConversionException;
 import org.springframework.jms.support.converter.MessageConverter;
 
 public class JmsAgentProxy implements SlcAgent {
@@ -102,8 +98,8 @@ public class JmsAgentProxy implements SlcAgent {
                        if (correlationId == null)
                                throw new SlcException("JMSCorrelationID not set");
                        TextMessage msg = session.createTextMessage();
-                       msg.setStringProperty("slc_agentId", agentUuid);
-                       msg.setStringProperty("query", query);
+                       msg.setStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID, agentUuid);
+                       msg.setStringProperty(JmsAgent.PROPERTY_QUERY, query);
                        msg.setJMSCorrelationID(correlationId);
                        setArguments(msg);
                        return msg;
diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java
new file mode 100644 (file)
index 0000000..856b956
--- /dev/null
@@ -0,0 +1,34 @@
+package org.argeo.slc.jms;
+
+import java.util.UUID;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+import org.springframework.jms.listener.SessionAwareMessageListener;
+
+/** Temporary hack*/
+public class JmsTransferNewExecution implements SessionAwareMessageListener {
+       private Destination requestDestination;
+
+       public void onMessage(Message message, Session session) throws JMSException {
+               TextMessage messageToSend = session
+                               .createTextMessage(((TextMessage) message).getText());
+               messageToSend
+                               .setStringProperty(JmsAgent.PROPERTY_QUERY, "newExecution");
+               messageToSend.setStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID, message
+                               .getStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID));
+               messageToSend.setJMSCorrelationID(UUID.randomUUID().toString());
+               MessageProducer producer = session.createProducer(requestDestination);
+               producer.send(messageToSend);
+       }
+
+       public void setRequestDestination(Destination requestDestination) {
+               this.requestDestination = requestDestination;
+       }
+
+}
index 2dfdcaee0705b01f8333c0910365efd6e3fa503b..ced338e3d516ba430fb7acb959392ae51f7cb091 100644 (file)
@@ -1,4 +1,5 @@
-<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">
+<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>
        <parent>
                <groupId>org.argeo.slc.runtime</groupId>
                                        <instructions>
                                                <Fragment-Host>org.argeo.slc.support.simple</Fragment-Host>
                                                <Import-Package>*,org.hibernate.proxy</Import-Package>
-                                               
-                                       <!-- 
-                                               <Export-Package>
-                                                       org.argeo.slc.hibernate.*
-                                               </Export-Package>
-                                               <Import-Package>*,org.argeo.slc.*;resolution:=optional,
-                                               org.argeo.slc.execution;resolution:=optional,
-                                               org.argeo.slc.runtime;resolution:=optional,
-                                               org.argeo.slc.structure;resolution:=optional,
-                                               org.argeo.slc.core.structure;resolution:=optional,
-                                               org.argeo.slc.core.structure.tree;resolution:=optional,
-                                               org.argeo.slc.core.test;resolution:=optional,
-                                               org.argeo.slc.core.test.tree;resolution:=optional,
-                                               org.argeo.slc.core.execution;resolution:=optional,
-                                               org.argeo.slc.msg;resolution:=optional,
-                                               org.argeo.slc.msg.process;resolution:=optional,
-                                               org.argeo.slc.msg.test.tree;resolution:=optional
-                                               </Import-Package>
-                                               <Fragment-Host>com.springsource.org.hibernate</Fragment-Host>
-                                                -->
+
+                                               <!--
+                                                       <Export-Package> org.argeo.slc.hibernate.* </Export-Package>
+                                                       <Import-Package>*,org.argeo.slc.*;resolution:=optional,
+                                                       org.argeo.slc.execution;resolution:=optional,
+                                                       org.argeo.slc.runtime;resolution:=optional,
+                                                       org.argeo.slc.structure;resolution:=optional,
+                                                       org.argeo.slc.core.structure;resolution:=optional,
+                                                       org.argeo.slc.core.structure.tree;resolution:=optional,
+                                                       org.argeo.slc.core.test;resolution:=optional,
+                                                       org.argeo.slc.core.test.tree;resolution:=optional,
+                                                       org.argeo.slc.core.execution;resolution:=optional,
+                                                       org.argeo.slc.msg;resolution:=optional,
+                                                       org.argeo.slc.msg.process;resolution:=optional,
+                                                       org.argeo.slc.msg.test.tree;resolution:=optional
+                                                       </Import-Package>
+                                                       <Fragment-Host>com.springsource.org.hibernate</Fragment-Host>
+                                               -->
                                        </instructions>
                                </configuration>
                        </plugin>
                        <artifactId>org.springframework.context.support</artifactId>
                </dependency>
 
+               <dependency>
+                       <groupId>org.apache.commons</groupId>
+                       <artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
+               </dependency>
+
                <!-- Test dependencies -->
                <dependency>
                        <groupId>org.argeo.slc.runtime</groupId>
index a60b28d543e9b9c359ea8bad81938988d9ae1975..f128d3e261f1280eaf496663df9c7a41dc1ddeed 100644 (file)
                </property>
        </bean>
 
-       <bean id="jmsAgent.listener.newExecution"
+<!--   <bean id="jmsAgent.listener.newExecution"
                class="org.springframework.jms.listener.DefaultMessageListenerContainer">
                <property name="connectionFactory" ref="jmsConnectionFactory" />
                <property name="destination" ref="slcJms.destination.agent.newExecution" />
-               <property name="messageListener" ref="jmsAgent" />
+               <property name="messageListener" ref="jmsAgent" /> -->
                <!-- <property name="messageListener">
                        <bean parent="slcTemplate.jms.listenerAdapterCastor">
                                <constructor-arg ref="jmsAgent" />
                                <property name="defaultListenerMethod" value="runSlcExecution" />
                        </bean>
                </property> -->
-               <property name="messageSelector">
+               <!-- <property name="messageSelector">
                        <bean factory-bean="jmsAgent" factory-method="getMessageSelector" />
                </property>
-       </bean>
+       </bean> -->
 
        <bean id="jmsAgent" class="org.argeo.slc.jms.JmsAgent">
                <property name="agentRegister" ref="slcJms.destination.agent.register" />
index da5e2c3888d8a36d33015faaeca0c28507978535..b2000f6254659ed32670f16c9b8a64bdda5aa640 100644 (file)
                </property>
        </bean>
 
+       <bean id="agentService.jmsContainer.newExecution" parent="listenerContainer">
+               <property name="destination" ref="slcJms.destination.agent.newExecution" />
+               <property name="messageListener">
+                       <bean class="org.argeo.slc.jms.JmsTransferNewExecution">
+                               <property name="requestDestination" ref="slcJms.destination.agent.request" />
+                       </bean>
+               </property>
+       </bean>
+
        <!-- Test Manager Service -->
        <bean parent="listenerContainer">
                <property name="destination" ref="slcJms.destination.test.create" />
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/MANIFEST.MF b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..86720da
--- /dev/null
@@ -0,0 +1,15 @@
+Bundle-Name: Argeo SLC MySQL
+Bundle-SymbolicName: org.argeo.slc.server.mysql
+Bundle-Version: 0.11.3.qualifier
+Import-Package: 
+ com.mysql.jdbc,
+ net.sf.ehcache.hibernate,
+ org.hibernate,
+ org.springframework.cache.ehcache,
+ org.springframework.jdbc.datasource,
+ org.springframework.orm.hibernate3,
+ org.apache.commons.dbcp,
+ org.springframework.beans.factory.config
+Require-Bundle: 
+ org.argeo.slc.specs,
+ org.argeo.slc.support.simple
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/mysql.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/mysql.xml
new file mode 100644 (file)
index 0000000..7f5d9a2
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="
+       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
+       default-lazy-init="false">
+
+       <import
+               resource="classpath:/org/argeo/slc/hibernate/spring/applicationContext.xml" />
+
+       <bean
+               class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+               <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
+               <property name="ignoreUnresolvablePlaceholders" value="true" />
+               <property name="locations">
+                       <value>osgibundle:mysql.properties
+                       </value>
+               </property>
+       </bean>
+
+       <bean id="sessionFactory" parent="slcTemplates.sessionFactory.hibernateBasic">
+               <property name="dataSource" ref="dataSource" />
+               <property name="hibernateProperties">
+                       <value><![CDATA[
+                hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
+                hibernate.hbm2ddl.auto=update
+                hibernate.connection.autocommit=false
+            ]]></value>
+               </property>
+       </bean>
+<!-- 
+       <bean id="dataSource"
+               class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
+               <property name="targetDataSource">
+                       <bean
+                               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"
+                               destroy-method="destroy">
+                               <property name="driverClassName" value="com.mysql.jdbc.Driver" />
+                               <property name="url" value="jdbc:mysql://localhost/sparta_prod" />
+                               <property name="username" value="root" />
+                               <property name="password" value="" />
+                               <property name="suppressClose" value="true" />
+                               <property name="autoCommit" value="false" />
+                       </bean>
+               </property>
+       </bean>
+ -->
+       <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
+               destroy-method="close">
+               <property name="driverClassName" value="${jdbc.driverClassName}" />
+               <property name="url" value="${jdbc.url}" />
+               <property name="username" value="${jdbc.username}" />
+               <property name="password" value="${jdbc.password}" />
+       </bean>
+
+
+
+</beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/osgi.xml b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/META-INF/spring/osgi.xml
new file mode 100644 (file)
index 0000000..6d7b0e6
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <service ref="sessionFactory" interface="org.hibernate.SessionFactory" />\r
+\r
+</beans:beans>
\ No newline at end of file
diff --git a/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/mysql.properties b/server/org.argeo.slc.siteserver/bundles/org.argeo.slc.server.mysql/mysql.properties
new file mode 100644 (file)
index 0000000..dc979ad
--- /dev/null
@@ -0,0 +1,4 @@
+jdbc.driverClassName=com.mysql.jdbc.Driver
+jdbc.url=jdbc:mysql://localhost/sparta_prod
+jdbc.username=root
+jdbc.password=
index e980d0d46d1727e032f26399a2f1da5403770862..c2594095ea90b6e6f4777e3e01cbe2e8dd3e3fd9 100644 (file)
                                </artifactId>
                </dependency>
 
+               <dependency>
+                       <groupId>net.sourceforge.jtds</groupId>
+                       <artifactId>jtds</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>com.mysql.jdbc</groupId>
+                       <artifactId>com.springsource.com.mysql.jdbc</artifactId>
+               </dependency>
+
                <!-- For WS -->
                <dependency>
                        <groupId>com.sun.xml</groupId>