diff --git a/INSTALL.APPSERVER.README b/INSTALL.APPSERVER.README index 6e66b50d3a63f6fe32ce142815a3efd437268fff..a8f55bce0fa62bbcad9acf5444aff00f9e70c3f2 100644 --- a/INSTALL.APPSERVER.README +++ b/INSTALL.APPSERVER.README @@ -36,6 +36,8 @@ Configuration JBoss AS 7.1 jms.broker.jndi=java:/ConnectionFactory sysbus.broker.jndi=java:jboss/exported/jms/topic/sysbus search.broker.jndi=java:jboss/exported/jms/queue/searchQueue + index.broker.jndi=java:jboss/exported/jms/queue/indexQueue + exam.broker.jndi=java:jboss/exported/jms/queue/examQueue Configuration Glassfish 3.1 @@ -61,6 +63,8 @@ Configuration Glassfish 3.1 jms.broker.jndi=OpenOLATConnectionFactory sysbus.broker.jndi=topic/sysbus search.broker.jndi=queue/searchQueue + index.broker.jndi=queue/indexQueue + exam.broker.jndi=queue/examQueue Features located on the application server diff --git a/src/main/java/de/bps/onyx/util/ExamPoolManagerProvider.java b/src/main/java/de/bps/onyx/util/ExamPoolManagerProvider.java index 883f520125c29cf108a38a152da3b519b670ccf9..8812e7ceedffa35f0b4e85db46970815acec2b45 100644 --- a/src/main/java/de/bps/onyx/util/ExamPoolManagerProvider.java +++ b/src/main/java/de/bps/onyx/util/ExamPoolManagerProvider.java @@ -197,6 +197,30 @@ public class ExamPoolManagerProvider implements MessageListener { connection.start(); log.info("springInit: JMS connection started with connectionFactory=" + connectionFactory); } + + + public void springStop() throws JMSException { + closeQueue(); + } + + private void closeQueue() { + if(consumer != null) { + try { + consumer.close(); + System.out.println("Close consumer exam pool"); + } catch (JMSException e) { + log.error("", e); + } + } + if(connection != null) { + try { + connection.close(); + System.out.println("Close connection exam pool"); + } catch (JMSException e) { + log.error("", e); + } + } + } private synchronized Session acquireSession() throws JMSException { if (sessions.size() == 0) { diff --git a/src/main/java/de/bps/onyx/util/_spring/examControlContext.xml b/src/main/java/de/bps/onyx/util/_spring/examControlContext.xml index 8aa0ed03e83bbe52f04e26554bd4453da24565ac..0d4a688f4e598dd4ba24de4232e73306de5501cc 100644 --- a/src/main/java/de/bps/onyx/util/_spring/examControlContext.xml +++ b/src/main/java/de/bps/onyx/util/_spring/examControlContext.xml @@ -1,13 +1,8 @@ <?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - - <context:property-placeholder location="classpath:serviceconfig/olat.properties, classpath:olat.local.properties" /> + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- general reference-holder --> <!-- ================================= --> @@ -18,7 +13,7 @@ <!-- SEARCH SERVICE SIDE CONFIGURATION --> <!-- ================================= --> - <bean id="examControl.master.true" class="de.bps.onyx.util.ExamPoolManagerProvider" init-method="springInit" lazy-init="true"> + <bean id="examControl.master.true" class="de.bps.onyx.util.ExamPoolManagerProvider" init-method="springInit" destroy-method="springStop" lazy-init="true"> <constructor-arg name="examPoolManager" ref="examPoolManagerServer"/> <property name="connectionFactory" ref="examControlConnectionFactory"/> <property name="searchQueue" ref="examControlQueue"/> @@ -37,19 +32,14 @@ <property name="timeToLive" value="45000"/> </bean> + <!-- SEARCH COMMON CONFIGURATION (PROXY-SIDE AND SERVICE-SIDE) --> + <!-- ========================================================= --> + + <!-- SEARCH COMMON CONFIGURATION (PROXY-SIDE AND SERVICE-SIDE) --> <!-- ========================================================= --> - <!-- JMS Stuff --> - <bean id="examControlConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory" lazy-init="true"> - <property name="brokerURL" value="${search.broker.url}" /> - </bean> - - <!-- used for sending the search requests --> - <bean id="examControlQueue" class="org.apache.activemq.command.ActiveMQQueue" lazy-init="true"> - <constructor-arg value="olat/examQueue" /> - </bean> - + <import resource="classpath:de/bps/onyx/util/_spring/examControlJms_${jms.provider}.xml" /> </beans> diff --git a/src/main/java/de/bps/onyx/util/_spring/examControlJms_activemq.xml b/src/main/java/de/bps/onyx/util/_spring/examControlJms_activemq.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a4efda04676ff3393cac9d1727eec9dd58e1e6d --- /dev/null +++ b/src/main/java/de/bps/onyx/util/_spring/examControlJms_activemq.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <!-- JMS Stuff --> + <bean id="examControlConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory" lazy-init="true"> + <property name="brokerURL" value="${search.broker.url}" /> + </bean> + + <!-- used for sending the search requests --> + <bean id="examControlQueue" class="org.apache.activemq.command.ActiveMQQueue" lazy-init="true"> + <constructor-arg value="olat/examQueue" /> + </bean> + +</beans> diff --git a/src/main/java/de/bps/onyx/util/_spring/examControlJms_jndi.xml b/src/main/java/de/bps/onyx/util/_spring/examControlJms_jndi.xml new file mode 100644 index 0000000000000000000000000000000000000000..f22a8d5c1f7fd1d348599223b998f4cdcd5c1d62 --- /dev/null +++ b/src/main/java/de/bps/onyx/util/_spring/examControlJms_jndi.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <!-- JMS Stuff --> + <bean id="examControlConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${jms.broker.jndi}</value></property> + </bean> + + <!-- used for sending the search requests --> + <bean id="examControlQueue" class="org.apache.activemq.command.ActiveMQQueue" lazy-init="true"> + <constructor-arg value="olat/examQueue" /> + </bean> + + + <bean id="examControlQueue" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${exam.broker.jndi}</value></property> + </bean> + + + <!-- JMS Stuff --> + <bean id="searchConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${jms.broker.jndi}</value></property> + </bean> + <bean id="searchQueue" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${search.broker.jndi}</value></property> + </bean> + + <bean id="indexConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${jms.broker.jndi}</value></property> + </bean> + <bean id="indexQueue" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> + <property name="jndiName"><value>${index.broker.jndi}</value></property> + </bean> +</beans> diff --git a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java index a521c2f6038c1891accdb7468fb9c4ae4a669028..89bbe6c84658f854ed33389b38205cb6dd6cbd00 100644 --- a/src/main/java/org/olat/search/service/indexer/JmsIndexer.java +++ b/src/main/java/org/olat/search/service/indexer/JmsIndexer.java @@ -211,6 +211,7 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer { if(consumer != null) { try { consumer.close(); + System.out.println("Close consumer JMSINDEXER"); } catch (JMSException e) { log.error("", e); } @@ -219,6 +220,7 @@ public class JmsIndexer implements MessageListener, LifeFullIndexer { try { indexerSession.close(); connection.close(); + System.out.println("Close connection JMSINDEXER"); } catch (JMSException e) { log.error("", e); } diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index a139d207c5ad1411f3a1c3f869d0b9ffca62633b..8cd3b2e52ea879265b7ca14f834a2384c428c9ca 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -674,6 +674,7 @@ jms.broker.jndi=OpenOLATConnectionFactory sysbus.broker.jndi=topic/sysbus search.broker.jndi=queue/searchQueue index.broker.jndi=queue/indexQueue +exam.broker.jndi=queue/examQueue # enable/disable codepoint/breakpoint framework