2012-02-14 4 views
4

У меня есть работающее приложение Mule, которое я использую в своем проекте. То, что я хотел бы сделать, это добавить некоторый компонент, который очистит таблицу базы данных каждый раз, когда запущен сервер Mule.Singleton Startup Mule Компонент/поток

Какой будет компонент для использования в этом вопросе? Я бы хотел, чтобы это произошло из XML, а не какой-то компонент Java, который мне нужно написать (JDBC и т. Д.)

Спасибо!

ответ

5

Совершено с:

  • Уведомление слушателю быть информированным, когда Mule инициализации
  • Реализовано в Groovy так весь код в XML-конфигурации,
  • JDBC конечной точки для очистки данных, так JDBC не требуется.

Вот конфиг:

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns="http://www.mulesoft.org/schema/mule/core" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:lang="http://www.springframework.org/schema/lang" 
    xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd 
      http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd 
      http://www.mulesoft.org/schema/mule/jdbc http://www.mulesoft.org/schema/mule/jdbc/3.2/mule-jdbc.xsd 
      "> 
    <spring:beans> 
     <spring:bean id="jdbcDataSource" class="org.hsqldb.jdbc.JDBCDataSource"> 
      <spring:property name="url" value="jdbc:hsqldb:mem:test-db" /> 
     </spring:bean> 

     <lang:groovy id="dataInitializer"> 
      <lang:inline-script><![CDATA[ 
       import org.mule.api.context.notification.*; 
       import org.mule.context.notification.*; 
       import org.mule.module.client.MuleClient; 

       class DataInitializer implements MuleContextNotificationListener<MuleContextNotification> { 

        public void onNotification(MuleContextNotification notification) { 
         if (notification.action == MuleContextNotification.CONTEXT_STARTED) 
          new MuleClient(notification.muleContext).dispatch("jdbc://initialDataPurge", null, null) 
        } 
       } 
      ]]></lang:inline-script> 
     </lang:groovy> 
    </spring:beans> 

    <notifications> 
     <notification event="CONTEXT"/> 
     <notification-listener ref="dataInitializer"/> 
    </notifications> 

    <jdbc:connector name="jdbcConnector" dataSource-ref="jdbcDataSource"> 
     <jdbc:query key="initialDataPurge" value="DELETE FROM test;" /> 
    </jdbc:connector> 
</mule> 
+0

Спасибо! Это очень помогло мне. – Menyh

+0

Друг указал на чистый способ инициализации БД, который может потребоваться для изучения альтернативной опции использования инфраструктуры JDBC Mule: http://static.springsource.org/spring/docs/current/spring-framework-reference /html/jdbc.html#d0e25685 –

Смежные вопросы