Java

Genericで迷宮へ迷い込む

何かを受け取って何かの処理をして何かを出力するってインターフェースとその実装を作っていたらTと?だらけになってわけがわからなくなった。実際に動くコードを見ても抽象的すぎて全く何やってるか分からない。疎結合とかそういうんじゃなくて隠蔽してるだ…

Maven2のビルドごとにローカルリポジトリを変える方法

全てのビルドのローカルリポジトリを変更するならsettings.xmlに <localRepository>/.m2/repository</localRepository> のように指定すれば良いですが、ビルド単位に変更したい場合はビルドの実行時引数に -Dmaven.repo.local=/.m2-ut/repository のように指定すればできました。Hudsonはプロジ…

既知の実装クラスの一覧を取得するには

地道な事をやるしか無いのかな?JavaDocのソース見るのとネットを探してみよう。

テンプレートエンジンへ渡すデータの楽な定義の仕方はないもんか

簡単な方法は無いもんかと模索中。ぱっと思いついたのを列挙してみる。 put(key, value)のコードをハードコーディング key = valueのプロパティファイル形式で指定 <key>value</key>のXML形式で指定 OGNLで指定 JSONテキスト形式 オブジェクトを渡すのではなく、あくま…

VelocityとFreeMakerのテンプレートの読み込み方

相対パスで指定するからクラスパスから良きにはからって読んでくれ!が私の要求(笑)Velocityはいつぞや調べたので覚えている。velocity.propertiesにこう書けばOK。 resource.loader=class class.resource.loader.class=org.apache.velocity.runtime.resourc…

S2Container.getComponent時のキャストを無くす

しばらく触ってないとすっかり忘れますね(^_^; Test test = (Test) container.getComponent(Test.class); キャストっているんだっけ?と思って過去の成果物を見てみると、みんなAutoRegisterでコンポーネント登録してたからgetComponentなんて書いてない。た…

Axis1.4でベーシック認証

Axis1.4を使ったWebServiceの呼び出しでベーシック認証を通過する方法です。org.apache.axis.client.StubクラスのJavaDocに方法が書いてありました。Stubクラスの_setPropertyメソッドを使ってユーザ名、パスワードを設定せよとのこと。WSDL2Javaを使って生…

maven-eclipse-pluginでjst.javaが1.4になる・・・

なぜだ・・・いったいどこを見て1.4って書いてるんだろう?普通にEclipseのプロジェクトを作った時は5.0になってたので。maven-compiler-pluginの方には1.5と定義してあるけどこれを参照してくれるわけではないようだ。jst.webは2.4になっているから良いとし…

とても正しく見えるバグ

すごく面白いバグに出会いました!以下のロジックは「messageが空でない場合messageをログに出力する」というロジックですが、必ずログが出力されます。ぱっと見ただけでこのバグに気づくでしょうか? if (!StringUtils.isEmpty(message));{ log.error(messa…

Compass

OPEN SYMPHONYからリリースされているCompassにLucene用のJdbcDirectoryクラスがあった。DbDirectoryなる実装はいくつか見つけたのだけれど、果たしてインデックスをDBに格納するのが有効なのかどうか。インデックスの情報ソースがファイル以外の場合はデフ…

SocketAppender便利だなぁ

Log4J 1.3で追加されたプロパティApplicationを見て動的にlog4j.propertiesを読み替えてくれるか、出力ディレクトリを分けられたら最高。そこで登場するのがPropertyFilterだったりJoranConfiguratorだったりするのか!?1.3で追加されたJoranConfiguratorを使…

マルチプロセスでLog4J

同じファイルに書き込むとファイルが壊れる現象に遭遇しています。多重で起動したプログラムが同じlog4j.propertiesを参照しているので、同じファイルにログが書き込まれます。普段は時系列で多重のプログラムが同じログを出力していますが、たまに時系列が…

Axisの送受信しているXMLをログに出力する

log4j.propertiesに下記を定義するだけ log4j.category.org.apache.axis.transport.http.HTTPSender=DEBUG, カテゴリ名 TCPモニタを使いたいがためにAxisの生成するスタブのAddressを書き換えたり、hostsを書き換えなくても、上記設定で楽にロギングができま…

OpenJDK

Subversionから拾うと時間かかる。compiler7-b02・・・えっ。そういやクラス数が多いとコンパイルに時間かかるからもっと早くならないかな。マルチでコンパイルしてくれるとか。普段は差分コンパイルだから良いけど、一度でもフルビルドされるとしばら〜〜〜…

CORBA.UNKNOWN

minor code 202が役に立たないorzぜんっぜんエラーの内容が分からない。なぜここまで分からないように作ってあるんだ(T_T)

ぽかーんと解決

サーバ側に実装が無いなんて言ってる時点で間違いに気づくべきだった!!パラメータに「out」って指定してるじゃないの…。というわけでサーバ側の実装に戻り値を設定するコードを埋め込んだらテストが全部通りました〜。ん〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜…

typedef octetの使い方が違う?

これほど単純なものの呼び出しに失敗するという事は、根本的に何か間違っているという事だ。解決へ一歩前進〜。 module Challenge { interface Test { const long ID_LEN= 48; typedef octet ID[ID_LEN]; long getId(out ID id); }; };

悩みまくり

org.omg.CORBA.UNKNOWN: vmcid: SUN minor code: 202 completed: Maybeこのエラーでつまづきまくりです。inのbyteはOKで、inoutのbyte(Holder)は通信エラーになる・・・。inの時と同じデータを設定しているのになぜだ・・・原因究明が難しい。とりあえず海外の情報…

Axisでmultirefを無効にする方法

多重参照でエンコーディングされると困る場合に、多重参照での送受信を不可に設定したいのだが、WSDDの中のglobalConfiguration要素でsendMultiRefsをfalseに設定してもWSDLに変化無し。多重参照のEnvelopeを送ってもちゃんと返ってきてしまうし、生成された…

CORBA NamingService 取得方法

某アプリケーションサーバでのNamingServiceの取得方法ネーミングサービスのあるサーバ内だと動作するが、他のマシンからだとネーミングサービスが見つからない場合、hostsにサーバのIPとホスト名を設定してみると動く。ORB.init()の引数はこんな感じ ORBIni…

Axisの自動生成WSDLにminOccurs, maxOccursを付ける方法は?

不明。調査中。Java2WSDLがあるので手書きでも大丈夫だけど…めんどくさいし、インターフェースに項目を追加したら追記するの忘れそう。アノテーションで指定しておいてWSDLを自動生成する事はできるけど、そんな事すでに誰かやってそうだからとりあえず調べ…

log4jのログを止める方法

完全にログを止めたい場合は今までNullAppenderを指定していたんですが、ログレベルに「OFF」って書けばよかったんですね。。。。。今日初めて知りました。ログ止めたんだからファイルも作るなという時はNullAppenderしかないのかなぁ。OFFって書いてもFileA…

同じ要素名で違う名前空間にマッピングされているスタブを作成する方法

Axis1.4の話です。WSDL2Javaの引数に-pを指定して、全てのオブジェクトのパッケージ名を指定していたとします(実際は全ての名前空間を指定したパッケージで上書きするという事)。そうすると同じ要素名で違う名前空間が指定されているオブジェクトは作成でき…

DbUtilsのマッピングデータ型

OracleのNUMBER型は、Numberクラスなのはまだ良いとして、TIMESTAMPが、oracle.sql.TIMESTAMP型になるのはどうなのよ・・・。とりあえず使う分には問題ないけど、なんか気持ち悪い〜。DbUtilsはResultSetから値を取り出す時に必ずgetObject()だからいけないんで…

TomcatのJNDIは外部からアクセスできなくて困った時

Tomcatに設定されているデータソースをJavaアプリケーション(具体的にはJUnit)から参照したかったのですが、デフォルトではできないという事で、JNDIUnitTestHelperというのを発見しました。http://www.junit.org/news/extension/index.htm#JNDIJNDIUnitTest…

タグ名が大文字で始まるXMLのバインディング

Betwixtで調べ中…けっこう良きにはからってバインディングしてくれるのだが、タグ名の先頭が大文字だとバインディングしてくれない。これを一気に解消するために名前←→バインディングルールの紐付けをやっている所を見ているのだけど、根が結構深くてどこに…

DigesterとBetwixt

深い関係にあるのね。バインディング時のルールは後から追加できるような感じがするから、よきにはからってバインディングルールを追加してみたいと思います。今日の所は両方のソースをながめただけ。次に時間ができた時にルール作りをしてみたいと思います…

よきにはからってバインディング完成!

ふぅ〜ひさびさに脳みそに汗かいたね!(笑)とりあえず生成されたオブジェクトをAxisで投げた時に送信されるSOAPエンベロープが送られてきたテストデータと100%一致(ネームスペース名は除く)したのでこのツールは完璧にXML→オブジェクトのバインディングがで…

空タグの扱いに困る

オブジェクトをXMLに変換する際、下記4パターンの定義がシステムによって違う事で困ってます。 null→空タグ null→タグ無 空文字列→空タグ 空文字列→タグ無し ようは、からっぽの定義なんですよね。プログラム的に見ればどちらも「空っぽ」として扱えばいいと…

オブジェクト配列の要素の型を知る

いやー、家に帰ってきたらぱっと分かっちゃった。なんでメソッドリストの中でコレに気づかなかったんだろう?って感じ。Class.getComponentType()で取れるのね。オブジェクト配列のインスタンスを作るならArray.newInstance(Class,length)で。んー、今日はす…