Cyber Luxeon Java API
Cyber Luxeonで使用するJava APIは大きく3つに分類されます。「DB接続系API」「物理構造アクセス系API」「XMLデータ操作系API」の3つです。物理構造アクセス系APIは、Cyber Luxeonの物理構成上に存在するパーティション・XMLストア・ディレクトリ・XMLドキュメントなどのことです。物理構造についての詳細は、「XMLDBとCyber Luxeonの基本」を参照してください。
以下では、サンプルアプリケーションで主に使用するクラス・インターフェイスについて説明します。
DB接続系API
DB接続系APIは、Cyber Luxeonへの接続機能を提供するAPI群です。以下の表に主なクラス、インターフェイスをまとめます。
| パッケージ | クラス・インターフェイス名 | 説明 |
| com.exln.dxe.client | XlnClientSessionFactory | CyberLuxeon接続時に認証を使用しないクライアントセッションを生成するファクトリクラス。 |
| XlnSecureClientSessionFactory | CyberLuxeon接続時に認証を使用するクライアントセッションを生成するファクトリクラス。 | |
| com.exln.dxe | Session | Cyber Luxeonへの接続を表す。JDBCのjava.sql.Connectionインターフェイスに該当する。 |
クライアントセッションは以下のソースのようにXlnClientSessionFactoryのgetSessionメソッドを使用して取得し、releaseメソッドで解放します。
// セッションの取得 Session clientSession = XlnClientSessionFactory.getSession(); // 何らかの処理~省略 // セッションの解放 clientSession.release();
物理構造アクセス系API
物理構造アクセス系APIは、「XMLDBとCyber Luxeonの基本」で説明した、Cyber Luxeonの物理構成にアクセスすることを目的としたAPIです。主なクラス、インターフェイスを以下の表にまとめます。
| パッケージ | クラス名 | 説明 |
| com.exln.dxe | Partition | パーティションにアクセスし、操作するためのインターフェイス。 |
| XMLStore | XMLStoreにアクセスし、操作するためのインターフェイス。 | |
| com.exln.dxe.filesystem | Directory | ディレクトリにアクセスし、操作するためのインターフェイス。 |
| XMLDocument | XML文書にアクセスし、操作するためのインターフェイス。 | |
| Binder | XMLバインダドキュメントにアクセスし、操作するためのインターフェイス。XMLDocumentインターフェイスを継承している。 |
以下に物理構造アクセス系APIのサンプルを示します。
// セッションの取得 Session clientSession = XlnClientSessionFactory.getSession(); // パーティションの取得 Partition partition = clientSession.getPartition( "ec_item" ); // XMLストアの取得 XMLStore xmlStore = clientSession.getXMLStore( XML_STORE_NAME ); // ルートディレクトリの取得 Directory dir = xmlStore.getRootDirectory(); // XMLドキュメントの取得 XMLDocument xml = (XMLDocument)xmlStore.getFile( "items/001.xml" );
getXXXXメソッドで、下位にあるエンティティ(XMLストアの場合、ディレクトリ、XMLファイル)を取得することができます。また、既存のエンティティにgetXXXXメソッドでアクセスするだけでなくcreateXXXXメソッドで新規に作成することもできます。詳細は参考資料の「Cyber Luxeonハンドブック」を参照してください。
XMLデータ操作系API
XMLデータ操作系APIは、XML上のデータを操作する際に使用するAPIです。主なクラス、インターフェイスを以下の表にまとめました。
| パッケージ | クラス名 | 説明 |
| com.exln.dxe | XQuery | XQuery実行文を表現したインターフェイス。 |
| XQueryItem | XQueryの実行結果として抽出される「アイテム」を表現したインターフェイス。「アイテム」とは、XML文書のノード、あるいはアトミック値のこと。 | |
| XQuerySequenceインターフェイス | XQueryの実行結果として抽出される「シーケンス」を表現したインターフェイス。シーケンスは、さまざまな異なる「アイテム」の集合を順番に並べたもの。 | |
| Update | XUGを表現したインターフェイス。 | |
| XPath | XPathの実行文を表現したインターフェイス。 | |
| XPathValue | XPathの実行結果値を表現したインターフェイス。 |
XQueryの実行
XQueryの実行には、com.exln.dxe.XQueryインターフェイスを使用します。以下にXQuery実行のサンプルソースを示します。
String xquery
= "for $item in /MultiDoc_Container/item"
+ " where $item/@item_code='0000001'"
+ " return $item";
// XQueryの取得
XQuery xQuery = xmlDbSession.createXQuery( xquery );
// 検索対象のXMLファイルを取得
XMLDocument xmlDoc = (XMLDocument)xmlStore
.getFile( "items/item_container.bnd" );
// XQuery実行
xQuery.execute(xmlDoc);
// 実行結果の取得
XQuerySequence results = xQuery.getResults();
// 検索結果の項目にアクセス
XQuerySequenceIterator iter = results.getIterator();
List<Object> list = new ArrayList<Object>();
while( iter.hasNext() ){
XQueryItem item = iter.nextItem();
Node node = (Node)item.getValue();
list.add( node );
}
XPathの実行
XPathの実行には、com.exln.dxe.XPathインターフェイスを使用します。以下にXPath実行のサンプルソースを示します。
Session clientSession = XlnClientSessionFactory.getSession(); XMLStore xmlStore = clientSession.getXMLStore( XML_STORE_NAME ); // 検索対象のXMLファイルを取得 XMLDocument xml = (XMLDocument)xmlStore .getFile( "items/item_container.bnd" ); // XPathの取得 XPath xPath = clientSession.createXPath( "/MultiDoc_Container/item[@item_code='001']" ); // XPathの実行 xPath.execute( (DOMDocumentProvider)xml ); // 検索結果にアクセス XPathValue xPathValue = xPath.getResult(); XlnInputStream inputStream = xPathValue.export( true ); String resultStr = inputStream.getStringContents( "Shift_JIS" ); System.out.println( resultStr );
XUGの実行
XUGの実行には、com.exln.dxe.Updateインターフェイスを使用します。以下にXUG実行のサンプルソースを示します。
// セッションの取得
Session clientSession = XlnClientSessionFactory.getSession();
// XMLストアの取得
XMLStore xmlStore = clientSession.getXMLStore( "ec_item_xmlstore" );
//Update(XUG)オブジェクトの取得
Update xug = xmlDbSession.createUpdate( xugStr );
// XUGの実行
xug.execute( "items/001.xml" , xmlStore );
まとめ
本稿では、JAXB 2.0のAPI・アノテーション、Cyber Luxeon Java APIについて説明しました。Cyber Luxeon APIには本稿で説明した以外にも多くのAPIが用意されています。Cyber Luxeon Java APIの全体像を把握しておくことで、XMLDBアプリケーションの開発にあたって適切なAPIを使用することができるようになり、開発スピードの向上・開発の効率化をはかることができます。
興味のある方は、参考資料の「Cyber Luxeon ハンドブック」を参照してみてください。次回は、本稿で説明したAPIを主に使用して、XMLDBのCRUD(作成・抽出・更新・削除)処理を中心としたサンプルアプリケーション実装し、説明します。
参考資料
- 『Cyber Luxeonハンドブック』 サイバーテック社
- 『JDK 6 ドキュメント』

