4

各位早上好,

我对 Mule ESB 中的 Datamapper 组件有一个大问题。我正在尝试在 oracle 数据库的表中映射 Excel 文件 (xlsx)。为此,我使用 Oracle DataSource 及其所有内容创建了一个 JDBC 连接器,但是当我转到 DataMapper 向导创建映射时,我无法选择创建的连接器,因为连接器列表中没有项目(在输出数据映射器向导标签中)。[下面是我的问题的屏幕截图]

DataMapper 向导的屏幕截图

我真的不明白为什么,你能帮帮我吗?

此外,我有一个问题要问您:除了 xls 文件提供的字段外,我还需要在数据库中插入其他字段,例如 MuleMessageID、xls 文件名和 Oracle SYSDATE。有可能吗?

为了向您提供尽可能多的信息,我将发布我的骡子项目

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:smtp="http://www.mulesoft.org/schema/mule/smtp" xmlns:ftp="http://www.mulesoft.org/schema/mule/ee/ftp" xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc" xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:https="http://www.mulesoft.org/schema/mule/https" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/jdbc http://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd
http://www.mulesoft.org/schema/mule/https http://www.mulesoft.org/schema/mule/https/current/mule-https.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/ee/ftp http://www.mulesoft.org/schema/mule/ee/ftp/current/mule-ftp-ee.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
http://www.mulesoft.org/schema/mule/smtp http://www.mulesoft.org/schema/mule/smtp/current/mule-smtp.xsd">
    <spring:beans>
        <spring:bean id="SettingProperty" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" scope="singleton">
            <spring:property name="locations">
                <spring:list>
                    <spring:value>classpath:pilot.properties</spring:value>
                </spring:list>
            </spring:property>
        </spring:bean>
    </spring:beans>

    <http:connector name="HTTPConnector" 
                    cookieSpec="netscape" 
                    doc:name="HTTP\HTTPS">
        <service-overrides messageFactory="it.aizoon.http.customHttpMultipart.MyHttpMultipartMuleMessageFactory"/>          
    </http:connector>

    <file:endpoint path="${file.output}" name="XSLXFile" responseTimeout="10000" doc:name="File"/>

    <jdbc-ee:oracle-data-source name="Oracle_Data_Source" user="${db.user}" password="${db.password}" url="${db.url}" doc:name="Oracle Data Source" transactionIsolation="UNSPECIFIED"/>
    <jdbc-ee:connector name="JdbcConnector" dataSource-ref="Oracle_Data_Source" validateConnections="true" queryTimeout="-1" doc:name="Database" pollingFrequency="0">
        <jdbc-ee:query key="storedProc" value="CALL ${db.storedProc}" />
    </jdbc-ee:connector>
    <data-mapper:config name="xls_to_db_grf" transformationGraphPath="xls_to_db.grf" doc:name="xls_to_db_grf"/>

    <!-- Starting Flow Declaration -->
    <flow name="zonal_imbalance_1.0Flow1" doc:name="zonal_imbalance_1.0Flow1">
        <http:inbound-endpoint 
            address="http://${conn.host}:${conn.port}/${conn.path}"
            connector-ref="HTTPConnector" doc:name="HTTP" exchange-pattern="request-response"/>
        <wildcard-filter pattern="*/${conn.path}*" caseSensitive="true" doc:name="Wildcard"/>
        <file:outbound-endpoint responseTimeout="10000" doc:name="Store XSLX File" path="C:\Users\paride.letizia\MuleStudio\workspace_ee\zonal_imbalance_1.0\src\test\resources\outputFolder"/>
        <data-mapper:transform doc:name="DataMapper"/>
        <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1"  doc:name="ORACLE Database" queryKey="example" connector-ref="JdbcConnector">
            <jdbc-ee:query key="example" value="SELECT * FROM prova;"/>
        </jdbc-ee:outbound-endpoint>
</flow>
</mule>

非常感谢你们所有人,提前。我期待着您的回音。

4

1 回答 1

1

我不知道他们为什么决定添加 JDBC“连接器”,但它们并没有真正充当连接器。连接器旨在通过特殊 API 与非标准服务建立连接,因此要与 Oracle DB 建立连接,只需遵循标准方式即可。

有关更多详细信息,请参阅 Anypoint 文档,特别是名为“端点和连接器”的段落:

连接器的功能类似于端点,通过传输发送和接收数据。然而,虽然端点对于广泛使用的协议(如 JDBC、FTP、HTTP、POP3 等)来说是通用的,但每个连接器的构建都是为了优化与特定第三方 API(如 Salesforce 或 Twitter)的连接。

在您连接到具有标准格式或协议的外部资源的大多数情况下,端点可以满足您的需求。例如,如果您要连接到 Oracle 数据库或 MS SQL 数据库,则可以使用数据库端点,因为这些数据库以标准格式输出其数据;不需要 Oracle 或 MS SQL 连接器。同样,对于特定类型的文件(如 .csv 文件),您不需要连接器。文件端点可以配置为将数据输入和输出为任何类型的文本文件格式,包括 .csv,因此不需要 csv 连接器。

相关:Mule 连接器和传输器之间的区别

于 2013-10-29T20:17:37.470 回答