Java

サーブレット仕様の認証を使わずにgetRemoteUserやisUserInRoleを使う。

JavaのWebアプリでユーザ認証を行う場合、サーブレット仕様で決められた認証機能を使うか、独自の認証機構を実装するか、いずれかであると思う。サーブレットの認証機能を使うとHttpServletRequestのisUserInRoleやgetRemoteUserが有効になるのが地味に嬉し…

SAStruts ActionのJUnit

これはSAStruts 1.0.2の話です。1.0.3以降は知らんですよ。SAStrutsはアクションクラスにpublicなフィールドを書くだけで依存クラスを勝手にInjectしてくれる。便利。しかし、アクセスレベルがpublicでは問題があるという話が浮上してきたので、アクションの…

RequestUtil?

インターセプターからHttpServletRequestにアクセスするには、useLookupAdapterを何かごにょごにょしないとダメという感じだったけど、ActionMessagesThrowsInterceptorのソースを見ると public String handleThrowable(ActionMessagesException e, MethodIn…

何でもDIすればいいってモノじゃない

またSAStrutsネタ。S2Container先生が何でもDIしてくれるからって、SessionスコープやApplicationスコープのインスタンスをむやみやたらにロジックやらサービスにインジェクトすると後悔するかも、という話。SAStrutsでセッションにデータを格納したい時は、…

ライブラリが吐くLog4jログを黙らせる

2008-07-23 - きしだのはてなrootカテゴリにNullAppenderを設定すると幸せになれるらしい。log4j.xmlに以下のように設定 <appender name="empty" class="org.apache.log4j.varia.NullAppender"> <param name="threshold" value="debug"/> </appender> <root> <level value="fatal" /> <appender-ref ref="empty" /> </root> 自分の作ったクラスのカテゴリには別のアペンダを設定

システムエラーページをケータイとパソコンで分ける

SAStruts話。ケータイとパソコンでシステムエラーページを変えたいそうだ。ケータイとPCでアクションは別なのだが、困った事にサービスクラスを共用している。このサービスクラス、内部でS2JDBCがSQLRuntimeExceptionを投げる可能性があるのだが、この例外を…

diconに書いたアプリ設定をブラウザで見る

「Seasar2でdiconにアプリ設定を書く - nullpo.printStackTrace();」の続きSAStrutsのアプリケーション設定をdiconに書いたのはいいが、サーバにデプロイしてしまうと、いちいちdiconファイルを開いて確認するのも面倒なのでブラウザ上で確認したい。dicon(…

ゆの in Java

ゆの in Javaって何ですかww? static { Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { if(e instanceof AssertionError) System.out.println("ひだまりス…

匿名クラスでカッコよく初期化

Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記なるほど、通常の初期化なら大抵コンストラクタに書けば十分なので、インスタンス初期化ブロックはどういうケースで使われるのか分からなかったのだが、匿名クラ…

COOL Deployで自動コンポーネント登録ができない件

以下SAStruts-1.0.2(Seasar2.4.25)の話。Seasar2のHOT Deployではリクエスト毎にクラスローダを作るためライフサイクルをSingletonにしたり、Singletonパターンを使っても無駄、という事がわかったのでCOOL Deployに切り替えてテストしようとした。しかしH…

Seasar2でdiconにアプリ設定を書く

「SAStrutsでアプリの設定はどう書く」の続き <component class="java.io.File" name="tmpDir"> <arg>"/tmp"</arg> </component> ognlでシステムプロパティを取り出せるので、例えばTomcatのcatalina.homeを指定出来る <component class="java.io.File" name="tmpDir"> <arg>@java.lang.System@getProperty("catalina.home")</arg> <arg>"tmp"</arg> </component> 以下と同じ Fi…

Hudson運用中

Hudsonで定時ビルド、自動デプロイの環境ができました。これでいつでも最新のコードで機能テストができます。まだ開発初期なのでJUnitテスト自動実行ツールとなっていますが…。だけど、今はまだ自動的に仕事してくれるというだけでも楽しくて良い気分ですね…

maven2でwebdav経由deployできなかった

社内リポジトリを立てて、以前作成したライブラリをdeploy:deploy-fileしてみたのだが、できない。 PUT /maven2/inhouse-utils/inhouse-utils/1.0/struts-utils-1.0.jar HTTP/1.1" 403 380 "-" "Java/1.6.0"とログに残るので、/maven2/inhouse-utils/inhouse…

Cargo

Tomcat等のWebアプリを弄れるライブラリらしい。MavenやANTからサーバを操作できるらしいよ。 http://www.srcw.net/blog/2007/06/cargo_maven2_plugin.html http://www.atmarkit.co.jp/fjava/special/maven2_02/maven2_02_3.html とりあえず上のページとWEB+…

SAStrutsでアプリの設定はどう書く?

例えばファイル出力先のディレクトリパスなど、アプリケーションの設定をどう書くべきか。propertiesファイルに書いて読み込めばいいと思ったが、そんな必要もなさそう。コンテナに登録するコンポーネントは、インターフェースを実装したクラスである必要は…

S2Chronosって何ぞ?

Seasar2のSMART Deployに対応したタスクスケジューリングライブラリらしい。前にS2Quartzというのがあったような気がしたのだが、アレがS2Chronosになったのだろうか?事情は知らん。で、SAStrutsとかTeedaみたいなWebアプリの中で動かす方法がマニュアルに…

JavaでSHA2

SHA2の16進文字列を簡単に取得できるライブラリが無いので書いた。書いたと言ってもアルゴリズムはjava.security.MessageDigest 任せですよ。 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * MD5やSHA-512等のD…

javaでsha2

javaでSHA256かSHA512が使いたくてライブラリをあさってみたのだが、javaユーザの強い味方、apache commonsのcodecで、sha2が使えるバージョン1.4が正式リリースされてない。ずーっとsha1までしか使えないバージョン1.3が最新版のままである。なにやらBASE64…

メモ S2JDBCでupdate or insert

S2JDBCには、ActiveRecordやDBICなどのupdate_or_create的なメソッドはないが、こうすればいいらしい。 int count = jdbcManager.update(employee).execute(); if (count == 0) { jdbcManager.insert(employee).execute(); } http://ml.seasar.org/archives/…

SAStrutsのセッション

http://sastruts.seasar.org/fileReference.html#context Tomcatを使っていて、ActionFormやDtoをセッションに格納するようにしている場合に、HOT deployが効かないことがあります。これは、Tomcatがセッション情報をシリアライズし、 Seasar2が関与できない…

キャストの要らないStruts Actionはどうよ

Strutsは1.2系で終了しているid:paulowniaです。今更Strutsネタも無いだろうという気がするが、あっちこっちで使われているフレームワークなので保守案件も少なくない。それにStrutsに代わる本命フレームワークが無いのも事実。というわけでStrutsアプリにCR…

IterableなReaderクラスを作ってみる

Reader に文字コード指定できない件で、標準ライブラリに無ければ commons を使えばいいじゃない、という発言を見かけたので、commons.io を覗いてみた。FileUtils クラスに FileUtils#readLines(File,String) FileUtils#lineIterator(File,String) といった…

冗長な記述と小クラスの話

Java における本質的でない記述がどのように大規模開発に役立つのか - kwatchの日記本質的でない記述というのが冗長であると言う意味ならば、規模とは無関係に役立たないと思う。スクリプト系言語でトリッキーな書き方が可能なのは、kwatch氏の言う「本質的…

32bit Intel切捨て

OS XでJava 6が利用可能に:PPCと32-bit Intelは切り捨て Java for Mac OS X 10.5 Update 1 adds support for Java SE 6 早くも初期型MacBook Proに買い替えフラグが立ってしまいました…。で、32bit切捨てってことはVM自体が64bit化されてるんですかね?そろ…

ねこび〜ん

ja.netbeans のマスコット、ねこび〜んです。ゆる〜っ!!今はこーいうきもいキャラがトレンドじゃなかったのか?

Read OnlyなIterable (List)

型宣言は汎用的にすべきか? というか,Read onlyなIterableをあらかじめ用意しとけって感じもしますね.ラッパをいちいち自分で書くのは面倒すぎ. ラッパはCollectionフレームワークに用意されていて、 List<Hoge> list = new ArrayList<Hoge>(); list = Collections.u</hoge></hoge>…

Maven

最近またMavenが流行ってるんですかね?アレは依存Jarの自動取得がものすごい便利なんだけど、ビルドツールとしてはどうなんだろう。テスト用と本番用のProfileを切り替えにえらい苦労したし、やっぱりEclipseと相性悪いのが厳しい。最近どうなってるのか知…

Eclipseが起動しない

Exit code -1とかそんなの。エラーダイアログをよく見ると、起動引数の-vmのパスが何故かjvm.dllを指していたので、Eclipseのショートカットに-vmオプションを指定してjavaw.exeに変更した。それで起動できた。Eclipseの-vmオプションのデフォルト値はどこで…

流れるようなインターフェース

S2JDBCですか、また楽しそうなアイテムが出てきました。流れるようなインターフェースと脱CoC - ひがやすを blogフレームワーク全体をがっちりサポートするIDEがないRubyやPerlではCoCはベストかもしれないが、強力なIDEとメソッド補完を備え、かつ強い型付…

Java界隈でいうSSHって何ですかね

や、おれJava屋だけどSSHと言ったら普通にsecure shellだと思う。むしろsecure shellじゃないSSHって何? 埼玉最終兵器じゃないことは確かだと思う。どうやらStruts+Spring+Hibernateらしい。知るかそんなの。