E 非推奨のContent Repository API for Java
Oracle XML DB Content Connectorは、JSR-170としてJavaコミュニティが開発した標準Java APIであるContent Repository API for Java (JCRとも呼ばれる)を実装します。Oracle XML DBリポジトリには、Oracle XML DB Content Connectorを使用してアクセスできます。
注意:
Oracle XML DB Content Connectorは、Oracle Database 12c リリース2 (12.2.0.1)から非推奨となりました。Java標準JSR-170は、JSR-283 Content Repository for Java Technology Version 2.0に置き換えられました。
- Content Repository API for Java(JCR)について
JCR 1.0は、アプリケーションがコンテンツ・リポジトリと対話するための標準Java APIを定義します。コンテンツ・リポジトリは、ノードのツリーであり、各ノードは1つ以上の子ノードを持つことができます。ルート・ノード以外の各ノードは、親ノードを1つのみ持ちます。 - Oracle XML DB Content Connectorについて
Oracle XML DB Content Connectorでは、JCR 1.0 Javaを使用してOracle XML DBリポジトリにアクセスできます。アプリケーションは、スタンドアロンJava仮想マシン(JVM)またはJ2EEコンテナのいずれかで動作できます。このリポジトリのファイルおよびフォルダは、JCRノード(およびそれらのノードのプロパティ)として表されます。 - JCRでのOracle XML DBリポジトリの公開方法
Oracle XML DB Content Connectorは、Oracle XML DBリポジトリのデータをJCRノードおよびプロパティとして表します。ファイルおよびフォルダは、それぞれ型がnt:file
とnt:folder
のノードとして表されます。そのコンテンツとメタデータは、ノード型がnt:resource
のノードとして公開されます。 - Oracle XML DB Content ConnectorのCLASSPATH
Oracle XML DB Content Connectorでは、環境変数CLASSPATH
に特定のエントリが必要です。 - JCRリポジトリ・オブジェクトの取得
Oracle XML DB Content Connectorでは、oracle.jcr.OracleRepository
は、JCRリポジトリへのエントリ・ポイントとなるJCRインタフェースjavax.jcr.Repository
を実装します。これを使用して、Oracle XML DBリポジトリのリポジトリ
・オブジェクトを取得できます。 - Oracle XML DB Content Connectorを使用してリポジトリにファイルをアップロードするためのJavaコード
Oracle XML DB Content Connectorを使用して、ローカルのファイル・システムからOracle XML DBリポジトリにファイルをアップロードできます。 - 追加のJCRコード例
追加のJCRコード例は、$ORACLE_HOME/xdk/demo/java/jcr
で入手できます。コード・サンプルごとに、README
ファイルにその目的および使用方法が記述されています。 - Oracle XML DB Content Connectorでの標準JavaロギングAPIの使用
Oracle XML DB Content Connectorは標準のjava.util.logging
フレームワークを使用します。そのフレームワークにより提供されたロギングAPIを使用して、ロギング動作を制御できます。 - サポートされているJCRコンプライアンス・レベル
JCRバージョン1.0を定義するJSR-170標準では、2つのコンプライアンス・レベルと一連のオプション機能が定義されています。Oracle XML DB Content Connectorでは、レベル1(読取り機能)とレベル2(書込み機能)がサポートされています。 - Oracle XML DB Content Connectorの制限
Oracle XML DB Content Connectorには特定の制限事項が適用されます。 - XML SchemaとJCR
Oracle XML DB Content ConnectorはXML SchemaからJCRノード型を作成できます。
親トピック: 付録
E.1 Content Repository API for Java (JCR)について
JCR 1.0は、アプリケーションがコンテンツ・リポジトリと対話するための標準Java APIを定義します。コンテンツ・リポジトリは、ノードのツリーであり、各ノードは1つ以上の子ノードを持つことができます。ルート・ノード以外の各ノードは、親ノードを1つのみ持ちます。
子ノードに加えて、各ノードは1つ以上のプロパティを持つことができます。プロパティは、単純な名前と値の組合せです。たとえば、コンテンツ・リポジトリで特定のファイルを表すノードには、値がファイルの作成日であるjcr:created
というプロパティがあります。
各プロパティにはプロパティ型があります。たとえば、jcr:created
プロパティには値を有効な日時にするよう要求するDATE
というプロパティ型があります。
同様に、各ノードにはノード型があります。たとえば、ファイルを表すノードにはnt:file
というノード型があります。ノード型は、ノードが持つことが可能または必要な子ノードおよびプロパティを制御します。たとえば、nt:file
型のすべてのノードにはjcr:created
プロパティがあります。
ノードとプロパティには名前が付けられているため、パスで指定できます。JCRでは絶対パスと相対パスの両方がサポートされています。たとえば、絶対パス
/My Documents/pictures/puppy.jpg/jcr:created
は、ファイルpuppy.jpg
のjcr:created
プロパティに変換されます。また、次の相対パスにより、このプロパティをMy Documents
フォルダに対して指定できます。
pictures/puppy.jpg/jcr:created
ノード名およびプロパティ名は、名前空間修飾にできます。XML同様、JCRはコロンで区切られた名前空間接頭辞を使用して、jcr:created
などの名前空間修飾名を表します。XMLと異なり、JCRではリポジトリ全体の名前空間レジストリで名前空間接頭辞とURIのマッピングが記録されます。たとえば、jcr
接頭辞はURI http://www.jcp.org/jcr/1.0
にマップされます。
関連項目:
JSR 170: Content Repository for Java technology API。この仕様の第4章でJCR 1.0の簡単な概要が説明されています。
E.2 Oracle XML DB Content Connectorについて
Oracle XML DB Content Connectorでは、JCR 1.0 Javaを使用してOracle XML DBリポジトリにアクセスできます。アプリケーションは、スタンドアロンJava仮想マシン(JVM)またはJ2EEコンテナのいずれかで動作できます。このリポジトリのファイルおよびフォルダは、JCRノード(およびそれらのノードのプロパティ)として表されます。
JCR APIを使用して、リポジトリ・ファイルおよびフォルダを作成、取得および更新できます。
注意:
Oracle XML DB Content ConnectorをデータベースOracle JVM(データベース・プロセス内で使用可能なJava仮想マシン)で使用できません。データベース層でContent Connectorを使用するには、スタンドアロンJava仮想マシンまたはJ2EEコンテナのいずれかを使用する必要があります。
E.3 JCRでのOracle XML DBリポジトリの公開方法
Oracle XML DB Content Connectorは、Oracle XML DBリポジトリのデータをJCRノードおよびプロパティとして表します。ファイルおよびフォルダは、それぞれ型がnt:file
とnt:folder
のノードとして表されます。そのコンテンツとメタデータは、ノード型がnt:resource
のノードとして公開されます。
E.4 Oracle XML DB Content ConnectorのCLASSPATH
Oracle XML DB Content Connectorでは、環境変数CLASSPATH
に特定のエントリが必要です。
-
$ORACLE_HOME/lib/jcr-1.0.jar
-
$ORACLE_HOME/lib/ojcr.jar
-
$ORACLE_HOME/lib/xmlparserv2.jar
-
$ORACLE_HOME/jlib/xquery.jar
E.5 JCRリポジトリ・オブジェクトの取得
Oracle XML DB Content Connectorでは、oracle.jcr.OracleRepository
は、JCRリポジトリへのエントリ・ポイントとなるJCRインタフェースjavax.jcr.Repository
を実装します。これを使用して、Oracle XML DBリポジトリのリポジトリ
・オブジェクトを取得できます。
例E-1のコード・フラグメントは、これを示しています。
OracleRepository
は、java.io.Serializable
およびjavax.naming.Referenceable
の両方を実装します。これによりアプリケーションのデプロイ時にOracleRepository
オブジェクトを作成および構成し、JNDIディレクトリにすぐに使用できるOracleRepository
オブジェクトを格納できます。実行時に、アプリケーションはJNDIディレクトリから構成済のOracleRepository
オブジェクトを取得できます。JCRの仕様でお薦めするこの方法により、デプロイメントと実行時の懸案事項が区別されます。
Oracle XML DB Content Connectorでは、JCR名前空間レジストリを構成する接頭辞とURIのマッピングはOracleRepository
構成の一部として格納されます。
関連項目:
Oracle Database XML Java APIリファレンス、パッケージoracle.jcr
例E-1 リポジトリ・オブジェクトの取得方法を示すコード・フラグメント
import oracle.jcr.OracleRepository;
import oracle.jcr.OracleRepositoryFactory;
import oracle.jcr.xdb.XDBRepositoryConfiguration;
import oracle.jdbc.pool.OracleDataSource;
...
XDBRepositoryConfiguration configuration =
new XDBRepositoryConfiguration();
OracleDataSource ods =
(OracleDataSource)configuration.getDataSource();
// databaseURL is a JDBC database URL.
ods.setURL(databaseURL);
// OracleRepository implements javax.jcr.Repository.
OracleRepository repository =
OracleRepositoryFactory.createOracleRepository(configuration);
E.6 Oracle XML DB Content Connectorを使用してリポジトリにファイルをアップロードするためのJavaコード
Oracle XML DB Content Connectorを使用して、ローカルのファイル・システムからOracle XML DBリポジトリにファイルをアップロードできます。
例E-2は、これを示すJavaプログラムです。コマンドラインからこれをコンパイルおよび実行できます。プログラムには、次のようなコマンドライン引数が必要です。
-
JDBCデータベースURL
-
ユーザーID
-
ユーザー・パスワード
-
ファイルをアップロードするOracle XML DBリポジトリのフォルダ
-
アップロードするファイル
-
MIMEタイプ
例E-3に、これを示します。
例E-2 Oracle XML DB Content Connectorを使用したファイルのアップロード
import java.io.FileInputStream;
import javax.jcr.Node;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import oracle.jcr.OracleRepository;
import oracle.jcr.OracleRepositoryFactory;
import oracle.jcr.xdb.XDBRepositoryConfiguration;
import oracle.jdbc.pool.OracleDataSource;
public class UploadFile
{
public static void main(String[] args)
throws Exception
{
String databaseURL = args[0];
String userName = args[1];
String password = args[2];
String parentPath = args[3];
String fileName = args[4];
String mimeType = args[5];
// Get the JCR Repository object.
XDBRepositoryConfiguration configuration =
new XDBRepositoryConfiguration();
OracleDataSource ods =
(OracleDataSource)configuration.getDataSource();
ods.setURL(databaseURL);
OracleRepository repository =
OracleRepositoryFactory.createOracleRepository(configuration);
// Create a JCR Session.
SimpleCredentials sc =
new SimpleCredentials(userName, password.toCharArray());
Session session = repository.login(sc);
// Get the parent node.
Node parentNode = (Node)session.getItem(parentPath);
// Get the child contents.
FileInputStream inputStream = new FileInputStream(fileName);
// Create child node.
Node node = parentNode.addNode(fileName, "nt:file");
Node contentNode = node.getNode("jcr:content");
contentNode.setProperty("jcr:mimeType", mimeType);
contentNode.setProperty("jcr:data", inputStream);
// Save changes and logout.
session.save();
session.logout();
}
}
// EOF
例E-3 コマンドラインを使用したファイルのアップロード
export CLASSPATH=.:$ORACLE_HOME/lib/jcr-1.0.jar:$ORACLE_HOME/lib/ojcr.jar:Foot 1
$ORACLE_HOME/lib/xmlparserv2.jar:$ORACLE_HOME/jlib/xquery.jar
javac UploadFile.java
java UploadFile jdbc:oracle:oci:@ quine password
/public MyFile.txt text/plain
E.7 追加のJCRコード例
追加のJCRコード例は、$ORACLE_HOME/xdk/demo/java/jcr
で入手できます。コード・サンプルごとに、README
ファイルにその目的および使用方法が記述されています。
E.8 Oracle XML DB Content Connectorでの標準JavaロギングAPIの使用
Oracle XML DB Content Connectorは標準のjava.util.logging
フレームワークを使用します。そのフレームワークにより提供されたロギングAPIを使用して、ロギング動作を制御できます。
たとえば、次のJavaコード・フラグメントはすべてのロギングを無効にします。
import java.util.logging.LogManager;
...
LogManager.getLogManager().reset();
E.9 サポートされているJCRコンプライアンス・レベル
JCRバージョン1.0を定義するJSR-170標準では、2つのコンプライアンス・レベルと一連のオプション機能が定義されています。Oracle XML DB Content Connectorでは、レベル1(読取り機能)とレベル2(書込み機能)がサポートされています。
脚注の説明
脚注1:この文は、説明のために2行に分割されています。