13.7 dropjavaツール
dropjavaツールは、loadjavaツールと逆の処理を実行します。コマンドラインでのファイル名およびJARファイルまたはZIPファイルの内容をスキーマ・オブジェクト名に変換してから、スキーマ・オブジェクトとそれに対応するダイジェスト表の行を削除します。.java、.class、.sqlj、.ser、.zip、.jarおよびリソース・ファイル名をコマンドラインに任意の順序で入力できます。
                  
また、スキーマ・オブジェクト名を、直接dropjavaツールに指定できます。.jar、.zip、.class、.javaまたは.sqljで終わらないコマンドライン引数は、スキーマ・オブジェクト名とみなされます。複数のスキーマ・オブジェクトに該当するスキーマ・オブジェクト名を指定すると、該当するすべてのスキーマ・オブジェクトが削除されます。
                  
クラスを削除すると、そのクラスに依存しているクラス群が無効になり、これは、上方に再帰的に連鎖します。ソースを削除すると、それから導出されたクラスが削除されます。
注意:
Javaスキーマ・オブジェクトは、最初にロードしたときと同じ方法で削除する必要があります。.sqljソース・ファイルをロードしてサーバーで変換する場合は、同じソース・ファイルでdropjavaツールを実行する必要があります。クライアントで変換してからクラスおよびリソースを直接ロードする場合は、同じクラスおよびリソースでdropjavaツールを実行します。
                     
dropjavaツールは、コマンドラインから実行するか、またはDBMS_JAVAクラスのdropjavaメソッドを使用して実行できます。使用しているJavaアプリケーション内からdropjavaツールを実行するには、次のコマンドを使用します。
                  
call dbms_java.dropjava('... options...');
オプションは、コマンドラインで指定する内容と同じです。各オプションは空白で区切ります。オプションをカンマで区切らないでください。ただし、-resolverオプションは例外です。接続は常にカレント・セッションに対して確立されます。したがって、-userオプションを使用して別のユーザー名を指定することはできません。
                  
-resolverの場合は、他のすべてのオプションを最初に指定してカンマ(,)で区切り、次に-resolverオプションとその定義を指定してください。-thin、-oci、-userおよび-passwordの各オプションは、loadjavaツールのデータベース接続に関連しているため、指定しないでください。出力はstderrに送信されます。serveroutputをオンに設定し、必要に応じてdbms_java.set_outputをコールします。
                  
この項の内容は次のとおりです。
13.7.1 dropjavaツールの構文
dropjavaツールのコマンド構文は次のとおりです。
                     
dropjava [options] {file.java | file.class | file.sqlj | 
file.jar | file.zip | resourcefile} ...
  -u | -user user/[password][@database]
  [-genmissingjar JARfile]
  [-jarasresource][-o | -oci | -oci8] [-optionfile file] [-optiontable table_name] [-S | -schema schema] [-stdout] [-s | -synonym] [-t | -thin]
[-v | -verbose] [-list] [-listfile]
13.7.2 dropjavaツールの引数の概要
表13-3は、dropjavaツールの引数の一覧です。
                     
表13-3 dropjavaの引数の概要
| 引数 | 説明 | 
|---|---|
| 
 | ユーザー名、パスワードおよびデータベース接続文字列(オプション)を指定します。ファイルはこのデータベース・インスタンスから削除されます。 | 
| 
 | 
 | 
| 
 | このオプションのオペランドを処理対象のファイルとして扱います。 | 
| 
 | 以前にリソースとしてロードされたJARファイル全体を削除します。 | 
| 
 | 
 | 
| 
 | 使用方法は | 
| 
 | 使用方法は | 
| 
 | スキーマ・オブジェクトを削除するスキーマを指定します。このオプションを指定しないと、ログイン・スキーマが使用されます。他のユーザーのスキーマからスキーマ・オブジェクトを削除するには、 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | コマンドラインにリストされたクラス、Javaソースまたはリソースがクライアント・マシンまたはサーバー・マシン上に存在しない場合、これらを削除します。 | 
| 
 | ファイルを読み取り、そのファイルにリストされたクラス、Javaソースまたはリソースがクライアント・マシンまたはサーバー・マシン上に存在しない場合はこれらを削除します。ファイルには、行ごとに完全なクラス名、Javaソース名またはリソース名の内部表現が含まれます。 | 
13.7.3 dropjavaツールの引数の詳細
この項では、dropjavaツールの一部の複雑な引数について説明します。
                     
ファイル名
dropjavaツールは、ほとんどのファイル名をloadjavaツールと同じ方法で解析します。
                     
- 
                           .classファイルファイル内のクラス名を検索して、対応するスキーマ・オブジェクトを削除します。 
- 
                           .javaおよび.sqljファイルファイル内の最初のクラス名を検索して、対応するスキーマ・オブジェクトを削除します。 
- 
                           .jarおよび.zipファイルアーカイブ・ファイル名を、コマンドラインに入力された場合と同様に処理します。 
dropjavaツールは、これ以外の拡張子が付いているファイル名、または拡張子が付いていないファイル名をスキーマ・オブジェクト名として解析し、その名前に一致するすべてのソース・オブジェクト、クラス・オブジェクトおよびリソース・オブジェクトを削除します。
                     
dropjavaツールは、スキーマ・オブジェクトに一致しないファイル名を検出すると、メッセージを表示し、残りのファイル名を処理します。
                     
user
{-user | -u} user/password[@database]
@databaseの使用可能な形式は、-ociを指定するか、または-thinを指定するかによって異なります。
                     
- 
                           -oci:@databaseはオプションです。指定しない場合、dropjavaツールはユーザーのデフォルト・データベースを使用します。指定した場合、databaseはTNS名またはOracle Net Servicesの名前/値リストのいずれかになります。
- 
                           -thin:@databaseは必須です。形式はhost:lport:SIDです。説明: - 
                                 hostは、データベースが動作しているコンピュータの名前です。
- 
                                 lportは、Oracle Net Services接続のリスニング用に構成されたリスナー・ポートです。デフォルト・インストールでは5521です。
- 
                                 SIDは、データベース・インスタンスの識別子です。デフォルト・インストールではORCLです。
 
- 
                                 
次に、dropjavaツールのコマンド例を示します。
                     
- 
                           ServerObjects.jarからロードしたデフォルト・データベース内のTESTスキーマにある、すべてのスキーマ・オブジェクトを削除する場合dropjava -u HR -schema TEST ServerObjects.jar Password: password
- 
                           JDBC Thinドライバで接続してから、クラス・ファイルとリソース・ファイルをユーザーのスキーマから削除する場合 dropjava -thin -u HR@dbhost:5521:orcl alpha.class beta.props Password: password
リスト・ベースの削除
以前のバージョンのdropjavaツールでは、クライアント側またはサーバー側のユーティリティを実行するマシンにクラス、JAR、ソースおよびリソースが存在する必要がありました。現行バージョンのdropjavaには、クラスのリストに基づき、クライアント・マシンまたはサーバー・マシンに存在しない場合があるクラス、リソースまたはソースを削除できるオプションが用意されています。このリストは、コマンドライン上またはテキスト・ファイル内にある場合があります。次に例を示します。
                     
dropjava –list –u HR –v this.is.my.class this.is.your.class
Password: password
このコマンドは、コマンドラインにリストされたクラスthis.is.my.classおよびthis.is.your.classがクライアント・マシンまたはサーバー・マシン上に存在しない場合、これらを削除します。
                     
dropjava –listfile my.list –u HR –s –v
Password: password
このコマンドは、my.listにリストされたクラスのリストに基づき、クラス、リソースまたはソースおよびそのシノニムを削除し、冗長形式で表示します。
                     
注意:
'-install'フラグは、変更不可のシステムが所有するスキーマ・オブジェクトのロードおよび削除を無視します。
                        
これらのスキーマ・オブジェクトはCREATE JAVA COMMANDで指定されたランタイム・クラスおよびリソースです。
                        
13.7.4 dropjavaツールを使用したリソースの削除について
サーバーに直接ロードされたリソースを削除する場合は注意が必要です。-ser2classオプションを使用せずにクライアントで変換した場合、このリソースにはプロファイルが含まれています。ソースやクラス・スキーマ・オブジェクト、またはサーバー側SQLJトランスレータで生成されたリソース・スキーマ・オブジェクトを削除する場合は、該当する.sqlj ソース・ファイルのパッケージ仕様に従ってスキーマ・オブジェクトが検索されます。ただし、クライアントで生成されてサーバーに直接ロードされたリソースのスキーマ・オブジェクトの完全修飾名は、.jarファイルのパス情報またはロード時にコマンドラインに指定したパス情報によって異なります。.jarファイルを使用してリソースをロードし、同じ.jarファイルを使用してリソースを削除する場合は問題ありません。ただし、コマンドラインを使用してリソースをロードする場合は、dropjavaツールを実行してリソースを削除するときに同じパス情報を指定するように注意してください。