JRuby on Glassfish - ユーザ・ガイド このドキュメントは、 JRuby および GlassFish に関する一般的な情報を記録することを目的として作成されています。
セットアップ JRuby および GlassFish のセットアップに関する詳細は、 Getting Starting Guide を参照して下さい。 JRuby のソースコードをトランクからチェックアウトしたい場合は、以下のコマンドを実行します: <pre> svn checkout svn://svn.codehaus.org/jruby/trunk/jruby cd jruby ant jruby jruby-complete test </pre> 続いて、チェックアウト先の jruby ディレクトリを環境変数 JRUBY_HOME として設定します。あわせて環境変数 PATH に $JRUBY_HOME/bin を追加しておきましょう。JRuby のコードが無事インストールできたら、作業に必要な gem をインストールしていきます。 <pre> To install Rails 2.x : gem install rails --no-rdoc --no-ri --include-dependencies<br> In case you would like to work with Rails 1.2.6 then ensure that you have provided the -v option : gem install rails -v=1.2.6 --no-rdoc --no-ri --include-dependencies </pre> データベース接続プール JRuby on Rails アプリケーションにおいて、 GlassFish のデータベース接続プーリングをどのように利用するかのサンプルをお見せします。Rails では config/database.yml というファイルによりデータベースに関する設定を行います。以下、実際に例を用いてその手順をご説明しましょう: <pre> production: adapter: mysql database: jndi_rails_production username: mysqluser password: mysqlpwd host: localhost </pre> "production" モードの Rails アプリケーションは、同じマシン上にインストールされている MySQL データベースに接続するようになっています。GlassFish のデータベース接続プールを有効にするには、以下の 3 つの手順を踏む必要があります:
- MySQL データベースを指し示す接続プールを定義する
- 接続プールに関連付けられた jndj 名を定義する
- 接続プールを使用するよう、アプリケーションの database.yml を変更
この手順を実行するには、まず以下のコマンドを発行します: <pre> asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource --restype javax.sql.DataSource --property User=mysqluser:Password=mysqlpwd:URL=jdbc\:mysql\://localhost/jndi_rails_production jdbc/jndi_rails_pool<br> asadmin create-jdbc-resource --connectionpoolid jdbc/jndi_rails_pool jdbc/jndi_rails<br> </pre> 最後にアプリケーションの database.yml を編集し、変更を反映してください: <pre> production: adapter: jdbc jndi: jdbc/jndi_rails driver: com.mysql.jdbc.Driver </pre> Rails on GlassFish でJPA を使う Rails はデフォルトでは Object Relation Mapping (ORM) に ActiveRecord というフレームワークを使用します。ここで説明する JAP は、 Java EE のORM 技術です。 Rails における Model クラスとデータベースのマイグレーションは、 Java における Entity クラスと Persistence Provider (持続プロバイダ)に置き換えて考えることができるでしょう。 基本的に Java 側ではEntity クラスのみを作成し、 Rails 側では Entity クラスに対して CRUD 操作を行う Model を作成します。それ以外の部分については JPA プロバイダが担当します。 ここでは、GlassFish 上に配備した Rails アプリケーションから JPA ( Entity Bean) を使って MySQL データベースに接続する方法を示します: GlassFish v2 のセットアップ
- NetBeans 6.1 Beta を「 Web および Java EE 」の構成でインストールします
- 手順に従って JRuby を GlassFish v2 上にインストールしてください
- JRuby の jar ファイルを GlassFish の共有ライブラリとしてセットアップします
<pre> cd $GLASSFISH_HOME/jruby $ant -f install.xml setup-shared-env </pre>
- 先ほどインストールした NetBaans から、以下のようにMySQL のドライバをコピーします:
<pre> cp "C:\Program Files\NetBeans 6.1 Beta\ide9\modules\ext\mysql-connector-java-5.1.5-bin.jar" c:/tools/glassfish/lib </pre> もしくは、ここ からダウンロードして $GLASSFISH_HOME/lib にコピーして下さい
- MySQL サーバを起動し、テスト用のデータベースを作成します(まだ作成されていない場合)
<pre> mysqladmin -u root create test; </pre> MySQL を利用して Java Entity Beans を作成 はじめにエンティティ・クラスと Persistence-unit (持続ユニット)を作成します。
-
- Post* という名前で Java のアプリケーションを新規作成してください。 Main クラスにする必要はありません。
- 新規 Persistence Unit を作成します。データベース接続 (database connection) に jdbc:mysql://localhost:3306/test デフォルト・スキーマの root を、ユニット名 (unit name)は PostPU を指定して「完了」をクリックしてください。完了をクリックすると、 src/META-INF/persistence.xml というファイルが作成されます。
- Posts という名前の新規エンティティ・クラスを作成します。パッケージ名は entity としておきましょう。
- title および body へのアクセサを追加して下さい。完成したクラスは次のようになります:
<pre> package entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; /** *
- @author vivek
*/ @Entity public class Posts implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String title; private String body;
public void setId(Long id)
Unknown macro: { this.id = id; }
@Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId()
Unknown macro: { return id; }
@Override public int hashCode()
Unknown macro: { int hash = 0; hash += (id != null ? id.hashCode() }
@Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Posts))
Unknown macro: { return false; }
Posts other = (Posts) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id)))
return true; } @Override public String toString()
Unknown macro: { return "entity.Post[id=" + id + "|id="id"]"; }
public String getTitle()
Unknown macro: { return title; }
public void setTitle(String title)
Unknown macro: { this.title = title; }
public String getBody()
Unknown macro: { return body; }
public void setBody(String body)
Unknown macro: { this.body = body; }
} </pre>
- Build -> Clean and Build Main Project を選択するか、 Shift+F11 を押下して Post.jar を生成しましょう。プロジェクト内に dist/Post.jar が作成されます。
- $GLASSFISH_HOME/lib ディレクトリ内に Post.jar をコピーして下さい($GLASSFISH_HOME とは、 GlassFish がインストールされているディレクトリのことです)。
<pre> cp dist/Post.jar c:/tools/glassfish/lib </pre> //TODO 注意 <br> GlassFish から MySQL データベースに接続するには、 MySQL JConnector をダウンロードし、 GlassFish の lib ディレクトリにコピーしておく必要があります。
日本語翻訳: Kana 英文 (翻訳したバージョン: 11)
|