カスタム検索
ラベル Tomcat の投稿を表示しています。 すべての投稿を表示
ラベル Tomcat の投稿を表示しています。 すべての投稿を表示

2009年4月27日月曜日

Grails 1.1 でやってはいけない事(warするとエラーな件について)

とある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年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

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 を書き換えます。

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を設定できます。