Java

XMLばいんでぃんぐ

デモは無事終了。ということで続き!と思ったら、もうコードがぐちゃぐちゃでどうやって作ってたのかわからなくなっちゃった(^_^;なのでまずは文字で仕様を書いて作った所、あっさりと作り変えられた〜♪しかもぐっときれいになった。あるよね、こゆこと。プ…

Axisで空のデータはタグに出力されない

Beanのプロパティに値をセットしない状態(null)でWEBサービスを呼び出すと、SOAPエンベロープにタグが出力されません。データが無い場合は空タグを出力する事が必須のシステムだと、Axisの自動生成するコードじゃ困りますね…。っていうか困ってますorzプロパ…

よきにはからってくれるXMLバインディング

そういえばAMFObjectをJavaBeansにマッピングした時はマッピング先のJavaBeansの型を見て、よきにはからってマッピングしてたなと思い出した。やり方的にはおんなじだから難しくないし。ってことで自分で作る!とりあえずJDK標準のXMLDecoderのよきにはから…

Betwixt

さくっと書いてみた。 BindingConfiguration config = new BindingConfiguration(); config.setMapIDs(false); File file = new File("Book.xml"); BeanReader reader = new BeanReader(); reader.registerBeanClass(Book.class); Book book = (Book) reader…

WSDLからJavaBeansが正しく生成されない

全ての型がOMElementになっちゃう…。自分で作ったWebServiceのWSDLはちゃんとオブジェクトになるのに、相手が公開しているWSDLだとOMElementになる。WSDLを比較して何が違うのか見てるけど今の所わからない。OMElementだと不便だからちゃんとオブジェクトに…

0.7と1.0はどっちが新しい?

http://archive.apache.org/dist/jakarta/commons/betwixt/binaries/ 1.0-alpha-1の日付が2003年なわけだが(苦笑)1.0-alpha-1が一番最初にリリースされたものっぽいですね。そのあと0.5、0.6ときて現在の最新リリースが0.7と。よしっ、0.7を触ろう!その前に…

XMLバインディング

もっと良きに計らって適当に動いてくれるのはないのか〜。とりあえずCaster, Digester, JiBXは楽な反面微妙に融通が利かず、融通を利かすには自分でバインディングの設定を書かないといけない。JAXBとZeusとJBindとQuickはRelaxerは手数が多そうだ。ただXML…

バイトコードいじったんだから次はメモリでも

いいじゃん?(ぇ)もー、こうなったら言語の壁は無くなるね。あとは使い道のみ。Memory Oriented Programing!・・・ないない(笑)

XMLのアンマーシャル

ふと思いついた事のメモ。ハイフン入りのタグがある時どうなるんだろう?Introspectorを内部的に使ってるバインディングライブラリは先頭大文字のタグ名をバインディングできない。Introspectorの仕様のせい。ってことはハイフンが入ってる場合はどうなるん…

CORBAをコリコリ書く

クライアントとリモートのクラスのインターフェースを統一してポンポン追加できるようにしてみた。インターフェースと実装が切り離されてて、クライアントはインターフェースのみで会話するから、どの実装が使われるかは定義したルールによる。かなりDIちっ…

Axis2のwsdl2javaで内部クラスを分離する

デフォルトのオプションで生成すると、データバインディングクラスが全部スタブクラスの内部クラスになっていて、 Stub.InnerClass innerClass = new Stub.InnerClass(); と書かなきゃいけなくて長くなっちゃうなーと思ったら、ちゃんと分離するオプションが…

Axis2でgzipを使う

AXIOMでやるならこれだけ。 options.setProperty(HTTPConstants.MC_GZIP_REQUEST, Boolean.TRUE); Transfer-Encodingはchunkedにする。Axis2のスタブでやるなら _operationClient.getOptions().setProperty(HTTPConstants.MC_GZIP_REQUEST, Boolean.TRUE); …

BeanUtil.deserializeで先頭大文字のプロパティはバインディングできない

とりあえず現時点で調べた限りでは無理。XMLのタグ名の先頭が大文字の場合は一発でバインディングできない。とりあえずこれを仮説として解決策を考えてみた。 素直にAxisのスタブを使う OMElementのgetLocalName()の戻り値の先頭一文字を小文字に変換して、s…

PropertyDescriptor.getName()の戻り値に四苦八苦

サーバから戻ってくるXMLのタグが<Message>のように大文字なんですよね。Java側でset/getMessage()というメソッドを作ってもXMLをオブジェクトにバインディングする時にきちんとバインドされません。BeanUtil.deserialize()の中身でPropertyDescriptor.getProperty("M</message>…

AXIOMでContent-Lengthを付ける方法

つまりはTransfer-Encoding: chunkedを無効にする方法です。AXIOMのソースのCommonsHTTPTransportSenderを見てようやく分かった! Options options = new Options(); EndpointReference endpointReference = new EndpointReference(endpoint); options.setTo…

続:Axis2と.NETの相互運用

結局まだ呼び出しがうまくいってない(T_T)Transfer-Encoding: chunked で送ってるのになぜContent-Lengthを求められてしまうのかが分からない。返ってくるHTTPステータスが400だからContent-Lengthを指定しろってことなんですけど。。。HTTPヘッダをもっと根…

Axis2と.NETの相互運用

かなり詰まってます。。。どちらも単体だと動くので何か違いがあるはずとTCPMonitorを眺め続けるのであったが今のところ違いが分からない。#WEB参照の追加で作成したクライアントでは正常にWEBサービスが呼べてて、WSDL2Javaで生成したAxis2のクライアント…

ど〜してもEJBが呼び出せない

not boundばっかりorz必ず些細な所が間違ってるに違いない。jmx-consoleで見るときちんとデプロイされてるし、Namingの所にもStateless Beanがある。デプロイするとちゃんとログも出てるし、呼び出し側が間違ってるとしか思えない!と思いつつ絶対些細な所が…

JBoss起動したよぉぉぉぉぉ!!!

当たり前の事っぽいがすっごいうれしいヽ(ω・ヽ)(ノ・ω)ノたぶんJBossのインストールオプションが良くなかった。allでインストールしてしまったんですが、一回アンインストールしてejb3でインストールしてみたら、JDK1.5.0_07で起動できました。_06のせいかどう…

JBoss4.0.4 & JDK1.5.0_06でブルースクリーン

WTPでJBossを起動しようとすると、[Server] Core system initializedあたりで100%ブルースクリーンになりました。run.batで直接実行してもだめでした。ランタイムJREを1.4.2_11にしたら無事起動できましたがなんでだろう…。とりあえずJDKをUpdate7にしてみる…

Corba & DIxAOP

インターフェースから_Stub, Helper, Holder, Operations, POAの機能を持ったバイトコード生成&インジェクション。インターフェースと実装クラスだけでWEBサービスの構築が可能!いや、そこまでするなら普通にSOAP使えばいいのでは…と思ったりなんかして。…

JarClassLoader

いまこの辺をゴリゴリ中。やったことない事は楽しい!#そして学んだこと。JarURLConnectionとURLClassLoaderで事足りるという。。。

Velocityでログ出力を止める方法

velocity.propertiesに以下の設定でログファイルが生成されなくなる runtime.log.logsystem.class = org.apache.velocity.runtime.log.NullLogSystem ログの止め方が分からなくて結局Velocityのソースを眺めたらNullLogSystemを見つけて設定を書いてみたら止…

リフレクションで配列のインスタンスを作る

String hoge = {"1"}; String foo = (String[]) hoge.getClass().newInstance(); これがエラーになるとは知らなかった。getClass()の戻り値が配列を指してるからそのままnewInstance()できるかと思ったらできないのね…。確かに配列のインスタンスを作ってい…

java.lang.ClassCastException: sun.nio.cs.ext.MS932$Decoder

Tomcat 5.5.15にJDK1.4 Compatability Packageを入れたら java.lang.ClassCastException: sun.nio.cs.ext.MS932$Decoder が出てアプリが動かなくなっていた問題が解決しました。どうやらJDKのバグだったようです。 http://bugs.sun.com/bugdatabase/view_bug…

java.lang.ClassCastException: sun.nio.cs.ext.MS932$Decoder

Tomcat 5.5.15にJDK1.4 Compatability Packageを入れたらこんなエラーが出てアプリが動かなくなった…。JDK1.5にするとエラーは出ない。エンコード関係で妙だという事は分かるけれど…Windows-31J関連かなぁ。

ふ〜む

public void setHoge(String hoge) { this.hoge = hoge; } ↓ @Scope(Scope.SESSION) public void setHoge(String hoge) { this.hoge = hoge; } ↓ public void setHoge(String hoge) { this.session.setAttribute("hoge", hoge); } sessionはインジェクション…

JBuilder 2006が気になる

Eclipseベースなので慣れている分使い勝手は良さそう。それに気になる機能がちらほら。うーん、気になる。

protectedなメソッドをpublicでオーバーライドしててエラー

カスタムタグの属性値のsetter/getterでスーパークラスのprotectedなメソッドをpublicでオーバーライドしてる時に見たことも無いエラーが発生しました。setterとgetterの対をチェックしてるみたいでgetterだけpublicでオーバーライドしてしまったためエラー…

正規表現は重要だ

作業効率に激しく貢献してくれます。正規表現が使えるテキストエディタを使っているなら、正規表現を知っている事でものすごい作業効率が上がると思っています。事実、知っていると知らないとではテキストの編集速度が桁違いです。1000行あるテキストの改行…