我正在尝试使用Mule Studio中的oracle数据库连接器实现XA Transaction。当我尝试在MuleStudio服务器上部署这个mule应用程序时,我遇到了异常。
例外:
“由以下原因引起:org.springframework.beans.NotWritablePropertyException:bean类的无效属性'url'[oracle.jdbc.xa.client.OracleXADataSource]:Bean属性'url'不可写或具有无效的setter方法。 setter的参数类型是否与getter的返回类型匹配?“
<jdbc-ee:oracle-data-source name="Oracle_Data_Source" user="system" password="manager" url="jdbc:oracle:thin:@//localhost:1521/xe" transactionIsolation="UNSPECIFIED" doc:name="Oracle Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="oracleJdbcBean" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
<jbossts:transaction-manager doc:name="Transaction Manager"/>
<spring:beans>
<spring:bean id="oracleJdbcBean" name="oracleJdbcBean" class="oracle.jdbc.xa.client.OracleXADataSource">
<spring:property name="user" value="system"/>
<spring:property name="password" value="manager"/>
<spring:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
</spring:bean>
</spring:beans>
<flow name="oraclexatransactionFlow1" doc:name="oraclexatransactionFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" path="testTable" doc:name="HTTP"/>
<ee:xa-transactional action="ALWAYS_BEGIN" doc:name="Transactional">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="testQuery" queryTimeout="-1" connector-ref="Database" doc:name="Database">
<xa-transaction action="ALWAYS_JOIN"/>
<jdbc-ee:query key="testQuery" value="select * from test"/>
</jdbc-ee:outbound-endpoint>
</ee:xa-transactional>
</flow>
我已经按照上面的配置为其他应用程序使xa事务与oracle数据库一起工作但是我得到了不同的异常,如下所示:
引起:org.xml.sax.SAXParseException; lineNumber:195; columnNumber:55; cvc-complex-type.2.4.a:从元素'xa-transaction'开始发现无效内容。其中一个是{{http://www.mulesoft.org/schema/mule/jdbc“:abstract-query}'。
如果我配置错误,请纠正我。
答案 0 :(得分:0)
Url属性应该是
<spring:property name="url" value="jdbc:oracle:thin:@//localhost:1521/XE"/>
答案 1 :(得分:0)
“URL”的大写字母为我解决了第一个问题,即
<spring:property name="URL" value="jdbc:oracle:thin:@localhost:1521:xe" />
第二个问题是通过在查询之前放置“xa-transaction”元素来解决的,如下所示。
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="testQuery" queryTimeout="-1" connector-ref="Database" doc:name="Database">
<xa-transaction action="NONE" />
<jdbc-ee:query key="testQuery" value="select * from test" />