2013年6月25日火曜日

JSFでDBから取得した日付が一日前になってしまう問題について

JSFのバージョンアップ対応で、なぜかDBから取得した日付情報が一日前になってしまうという不思議な現象が発生。

仕様ですか?と聞いてみると、そんなわけないだろうという回答。
うん、そりゃあそうだ。

そういうわけで早速調査。
でも、ステップ実行して調べてみるも、正しく日付を処理しているように見える。。

なぜだろう・・と思って調べてみたら、タイムゾーンの設定による問題らしい。


対処方法は2通り。
1:コンバータで日付を設定している箇所にすべてタイムゾーンの記載を追加。
(たくさんあるととても大変。。)

なので、今回は
2:Web.xml にタイムゾーンとしてシステムのタイムゾーンを使う一筆を追加。
(こっちは、一か所修正するだけで、すべてに反映可能!)

こっちを採用。
それにしても、どうしてこのパラメータ、デフォルトでオンじゃないのでしょうね。


web.xml

<context-param>
  <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
  <param-value>true</param-value>
</context-param>

2013年6月21日金曜日

findの結果をtarでアーカイブしたい(Redhat Linux bash)


findの結果をtarでアーカイブしたいと思って、ググったら、以下ページに到達。
思わぬ注意点があることを知る。感謝。
http://fei-yen.jp/maya/wordpress/2013/01/15/find%E3%81%AE%E7%B5%90%E6%9E%9C%E3%82%92tar%E3%81%A7%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%96%E3%81%97%E3%81%9F%E3%81%84/


で、感謝しながら使ってみるも、エラー。

ちなみに、ページのオーナーさん推奨の方法がコレ。
find -name "hoge*" -print0 | tar -cvz -T - --null -f hoges.tar.gz

でも、きっと、ディストリビューションとか微妙な違いがあるのでしょうね。
調整した結果、これで動きました。
(私は圧縮とかしなくてよかったので)

find /opt/IBM/WebSphere/ \( -name "*.xml" -o -name "*prop*" \) -print0 | tar cvf wasxmlprop.tar -T - --null


ちなみに、これをやりたかった理由は、IBMさんのWebSphereの設定を保存するためです。
IBMさんのWebSphereの管理コンソールで、ちょっと間違った設定をすると、いきなりWASが動かなくなるです。

そんなとき、

find /opt/IBM/ -mmin -30
↑これで、30分以内に修正があったファイルを洗い出し、
めぼしいxmlファイルとかpropertyファイルを元に戻すと回復するんです。


勉強になりました。