2016-10-27 17 views
0

저는 Saxon 9.5 EE를 사용하고 saxon sql 사용에 대한 예제가있는 공식 문서를 따르고 있습니다. 그에서 다음 코드를 dB로 연결하는 것은 JNDI에서 데이터베이스 연결에 액세스하는 방법과 saxonica (Saxon) sql 확장을 사용하는 XA 트랜잭션 지원이 있습니까?

<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 데이터 소스에서 기존 연결 풀을 사용하고 싶습니다. 또한이 모든 데이터베이스 활동을 XA 트랜잭션의 일부로 만들 수 있는지 알고 싶습니다.

이렇게하면 원하는 성능을 얻을 수 없습니다. 이것에 대한 대안으로 smooks와 FTL을 사용하여 3-4 배 빨라진 jndi 데이터 소스를 사용했지만 xslt의 고급 기능과 대규모 커뮤니티가 느슨합니다.

누군가 비슷한 일을했다면 도움을주십시오.

답변

0

Saxon의 SQL 확장은 주로 사용자가 제공 한 코드였습니다. 오픈 소스이므로 확장하거나 더 야심 찬 것을위한 출발점으로 사용할 수 있습니다.

하지만 필요하지 않을 수도 있습니다. 예를 들어, Saxon의 sql : connect를 사용하여 연결을 가져 오는 대신 Stylesheet (매개 변수로 ExternalObject로 래핑 됨)로 JDBC 연결을 확실히 전달할 수 있습니다.

오늘 SQL 확장을 사용했다면 확장 요소를 사용하지 않을 것이라고 생각합니다. 함수를 사용하여 모든 것을 수행 할 것입니다. 우리가 지금지도와 고차 함수를 가지고있어 더 복잡한 매개 변수와 결과 구조를 설계 할 수 있기 때문에 이전보다 쉬워졌습니다. 예를 들어, sql : query()를 사용하면 결과의 한 행을 나타내는 맵 배열을 반환합니다.