とあるGrails1.1のプロジェクトでwarしてTomcatにのっけたら動かないとの事で、、、その時点での1.1.1のSNAPSHOTでやってみたら動いたという情報を元に原因を探してみる事に
結論からいくと、saxonというXSLTプロセッサのライブラリがあると起動に失敗するっぽい
起動時に applicationContext.xml の定義を読む込み所で失敗しているので、ここで使うxmlのparserがsaxonのライブラリと衝突を起こしているっぽい感じ
過去の 1.0.3 とか、1.1.1-SNAPSHOTで動く所を見るとソース上の凡ミスっぽい感じもするけど・・・
(最新の1.1.1-SNAPSHOTにアップデートしたら今度はrun-appも出来なくなった、、、本当に近日リリースされるのだろうか |-`;) )
2009.4.28 追記
最新版はSubVersionではなく、Gitで管理されているもよう、SVNのリポジトリは信頼しちゃダメ!
多分コレ
特に理由がなければ、こちらの方法をを使った方が使いやすいし良いと思います :)

カスタム検索
2009年4月27日月曜日
2009年3月30日月曜日
Grails 1.1 warしてみた
Grails1.1でwarしたものを乗せてみた
tomcat 5.5.23 > ×
tomcat 5.5.25 > ×
GlassFish 2.1 > ○
lib関係かな・・・とりあえずメモ、判明したらまた続報入れます
[追記]
tomcat 6.0.18 > ○
6系も安定板出てしばらく立つしこれを機に6へ移行した方が良さそうですね。
メモ
5.5.x > 6.x migration
http://tomcat.apache.org/migration.html
tomcat 5.5.23 > ×
tomcat 5.5.25 > ×
GlassFish 2.1 > ○
lib関係かな・・・とりあえずメモ、判明したらまた続報入れます
[追記]
tomcat 6.0.18 > ○
6系も安定板出てしばらく立つしこれを機に6へ移行した方が良さそうですね。
メモ
5.5.x > 6.x migration
http://tomcat.apache.org/migration.html
2008年2月6日水曜日
TomcatでJNDI in Grails
grailsから作成したwarをtomcat上でJNDIを使って動かすというのをやったので覚え書き。
・grailsからwarの作成
grails war
以上 :)
{applicationName}-0.1.war って感じのファイルが出来れば成功です。
・grailsのDataSource.groovyをJNDIへ書き換える
warした場合は production を書き換えます。
urlがなくなってjndiNameに変わります。
java:comp/env/ までは固定で、 jdbc/oracle というのがJNDIの接続名になります。
・Tomcat側の設定
コンテキストにたいしてJNDIを設定します。
tomcat/conf/server.xml の中の <Host ...> の中に以下の内容を追加します。
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> を設定します。
これでGlobalNamingResourcesに設定したResourceを設定できます。
・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を設定できます。
登録:
投稿 (Atom)