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,
<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>
/** 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;
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 "
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;
}
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 {
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;
--- /dev/null
+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;
+ }
+
+}
-<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>
</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" />
</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" />
--- /dev/null
+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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+jdbc.driverClassName=com.mysql.jdbc.Driver
+jdbc.url=jdbc:mysql://localhost/sparta_prod
+jdbc.username=root
+jdbc.password=
</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>