Oracle JDeveloperにおけるSpring 2.0の基礎

オラクル Shay Shmeltzer
2006年9月

はじめに

<>Springは、エンタープライズJavaアプリケーションの開発を簡素化することを目的としたオープンソースのフレームワークです。Spring Frameworkは、さまざまなレイヤーのためのモデルやJavaアプリケーションの機能分野を含む、包括的なソリューションに成長しました。また、POJOの使用に焦点を合わせ、アスペクト指向プログラミングの導入とともに、Inversion of Control(制御の反転)の概念と依存性の注入を採用したことで、世界でも有数のフレームワークへと成長しました。詳しくは、Spring Frameworkの ホームページを参照してください。

Oracle JDeveloperは、エンタープライズJavaベースのSOAアプリケーションを構築するための視覚的かつ宣言的な開発アプローチを提供する無償のIDEです。Oracle JDeveloperは、配置、モデリング、コーディング、デバッグ、プロファイリング、および監査を含む開発ライフ・サイクルを完全に網羅しています。 Oracle JDeveloperでは、一般的なJava IDEにとどまらず、エンタープライズJava、Webサービス、SOA、XML、およびデータベースの開発をすべて単一のIDEでおこなうことができます。Oracle JDeveloperの最新バージョンは、 こちらから入手できます。

この記事では、Spring Frameworkを使用するためのOracle JDeveloperの設定方法を説明します。また、Springでの開発経験をより生産的なものにするOracle JDeveloperの機能の一部を紹介します。

更新 [2007年1月]:Oracle JDeveloperのための新しいSpring拡張機能が利用できるようになりました。ダウンロードするには、「 help」→「 check for updates」メニュー・オプションを選択してください。この拡張機能によって、このチュートリアルの多くの手順が自動化されます。この拡張機能について詳しくは、 概要を参照してください。

Springを使用するためのOracle JDeveloperの設定

Springのダウンロード

この記事では、Spring 2.0を使用します。このバージョンのSpringは依然開発の途上にありますが、Spring Webサイトではすでにリリース候補版(RC)をダウンロードできます。

Spring FrameworkのWebサイト( http://www.springframework.org/download) に移動し、最新安定版リリースのSpring 2.0(この記事の執筆時点ではバージョン2.0 RC3)をダウンロードします。 -with-dependencies.zipで終わるファイルをダウンロードしてください。このファイルには、Springサンプルの実行に必要なすべてのライブラリが含まれています。

次に、マシンに新しいディレクトリを作成して、このファイルを解凍します。この例では、CドライブにC:\spring-framework-2.0-rc3というディレクトリを作成し、解凍しています。

プロジェクト・ディレクトリの設定

Springを使用するようOracle JDeveloperを設定する手順を示すため、このチュートリアルでは、Springパッケージに付属するjpetstoreサンプルを実行するようOracle JDeveloperを設定します。

Oracle JDeveloperを起動して、メニューから「 New」→「 General」→「 Application」を選択し、アプリケーションに名前を割り当てます。アプリケーション定義はディスク上の任意の場所に配置できますが、整理するために、ディレクトリの名前がソースのトップ・ディレクトリになるよう指定することを推奨します。つまり、Springのインストールされたディレクトリにあるsamplesディレクトリに配置します。Application Templateフィールドで、「 No Template」を選択します。

プロジェクトを作成するためのプロンプトが表示されたら、プロジェクトの名前をjpetstoreに変更し、Directory NameフィールドでSpringのsamplesディレクトリ下にあるjpetstoreディレクトリを指定します。

アプリケーション・ナビゲータで、Application SourcesとResourcesセクションまでディレクトリが展開され、そのコンテンツが表示されます。アプリケーション・ナビゲータは、プロジェクトのコンテンツを特定のコンポーネントまで展開して表示する際に、抽象化されたレベルを提供します。

また、「 View」→「 System Navigator」を選択することで、ファイル・システムの構造に近い表示設定に変更できます。

このアプリケーションにはWebインタフェースが含まれているため、Oracle JDeveloperにそのことを示す必要があります。

プロジェクトをダブルクリック(または右クリック)し、Project Propertiesダイアログを表示します。アプリケーション・ナビゲータで、「 Project Content」→「 Web Application」を選択し、移動します。

Browse」ボタンをクリックし、「 war」サブディレクトリをWebコンテンツのルート・ディレクトリとして選択します。

これにより、Web Contentという名前のセクションがアプリケーション・ナビゲータに追加されます。

Oracle JDeveloperのプロジェクトへのライブラリの追加

Oracle JDeveloperには、Springのライブラリがバンドルされていないため、サンプルで使用するそのほかのライブラリと同様に、Oracle JDeveloperのプロジェクトに追加する必要があります。これは、「 project properties」→「 libraries」セクションから実行できます。

ただし、このチュートリアルでは、必要なライブラリの収集をより簡単におこなうため、Springサンプルに含まれるAntスクリプトを使用して、サンプルの構築とすべてのライブラリのリポジトリ作成を実行します。

Oracle JDeveloperでのAntタスクの実行

Resourcesセクションで、build.xmlファイル(Antスクリプト)を見つけます。このファイルを右クリックして「 Run Ant Target」→「 Build」を選択します。これによりサンプルの構築プロセスが実行されます。フルビルド・ファイルと同様にAntタスクを実行する機能は、Oracle JDeveloperがAntフレームワークに提供している組込みサポートの一部です。

Logウィンドウには、スクリプトの実行結果が表示されます。

スクリプトの実行により、コードの配布(およびコンパイル)に必要なすべてのライブラリが含まれる新しいディレクトリが作成されます。

プロジェクトへのライブラリの追加

次の手順は、サード・パーティの任意のjarファイルを現在のプロジェクトに追加するためのものです。
プロジェクトをダブルクリックして、プロジェクト・プロパティを表示し、「 libraries」ノードを選択します。「 Add Jar/Directory」ボタンをクリックします。

新しく作成されたlibディレクトリ(c:\spring-framework-2.0-rc3\samples\jpetstore\war\WEB-INF\lib)に移動して、[Shift]を押しながら、このディレクトリのすべてのjarファイルを選択し、「 OK」をクリックします。

プロジェクトには、Spring固有のライブラリのほかに、いくつかのJ2EEの汎用ライブラリを追加する必要があります。
Project Propertiesウィンドウで、「 Add Library」ボタンをクリックして下にスクロールし、(Extensionsノード下の)J2EEライブラリとJSP Runtimeライブラリを探して、それらをプロジェクトに追加します。

ヒント:Springの定期的な使用を計画している場合、関連するjarファイルを含むJDeveloperライブラリを作成します。これを実行するには、「 tool」→「 manage libraries」メニューを選択して新しいライブラリを作成し、使用するすべてのJARファイルのエントリをそのライブラリに追加します。次に、「 tools」→「 default project properties」を選択して、このライブラリをプロジェクトに追加します。これにより今後は、これらのjarファイルがあらかじめ設定された状態でプロジェクトが作成されます。

プロジェクトのコンパイルと実行

これで、プロジェクトをコンパイルする準備ができました。ツールバーにある「 Rebuild」ボタンをクリックします(または[Alt]+[F9]を押します)。LogウィンドウのMessagesタブを表示し、コンパイルの進捗状況を確認します。これでプロジェクトが正しくコンパイルされるはずです。注:廃止予定のコードに関する4つの警告が表示されますが、ここでは無視します。

プロジェクトを実行する前に、データベースを起動する必要があります。このチュートリアルでは、デモに付属するサンプル・データベース使用します。Command lineウィンドウで、jpetstoreのサンプル下にあるdb\hsqldbディレクトリに移動します。環境変数JAVA_HOMEがJDKディレクトリ(Oracle JDeveloperの完全インストールを実行した場合、JDKディレクトリは[jdev-root]\jdkになります)を指すように設定し、server.batファイルを実行します。
後ほど、Oracle Databaseを使用してサンプルを実行するように設定する方法を確認します。

これで、プロジェクトを実行できます。

アプリケーション・ナビゲータで「 index.html」ページを選択し、右クリックして「 Run」を選択します。

Oracle JDeveloperには、組込みJ2EEコンテナ(Oracle J2EE Container)が付属します。つまり、アプリケーションのテストのため、ほかのJ2EEコンテナをマシンにインストールする必要はありません。
テスト・サイクルをさらに簡素化するため、Oracle JDeveloperは、アプリケーションを自動的に埋込みJ2EEコンテナに配置して、アプリケーションが稼働している状態でブラウザを開きます。
Enter the Store」リンクをクリックし、実際に稼働中のアプリケーションを確認してください。


SpringのためのOracle JDeveloperの機能

Oracle JDeveloperには、すべてのエンタープライズJavaアプリケーションの開発を簡素化する多くの機能が備えられています。この項では、Springを使用した開発経験をより有意義なものにするいくつかの機能を紹介します。

強力なXMLの編集機能

Oracle JDeveloperには、スキーマに基づき、XMLファイルの編集を簡素化する機能を提供する強力なフレームワークが含まれます。Springアプリケーションの開発中は、多くのXML構成ファイルとやり取りをする必要があります。この項では、このやり取りをより優れたものにするための方法を説明します。

最初に、Oracle JDeveloperのXML編集フレームワークで使用するSpringファイルのためにXMLスキーマを登録します。XMLスキーマの場所は、SpringサンプルにあるそれぞれのXMLファイルのヘッダーに記されています。すべてのSpringスキーマのリストは、 ここから表示できます。

XMLスキーマの登録

Tools」→「 Preferences」メニューを選択します。

XML Schemasノード下で、「 add」をクリックし、次の3つのスキーマを追加します。

  • http://www.springframework.org/schema/beans/spring-beans.xsd
  • http://www.springframework.org/schema/aop/spring-aop.xsd
  • http://www.springframework.org/schema/tx/spring-tx.xsd

注:プロキシ経由で作業している場合、XMLスキーマを追加する前に、「 tools」→「 web browser and proxy」エントリを設定してプロキシの情報を含める必要があります。

注:xsdファイルのローカル・コピーを参照することも可能です。xsdファイルは、Spring.jarファイル内にあります。

applicationContext.xmlファイル(WEB-INF下にあります)を開き、Oracle JDeveloperが何を提供しているかを確認します。ファイルの終わりまでスクロールし、最後の</beans>タグの前に新しい行を追加して、 <と入力します。

Oracle JDeveloperのコード・インサイトによって、この時点で使用可能なオプションが提示されます。

リストから「 bean」を選択してスペースを入力すると、コード・インサイトがタグの属性の候補をリストしたポップアップを表示します。

次のようにエントリを入力します。

<bean id="joe" class="joe">

</beans>

ヒント:Oracle JDeveloperでは、自動的にクローズ・タグを入力するように設定できます。この機能を有効化するには、「 tools」→「 preferences」→「 code editor」→「 XML and JSP/HTML」から「 End Tag Completion」オプションにチェックを入れます。

次に、</bean>クローズ・タグの前に新しい行を追加し、 <と入力して「 property」を選択します。Oracle JDeveloperが必須の属性を自動的に入力することを確認します。

XMLファイルを編集する際は、コンポーネント・パレットを使用して、コンポーネントをファイルにドラッグ・アンド・ドロップすることも可能です。

たとえば、コンポーネント・パレット・ウィンドウ([Ctrl]+[Shift]+[P]でウィンドウ表示)で、「 http://www.springframework.org/schema/beans 」スキーマを選択します。これで、XMLファイルのbeanタグ内に propertyタグをドラッグできます。

これにより、ポップ・アップ・ウィンドウが表示され、必須のプロパティ(この例ではname)の挿入が促されます。2番目のタブでは、そのほかのプロパティを設定できます。

また、プロパティ・インスペクタ・ウィンドウ([Ctrl]+[Shift]+[I])では、タグのプロパティを簡単に編集できます。

ファイル・ウィンドウの右側のマージンには、ファイルのステータスが示され、問題のある行に簡単に移動できます。

Structureウィンドウは、概要、ナビゲーション、およびXMLドキュメントの編集機能を提供します。
XMLファイルにエラーがある場合は、ここに表示されます。

Structureウィンドウでは、ファイルの編集もおこなえます。たとえば、さきほど追加した最後の「 bean」エントリを右クリックして、「 delete」を選択することで削除できます。

視覚的なUIの設計

Oracle JDeveloperは、HTML、JSP、JSF、またはSwingでユーザー・インタフェースを設計するための視覚的なWYSIWYGエディタを提供します。

アプリケーション・ナビゲータからJSPページの1つ(例ではConfirmOrder.jspファイル)を開きます。 Oracle JDeveloperがビジュアル・エディタでファイルを開きます。エディタ・ウィンドウの上部のタブを右クリックし、「 split window」を選択します。これで、ファイルがビジュアル・エディタとソース・エディタの両方で表示されます。2つのビューは同期しており、ビジュアル・ビューでオブジェクトをクリックすると、コード・エディタで対象部分がハイライトされます。

コンポーネント・パレットを使用することで、JSPタグとHTMLコンポーネントをページ(デザイン・ビューとソース・ビューの両方)にドラッグ・アンド・ドロップできます。プロパティ・インスペクタとStructureウィンドウも同様に、ページのカスタマイズに使用できます。

JSPページには、あとでデバッグするためにブレーク・ポイントを設定できます。

ビジュアル・ページ・フロー・ダイアグラム

Oracle JDeveloperは、StrutsとJSFの両方に対応したビジュアル・ページ・フロー・ダイアグラムを提供します。

アプリケーション・ナビゲータで、WEB-INFディレクトリ下にある「 struts-config.xml」 ファイルを見つけてダブルクリックし、Strutsページ・フロー・ダイアグラムを開きます。

ダイアグラム・ビューには、アプリケーションのフローが表示されます。また、Thumbnailウィンドウにより、簡単にダイアグラムに移動できます。コンポーネント・パレット、プロパティ・インスペクタ、およびStructureウィンドウを使用することで、ファイルをさらに編集できます。エディタの切替えや分割をおこなうことにより、いつでも直接ソース・コードの表示や修正を実行できます。

ダイアグラム・ベースのファイルの編集環境を希望する場合は、アプリケーション・ナビゲータで「 struts-config.xml」を右クリックし、「 Properties」を選択することで次のようなインタフェースでファイルを編集できます。

使用するデータベースの設定

Oracle JDeveloperには、データベースとのやり取りを直接IDEの内側から実行する機能が含まれています。このシナリオではOracle Database Express Edition(Oracle XE)を使用するようサンプルを変換しますが、この機能は、そのほかのデータベースでも同様に使用できます。

Oracle Database 10g Express Edition(Oracle XE)は、小規模のフットプリントのエントリ・レベル・データベースです。このデータベースは、Oracle Databaseのコードを基にしており、開発、配置、および配布が自由で、素早くダウンロードでき、管理も簡単です。

Oracle XEデータベースをマシンにインストールし、次の手順に従ってSpringのサンプルが実行できるようにします。
注:これらの手順は、既存のOracle Databaseに対しても同様に使用できます。

データベースへの接続の作成

Connectionウィンドウを開き([Ctrl]+[Shift]+[o])、データベース・ノードを右クリックして、新しいデータベース接続を作成します。

ウィザードの1番目のステップで、接続にOracleXEなどの名前をつけます。

2番目のステップで、Systemをユーザー名として入力し、インストール時に使用したパスワードを入力します。

3番目のステップで、データベースに接続するための情報を入力し、SIDフィールドにXEと入力します。

4番目のステップで、接続をテストし、正しく実行されることを確認します。「 OK」をクリックし、ウィザードを終了します。

SQLコマンドの実行

デモ用の表をホストするユーザーを作成します。

接続を右クリックし、「 SQL Worksheet」を選択します。SQL Worksheetでは、データベースで実行されるSQLコマンドを発行できます。

次のコマンドを記述します。

create user spring identified by spring;

緑矢印の「 Run」ボタンをクリックします。

次のコマンドを記述し、実行します。

grant connect,resource to spring;

次に、この新しいユーザー名を使用するようにOracle JDeveloperで接続のプロパティを変更します。

さきほど作成した「 OracleXE」接続を右クリックし、「 properties」を選択します。ユーザー名とパスワードをさきほど作成したユーザーに合わせて変更し、接続をテストします。当然ですが、希望する場合は、Springユーザーのための新しい接続を作成することも可能です。

ここで、Oracleの作成スクリプトを含むディレクトリをプロジェクトに追加します。

アプリケーション・ナビゲータに戻り、プロジェクトをダブルクリックしてプロジェクト・プロパティに移動します。「 Project Content」→「 Resources」を選択して、「 Add」ボタンをクリックし、 jpetstore\db\oracleディレクトリをプロジェクトに追加します。

アプリケーション・ナビゲータで「 Resource」ノードを展開します。「 jpetstore-oracle-schema.sql」ファイルを右クリックして「 Run in SQL*Plus」を選択し、接続名を選択します。

最初にOracle JDeveloper内からSQL*Plusを起動する際は、Oracle XEインストールに付属するsqlplusインスタンスの場所を指定する必要があります(この例では、C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus.exeです)。

これにより、コマンドライン・ツールのsqlplusが起動し、Springユーザーのパスワードを入力するよう求めるプロンプトが表示されます。 そして、スクリプトが実行され、ユーザー内に表が作成されます。

表にデータをロードするには、「 jpetstore-oracle-dataload.sql」ファイルを右クリックし、「 run in sqlplus」を再度選択します。

データベースの参照と編集

これで、Connectionタブでデータベースの構造を参照できます。それぞれの表構造の表示に加え、表内のデータの表示や編集が実行できます。

さらに、追加のデータベース・オブジェクトを作成することや、Oracle JDeveloperの機能であるデータベース設計ダイアグラムを使用することも可能です。

Oracle Databaseを使用するためのSpringサンプルの設定

Oracle JDeveloperで、WEB-INFディレクトリから「 jdbc.properties」ファイルを開き、次のように接続情報を編集します。

jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=spring
jdbc.password=spring

index.html」ページを選択し、「 Run」を右クリックします。

これにより今回は、Oracle Databaseとともにサンプル・アプリケーションが実行されます。

結論

このチュートリアルで説明したように、Oracle JDeveloperをSpringとともに動作するように設定することはとても簡単です。Oracle JDeveloperが提供するさまざまな機能は、Springベースの開発をより生産的なものにします。このチュートリアルで紹介したOracle JDeveloperの機能は、Springアプリケーションの作成をより簡単にする機能のほんの一部です。WebサービスやSOA開発と同様に、Javaクラス・ダイアグラム、デバッガ、プロファイラ、コード監査、およびエンタープライズJavaコンポーネントのフルセットをサポートする機能などをさらに確認するようにしてください。

追加リソース