如何从JNDI访问数据库连接,是否有使用saxonica(Saxon)sql扩展的XA事务支持?

时间:2016-10-27 12:41:07

标签: xml xslt jndi saxon smooks

我正在使用Saxon 9.5 EE并遵循官方文档,其中给出了使用saxon sql的示例。在那里提到连接到db以下代码片段

<xsl:stylesheet
xmlns:sql="http://saxon.sf.net/sql"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:saxon="http://saxon.sf.net/"
extension-element-prefixes="saxon sql">

<!-- insert your database details here, or supply them in parameters -->
<xsl:param name="driver" select="'sun.jdbc.odbc.JdbcOdbcDriver'"/>
<xsl:param name="database" select="'jdbc:odbc:test'"/>  
<xsl:param name="user"/>
<xsl:param name="password"/>

但我不想在这里提及IP,url密码,我想使用来自jndi datasource的现有连接池。我还想知道是否所有数据库活动都可以成为XA事务的一部分。

这样我无法达到预期的性能。替代这个我尝试使用smooks和使用jndi数据源的FTL,这是快3-4倍但我放松了xslt高级功能和大型社区。

如果有人做过类似的事情请帮助。

1 个答案:

答案 0 :(得分:0)

Saxon的SQL扩展主要是用户贡献的代码,它是开源的,欢迎您扩展它或将其用作更具野心的东西的起点。

但您可能不需要:例如,您当然可以将JDBC连接作为参数传递给样式表(包装为ExternalObject),而不是使用Saxon的sql:connect获取连接。

如果我今天在进行SQL扩展,我认为我不会使用扩展元素,我会用函数来完成。这比过去更容易,因为我们现在有了地图和高阶函数,因此可以设计更复杂的参数和结果结构。例如,我将使用sql:query()返回一个映射数组,每个映射表示一行结果。