Пролетна интеграция: JDBC единична заявка към уеб услуга

Бих искал да знам начина за разрешаване на този сценарий на интеграция:

  • Изпълнете различни заявки, за да изберете X елементи от база данни. Търся входящ адаптер без обединяване, защото просто е необходимо заявката да се изпълни веднъж. Въпреки това резултатите от заявките ще генерират само един изход.
  • Работете с тези данни, за да създадете SOAP заявка (генерична уеб услуга)
  • Изпратете тази SOAP заявка до уеб услуга и изчакайте асинхронен отговор.

Но също така е необходимо да разположите целия този сценарий във WAR файл на сървър Tomcat. Внедрявам приложението от пролетен MVC + пролетен интеграционен скелет, но няма да имам никакъв контролер. Възможно ли е да се изпълни приложението, когато контекстът е зареден на Tomcat?

Работя със следните технологии:

  • Пролетна интеграция
  • Spring MVC за внедряване на WAR
  • График (Quartz или @Scheduled)
  • Пролет WS

за разбирането


person crm86    schedule 03.12.2014    source източник


Отговори (1)


Тъй като казвате, че предпочитате да select при стартиране на приложението и само веднъж, можете да използвате:

<int-event:inbound-channel-adapter channel="jdbcChannel" 
       event-types="org.springframework.context.event.ContextRefreshedEvent"
       payload-expression="''"/>

и <int-jdbc:outbound-gateway query="SELECT * FROM ..."/>

И така нататък до WebService.

АКТУАЛИЗАЦИЯ

Тъй като казвате, че сте около конфигурацията на анотация, обмислете използването на Spring Integration Java DSL.

За да конфигурирате <int-event:inbound-channel-adapter> от @Configuration, трябва да направите следното:

    @Bean
    @SuppressWarnings("unchecked")
    public MessageProducer ApplicationEventListeningMessageProducer() {
        ApplicationEventListeningMessageProducer producer = new ApplicationEventListeningMessageProducer();
        producer.setEventTypes(ContextRefreshedEvent.class);
        producer.setPayloadExpression("''");
        producer.setOutputChannel(jdbcChannel());
        return producer;
    }

ContextRefreshedEvent информация, която можете да получите от неговите JavaDocs или от Ръководство на Spring Framework.

person Artem Bilan    schedule 03.12.2014
comment
Благодаря Артем. Изходящият шлюз изглежда е добро решение. Тъй като работя само с анотирана конфигурация, бихте ли посочили къде мога да намеря повече информация за ContextRefreshedEvent? - person crm86; 03.12.2014
comment
Добавена е проба за вариант на конфигурация на анотация. - person Artem Bilan; 03.12.2014
comment
Какво ще кажете за: ‹int-jdbc:outbound-gateway query=SELECT * FROM .../› с анотации. Опитвам се да създам JdbcOutboundGateway, но получавам изключение „без абонати“. - person crm86; 03.12.2014
comment
:-). Тъй като това е съвсем отделен въпрос, нека започнем нова тема! Не се притеснявайте, следя всички spring-integration въпроси - person Artem Bilan; 03.12.2014