2016-01-27 86 views
2

我想學習Spring集成,併爲了這個,我想創建這樣的應用程序:Spring集成與Oracle AQ

從甲骨文我發送郵件(在Oracle隊列),此消息將被攔截從一個Java應用程序(使用Spring Integration進行構建),應用程序將根據收到的消息發送一封電子郵件。該消息將包含To: - 抄送:以及要發送的文本。

爲了進行這種溝通,我決定使用JMS(我認爲在Oracle中這是使用Oracle AQ製作的)。

在數據庫中,我已經創建了隊列,現在我正在嘗試創建一個簡單的applicationContext.xml來啓動這個握手。

尋找網絡我發現真的很少文章(春季集成+甲骨文AQ),我得到一些錯誤。主要錯誤是這樣的:java.lang.ClassNotFoundException: oracle.jms.AQjmsFactory

現在這是我的applicationContext.xml

<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:orcl="http://www.springframework.org/schema/data/orcl" 
    xmlns:int-jms="http://www.springframework.org/schema/integration/jms" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
      http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd 
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
      http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd 
      http://www.springframework.org/schema/data/orcl http://www.springframework.org/schema/data/orcl/spring-data-orcl-1.0.xsd"> 

    <int:channel id="inbound" /> 
    <int:channel id="outbound" /> 

    <bean id="simpleMessageListener" class="it.dirimo.SimpleMessageListener" /> 

    <int-jms:inbound-channel-adapter 
     channel="inbound" 
     connection-factory="connectionFactory" 
     destination-name="Q1"> 
     <int:poller fixed-delay="1000" /> 
    </int-jms:inbound-channel-adapter> 

    <int:service-activator input-channel="inbound" output-channel="outbound" ref="simpleMessageListener" method="onMessage" /> 

    <int-jms:outbound-channel-adapter id="jmsOut" 
     channel="outbound" 
     connection-factory="connectionFactory" 
     destination-name="sampleQueue" /> 

    <int:poller id="poller" default="true" fixed-delay="10000" /> 

    <orcl:aq-jms-connection-factory id="connectionFactory" 
     data-source="dataSource" 
     use-local-data-source-transaction="true"/> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL" /> 
     <property name="username" value="user" /> 
     <property name="password" value="password" /> 
    </bean> 
</beans> 

也許我使用「舊」技術(例如我已經看到了第一次遇到這種org.apache.commons.dbcp.BasicDataSource

不幸的是,我對Spring Integration非常感興趣,而且我第一次看到Oracle隊列(我使用Oracle工作,但從未使用過任何類型的隊列)。

如何進行將apreciated :)

編輯1 爲了解決有關AQjmsFactory問題的幾點建議需要包括aqapi.jar

回答

2

拋出java.lang.ClassNotFoundException:ORACLE .jms.AQjmsFactory

這只是表示您缺少包含類路徑的jar包。

Oracle通常需要您直接從它們手動下載它們的罐子。

+0

是的,我已經在今天早上解決了這個問題:)我需要包括aqapi罐子。我已經更新了我的回覆,我展示瞭如何實現jms inbound-> outbound。它工作,如果你在調試模式下運行我的程序,但我不知道如何「永遠」運行它。應用程序甚至應該啓動,當一個消息來自Oracle時,應用程序應該處理它併發送郵件(我將稍後實現郵件部分,現在我只是瞭解如何使應用程序「始終運行」) – Mistre83

+0

我在研究Spring集成的所有例子,但並不簡單:)現在我的主要問題是如何很好地構建應用程序......我在Spring上的第一次經驗(如你已經知道的:))和JMS。 – Mistre83