我正在尝试强制使用Mule ESB Studio,对jdbc执行一些简单的插入操作。我的目标是在我的webbrowser中打开一个页面,假设它是http://localhost:8081/
,然后Mule ESB在数据库中执行insert'foobar'值。
这是我的代码:
<jdbc-ee:mssql-data-source name="MS_SQL_Data_Source" user="esbtest" password="Test123" transactionIsolation="NONE" doc:name="MS SQL Data Source" loginTimeout="10000"
url="jdbc:sqlserver://10.1.212.42:1433;databaseName=test"></jdbc-ee:mssql-data-source>
<jdbc-ee:connector name="Database" dataSource-ref="MS_SQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
<flow name="Test_PierwszyFlow1" doc:name="Test_PierwszyFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" mimeType="text/plain"></http:inbound-endpoint>
<object-to-string-transformer doc:name="Object to String"/>
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryTimeout="-1" doc:name="Database" connector-ref="Database" queryKey="insertQuery">
<jdbc-ee:query key="insertQuery" value="INSERT INTO t_Login (login) VALUES ('foo bar')"/>
</jdbc-ee:outbound-endpoint>
</flow>
我没有指定任何bean或类似的东西。在日志中,我看到以下几行:
INFO 2013-07-02 11:20:37,550 [[test_pierwszy].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'Database.dispatcher.1938839184'. Object is: EEJdbcMessageDispatcher
INFO 2013-07-02 11:20:37,550 [[test_pierwszy].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'Database.dispatcher.1938839184'. Object is: EEJdbcMessageDispatcher
INFO 2013-07-02 11:20:37,670 [[test_pierwszy].connector.http.mule.default.receiver.02] com.mulesoft.mule.transport.jdbc.sqlstrategy.UpdateSqlStatementStrategy: Executing SQL statement: 1 row(s) updated
INFO 2013-07-02 11:20:37,730 [[test_pierwszy].connector.http.mule.default.receiver.02] com.mulesoft.mule.transport.jdbc.sqlstrategy.UpdateSqlStatementStrategy: Executing SQL statement: 1 row(s) updated
...但我的数据库是空的!我必须说,我在Mule ESB领域是全新的,不知道出了什么问题。请 - 帮助。
编辑:有趣的是,当我将talbe或列名更改为某些内容时,不存在,我得到与此相关的JDBC错误。
第二个问题是,如何注入我在URL中指定的DB值?例如,当我键入浏览器http://localhost:8081/foo
时,值foo将传递给jdbc结果连接器,并插入“foo”值。
提前致谢。
答案 0 :(得分:2)
我在这里猜测未提交的交易。尝试将transactionPerMessage="true"
添加到<jdbc-ee:connector...
答案 1 :(得分:0)
我注意到Mule-EE中的类似问题,Mule-CE工作得很好......
当您使用ArrayList有效负载调用jdbc:outbound-endpoint但在SQL查询中使用SESSION / INVOCATION变量作为参数时,我注意到它对所讨论的表没有影响(没有插入/更新)但记录器记录“记录更新”。 将有效负载更改为此jdbc调用的其他类型的对象解决了该问题。 要保持开放的心态,请考虑: - 通过Payload传递SQL查询参数 -consider消息丰富