Mavenでテストのフェーズは完了してるので、ここをスキップしてパッケージしたwarファイルをサーバーにインストールしたい場合などには、便利なオプションがあったのでメモしておきます。
% mvn install -Dmaven.skip.test=true
% mvn package -Dmaven.skip.test=true
結構単純なフラグを指定してやるだけで、テストフォーズをとばしてくれます。便利。
http://www.mkyong.com/maven/how-to-skip-maven-unit-test/
2014年1月29日水曜日
2013年12月18日水曜日
tomcat-maven-pluginでTomcatのmanagerアプリにアクセスする際の認証情報の設定について
MavenでwarファイルをTomcatにインストールして、サーバーを再起動したりするにはtomcat-maven-pluginとTomcatのmanagerアプリの設定で可能です。そして、Tomcatのmanagerアプリにアクセスするには認証情報が必要になるのですが、これをpom.xmlファイルに書いてしまうと、Gitなどのバージョンコントロールシステムで管理するには内容が丸見えなので問題あり。そこで、どこに認証情報を書くのかというと、Mavenにはsettings.xmlとファイルがあるので、ここにサーバー情報を記述。
settings.xml
<servers>
<server>
<id></id>
<username></username>
<password></password>
</server>
</servers>
このsettings.xmlのサーバーIDはpom.xmlのtomcat-maven-pluginのサーバー情報と紐付いてる。
2013年12月17日火曜日
Tomcatのmanagerアプリが404でアクセスできない場合
Tomcatの管理ページにアクセスしたら404が出たので、あれっ、tomcat-users.xmlを設定し忘れたかな?と思ったらそういうわけでもない。。。
いろいろ調べていたら、どうやらUbuntuはapt-get install tomcat6-adminでインストールしてあげないといけないらしい。知らんがな、、、
https://help.ubuntu.com/lts/serverguide/tomcat.html
いろいろ調べていたら、どうやらUbuntuはapt-get install tomcat6-adminでインストールしてあげないといけないらしい。知らんがな、、、
https://help.ubuntu.com/lts/serverguide/tomcat.html
org.hibernate.ObjectNotFoundExceptionがエンティティの@OneToOneの関連性で出てしまう場合の対処方法
Hibernateで1対1の関係にあるエンティティ(@OneToOne)がorg.hibernate.ObjectNotFoundException出てしまう場合、つまりユニークキーに紐付けられたレコードが無いよって場合の対処方法。またもやHibernateのブラックボックス、、、
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="A_ID")
@NotFound(action=NotFoundAction.IGNORE)
@NotFoundでIGNOREを使ってやると例外無くnullを設定してくれる。
2013年12月13日金曜日
Mavenのmaven-war-pluginのfilterとprofileで変数を設定してやれば、環境毎にwarパッケージを作成できる。
Mavenのmaven-war-pluginとprofileで変数を設定してやれば、環境毎にwarパッケージを作成できます。物凄い便利。
ポイントは、
http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html
http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-profiles-and-resource-filtering
http://erhan.me/2011/10/20/property-substitution-for-web-xml-with-using-profile-properties-maven-pom-xml/
ポイントは、
- maven-war-pluginのwebResourceで環境毎に設定したい設定ファイルを列挙
- webResourceで列挙したファイルにfilterを使ってやる
- profileで環境毎のproperties変数を定義してやる
実行する時は、mvn package -P dev, mvn package -P productionみたいな感じでwarを作成できる。
http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html
http://www.manydesigns.com/en/portofino/portofino3/tutorials/using-maven-profiles-and-resource-filtering
http://erhan.me/2011/10/20/property-substitution-for-web-xml-with-using-profile-properties-maven-pom-xml/
MavenでJavascriptやStylesheetのファイルはYUI compressor Maven MOJOを使う
MavenでJavascriptやStylesheetのファイルはYUI compressor Maven MOJOを使うと便利です。JSやCSSファイルをデフォルトで-minという名前で圧縮してくれるし、aggregationタグでは圧縮したファイルを一括してくれる。
http://alchim.sourceforge.net/yuicompressor-maven-plugin/index.html
ハマったところと言えば、Mavenのライフサイクルのフェーズがprepare-packageじゃないと思った順序でpom.xmlの内容が動作してくれなかった点。
http://alchim.sourceforge.net/yuicompressor-maven-plugin/index.html
ハマったところと言えば、Mavenのライフサイクルのフェーズがprepare-packageじゃないと思った順序でpom.xmlの内容が動作してくれなかった点。
ラベル:
CSS,
JavaScript,
Maven,
YUI
2013年12月12日木曜日
HibernateのMySQL/JDBCコネクションが途切れる問題
HibernateでMySQLへの接続が1日経つと例外が発生したので、なんでかなとちょっと調べてみました。どうやらこれはMySQLのJDBCの仕様のようで、8時間経つとコネクションが途切れるようです。
http://stackoverflow.com/questions/270800/why-does-hibernate-jdbc-mysql-drop-connections-after-a-day-or-so
ただ、JDBC側でautoReconnect=trueとして自動接続をするような対処方法を取ると、コネクションを自動接続してくれるものの、例外が発生したクエリをもう1度実行してくれる訳では無いので、面倒くさい副作用が発生します。
ということで、Hibernate側でselect 1などのテストクエリを出すような対処方法を取る解決方法があるようです。hibernate.cfg.xmlでのデフォルト設定では出てこないようなプロパティなので、どこを見ればいいのか戸惑いますが、以下の通り設定できるようです。
http://stackoverflow.com/questions/7766023/hibernate-failed-to-execute-query-afte-1-day
http://my.safaribooksonline.com/book/programming/java/0321268199/performance/ch10lev1sec4
http://stackoverflow.com/questions/270800/why-does-hibernate-jdbc-mysql-drop-connections-after-a-day-or-so
ただ、JDBC側でautoReconnect=trueとして自動接続をするような対処方法を取ると、コネクションを自動接続してくれるものの、例外が発生したクエリをもう1度実行してくれる訳では無いので、面倒くさい副作用が発生します。
ということで、Hibernate側でselect 1などのテストクエリを出すような対処方法を取る解決方法があるようです。hibernate.cfg.xmlでのデフォルト設定では出てこないようなプロパティなので、どこを見ればいいのか戸惑いますが、以下の通り設定できるようです。
<!--connection pool-->
<property name="hibernate.dbcp.maxActive">10</property>
<property name="hibernate.dbcp.whenExhaustedAction">1</property>
<property name="hibernate.dbcp.maxWait">20000</property>
<property name="hibernate.dbcp.maxIdle">10</property>
<!-- prepared statement cache-->
<property name="hibernate.dbcp.ps.maxActive">10</property>
<property name="hibernate.dbcp.ps.whenExhaustedAction">1</property>
<property name="hibernate.dbcp.ps.maxWait">20000</property>
<property name="hibernate.dbcp.ps.maxIdle">10</property>
<!-- optional query to validate pooled connections:-->
<property name="hibernate.dbcp.validationQuery">select 1</property>
<property name="hibernate.dbcp.testOnBorrow">true</property>
<property name="hibernate.dbcp.testOnReturn">true</property>
http://stackoverflow.com/questions/7766023/hibernate-failed-to-execute-query-afte-1-day
http://my.safaribooksonline.com/book/programming/java/0321268199/performance/ch10lev1sec4
登録:
投稿 (Atom)