JDBC コネクタ拡張機能
ThingWorx JDBC 拡張機能は、ThingWorx データベース Thing に使用するサードパーティのデータベースをサポートするために必要な標準の JDBC ドライバーを ThingWorx 管理者が速やかかつ簡単にデプロイできるようにするためのソリューションを提供します。データベース Thing により、ThingWorx ソリューション開発者とアーキテクトは、ThingWorx 上にデプロイされたソリューション内でデータベースによって提供される機能を組み込んで利用できるようになります。
サポートポリシー
ThingWorx JDBC 拡張機能を使用するには、管理者は目的のデータベースに適した JDBC ドライバーを提供する必要があります。PTC は JDBC コネクタ拡張機能の一般的な機能とセキュリティを確保するために適切なすべての措置を講じていますが、PTC は ThingWorx が個々の JDBC ドライバーと互換性があるかどうかを確認することはできません。また、PTC はそのようなドライバーやサポートされていないデータベースに関連するテクニカルサポートリクエストを処理しません。
さらに、PTC はサポートされていない永続化プロバイダでこの拡張機能を使用するために必要なサードパーティ JDBC ドライバーの機能やセキュリティを提供せず、これらを確認することはできません。JDBC 拡張機能でサードパーティのドライバーを使用する前に、
拡張機能のセキュリティに関する推奨事項を確認することを強くお勧めします。
最後に、先に述べたこれらの JDBC ドライバーは ThingWorx データベース Thing 専用です。
概要
データベースに対応する JDBC 拡張機能が ThingWorx に存在しない場合、ドライバーをダウンロードし、/Tomcat folder/webapps/Thingworx/WEB- INF/lib にファイルを追加することで、JDBC ドライバーを手動で追加できます。
ドライバーをコピーした後、ThingWorx (または Tomcat (その方が容易な場合)) を再起動する必要があります。
Tomcat に JDBC ドライバーを手動でロードして Tomcat を再起動することを避けたい場合は、JDBC ドライバーを含むデータベース拡張機能を作成し、その拡張機能をインポートしても構いません。この方法の利点は、ドライバーを手動でロードする必要がないことです。クラスロードが処理され、安全にアップグレードを実行できるため、ThingWorx ウェブアプリケーションを更新するときにドライバーを再配置する必要がありません。データベース拡張機能の作成の詳細については、次の手順に従います。
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 ドライバー JAR ファイル> に置きます。
6. 必要に応じて、metadata.xml ファイルで ExtensionPackage エンティティの name 属性を修正します。
7. FileResource エンティティの file 属性で JDBC JAR ファイルの名前を指定します。
8. メタデータには Thing Template も含まれています。名前は MySqlServer に設定されていますが、必要に応じて修正できます。
9. lib フォルダと metadata.xml ファイルを選択し、ZIP アーカイブに送信します。
|
ZIP アーカイブの名前は、metadata.xml ファイルでの ExtensionPackage エンティティの name 属性に指定されている名前と一致している必要があります。
|
10. 新しく作成した拡張機能をインポートします。
11. JDBC 拡張機能を使用するには、新しい Thing を作成し、JDBC 拡張機能とともにインポートされた新しい Thing Template を割り当てます。
フィールド名
|
説明
|
JDBC ドライバーのクラス名
|
使用するドライバーによって異なります。
|
JDBC 接続文字列
|
|
ConnectionValidationString
|
(実行するテーブル名に関係なく) データベースからの戻り値を検証するシンプルなクエリー。
|
データベースに対するクエリーやコマンド
コンフィギュレーションが設定済みである場合、「サービス」で SQL クエリーや SQL コマンドを作成し、接続先のデータベースで有効にできます。
変数の受け渡し
クエリーを作成するときには、[[パラメータ名]] を使用してパラメータ/変数を置き換え、<<文字列置換>> を使用して文字列を置き換えます。
例
DELETE FROM <> WHERE (FieldName = '[[MatchName]]');
DELETE FROM << TableName >> WHERE ( FieldName = [[MatchNumber]]);
|
<< ... >> 文字列置換を使用すると、SQL インジェクションのリスクが生じ、非常に危険です。このパラメータ受け渡し方法を検討するときは注意することをお勧めします。ただし、非常に動的なクエリーのセットを作成するには、テーブル名を << テーブル名 >> として渡す必要があります。また、IN 句を使用しなければならない場合は、<< アイテム 1, アイテム 2, アイテム 3,>> という形式でコレクションを渡す必要があります。
|