JDBC 连接器扩展
ThingWorx JDBC 扩展提供了一个快速而简单的解决方案,可供 ThingWorx 管理员部署支持将第三方数据库与 ThingWorx 数据库事物配合使用的标准 JDBC 驱动程序。数据库事物允许 ThingWorx 解决方案开发人员和设计师合作,同时可利用 ThingWorx 上所部署解决方案中的数据库提供的功能。
支持政策
要使用 ThingWorx JDBC 扩展,管理员必须为所需数据库提供适当的 JDBC 驱动程序。虽然 PTC 已采取所有适当措施以确保 JDBC 连接器扩展的常规功能和安全性,但 PTC 无法验证 ThingWorx 是否与任何特定 JDBC 驱动程序兼容,PTC 也不会处理与此类驱动程序或不支持的数据库相关的技术支持请求。
此外,PTC 不提供也无法确认对不受支持的持久化提供工具使用扩展所需的第三方 JDBC 驱动程序的功能或安全性。PTC 强烈建议您在使用具有 JDBC 扩展的第三方驱动程序之前查看
扩展安全建议。
最后,上文所述 JDBC 驱动程序仅适用于 ThingWorx 数据库事物。
概述
如果 ThingWorx 中不存在适用于您的数据库的 JDBC 扩展,则可以通过下载驱动程序并将文件添加到以下位置来手动添加 JDBC 驱动程序:/Tomcat folder/webapps/Thingworx/WEB- INF/lib
在复制驱动程序之后,必须重新启动 ThingWorx (或 Tomcat,如果重新启动后者更容易)。
如果不想将 JDBC 驱动程序手动加载到 Tomcat 中,且必须重新启动 Tomcat,则可以构建包含 JDBC 驱动程序的数据库扩展,并导入该扩展。这种方法的优点是不必手动加载驱动程序,即可为您处理类加载,并且可以安全升级,因此,在更新 ThingWorx web 应用程序时不必重新部署驱动程序。有关创建数据库扩展的详细信息,请按照以下步骤进行操作。
为 ThingWorx 创建 JDBC 扩展
|
ThingWorx 扩展支持模型最近已更改。大多数扩展不再提供在下载页面中。有关详细信息,请参阅 本文章。
|
2. 请参阅示例元数据文件:
<Entities>
<ExtensionPackages>
<!-- The name attribute of the ExtensionPackage element correlates to the name of the zip
archive for the extension -->
<ExtensionPackage name="DatabaseXYZ_ExtensionPackage" description="DatabaseXYZ JDBC Extension" vendor="Acme Corporation" packageVersion="1.0" minimumThingWorxVersion="5.0.0">
<JarResources>
<!-- The JDBC JAR file being used to connect to DatabaseXYZ -->
<FileResource type="JAR" file="databaseXYZ.jdbc.jar" description="DatabaseXYZ JDBC JAR"/>
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<ThingTemplates>
<!-- A Database ThingTemplate for the DatabaseXYZ extension -->
<ThingTemplate name="DatabaseXYZ" baseThingTemplate="Database" description="DatabaseXYZ ThingTemplate"/>
</ThingTemplates>
</Entities>
3. 下载适当的 JDBC 驱动程序。
4. 通过创建目录 lib/common 来构建扩展结构。
5. 将 JAR 文件放在以下目录位置:lib/common/<JDBC driver JAR file>。
6. 根据需要修改 metadata.xml 文件中 ExtensionPackage 实体的 name 属性。
7. 将 FileResource 实体的 file 属性指向 JDBC JAR 文件的名称。
8. 元数据还包含事物模板。该名称设置为 MySqlServer,但可以根据需要进行修改。
9. 选择 lib 文件夹和 metadata.xml 文件并发送到一个 zip 存档。
|
zip 存档的名称应与 metadata.xml 文件中 ExtensionPackage 实体的名称属性中给出的名称匹配。
|
10. 导入新创建的扩展。
11. 要使用 JDBC 扩展,请创建一个新事物,并分配使用 JDBC 扩展导入的新事物模板。
字段名称
|
说明
|
JDBC 驱动类名称
|
取决于正在使用的驱动程序。
|
JDBC 连接字符串
|
|
ConnectionValidationString
|
用于验证数据库返回值的简单查询 (不考虑要执行的表格名称)。
|
针对数据库的查询和命令
配置完成后,可以在服务中创建 SQLQueries 和 SQLCommands,以在您连接的数据库上执行。
传递变量
在构建查询时,使用 [[参数名称]] 进行参数/变量替换,并使用 <<字符串替换>> 进行字符串替换。
示例
DELETE FROM <> WHERE (FieldName = '[[MatchName]]');
DELETE FROM << TableName >> WHERE ( FieldName = [[MatchNumber]]);
|
使用 << ... >> 字符串替换是非常危险的,因为这会存在 SQL 注入风险。在考虑这种参数传递的方法时,我们建议您慎用。但是,要创建一组动态性非常强的查询,必须以 << 表名称 >> 形式传入表名称。此外,如果需要使用 IN 子句,您的集合需要传入 << 项 1、项 2、项 3 >>
|