・grailsからwarの作成
grails war
以上 :)
{applicationName}-0.1.war って感じのファイルが出来れば成功です。
・grailsのDataSource.groovyをJNDIへ書き換える
warした場合は production を書き換えます。
production {
dataSource {
pooled = true
dbCreate = "update"
jndiName = "java:comp/env/jdbc/oracle"
}
}
urlがなくなってjndiNameに変わります。
java:comp/env/ までは固定で、 jdbc/oracle というのがJNDIの接続名になります。
・Tomcat側の設定
コンテキストにたいしてJNDIを設定します。
tomcat/conf/server.xml の中の <Host ...> の中に以下の内容を追加します。
<Context path="/hoge" docBase="hoge"
debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/oracle"
auth="Container"
type="javax.sql.DataSource"
username="user"
password="pass"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:hogedb"
/>
</Context>
ContextのpathとdocBaseにはプロジェクト名を、
ResourceのnameにJNDIの接続名を、
username,password,driverClassName,urlはDBに応じて設定して下さい。
必要なドライバを tomcat/common/lib にいれておきます。
・起動
作成した war を tomcat/webapps/ へいれ、tomcatを起動します。
エラー無くたちあがれば成功です。
Tomcat上のJNDIの状態を知りたい場合は、TomcatAdministratorを入れれば簡単に確認する事が出来ます。
・おまけ
上記の設定だとコンテキスト毎にJNDIの設定を書く必要がありますが、複数のコンテキストで共通のJNDIを使う場合は以下のように設定します。
tomcat/conf/server.xml 内の <GlobalNamingResources> の中に <Resource> を設定します。(内容は同じです)
Context内に <ResourceLink> を設定します。
<Context path="/hoge" docBase="hoge"
debug="5" reloadable="true" crossContext="true">
<ResourceLink name="jdbc/oracle"
global="jdbc/oracle"
type="javax.sql.DataSource"/>
</Context>
これでGlobalNamingResourcesに設定したResourceを設定できます。
0 件のコメント:
コメントを投稿