JavaRPC

せっかく書くぞって決めたのに、またこんなにあいてしまった・・・。
ま、いいか。

いろいろな方が最近Laszoでのサーバ通信を書いてくれているので、それを見ながらサンプル作ってました。

S2Axisをつかって通信は前やって、Laszloの日本語対応が貧弱だったので、
今日はJavaRPCを使ってみた。

結論から言うとこっちは問題なし。

setCharacterEncodingをUTF-8で指定すれば、問題なく出来る。
でも、どんなものを送っているのか気になったので、見てみました。


queryString:__lzbc__=1117872461671
param:cache=false
param:url=java://laszlo.nyumon.rpc.Echo
param:fpv=7.19
param:lzr=swf6
param:sendheaders=false
param:classname=laszlo.nyumon.rpc.Echo
param:objectreturntype=pojo
param:ccache=false
param:oname=Echo
param:methodname=laszlo.nyumon.rpc.Echo.echo
param:op=invoke
param:reqtype=POST
param:__lzbc__=1117872461671
param:lzpostbody=<?xml version="1.0"?>

laszlo.nyumon.rpc.Echo.echo


はろー



param:scope=session
param:lzt=data

うーん、lzpostbodyで一括しておくってるのね。
こいつを丸ごとエンコーディングしてるんだ・・・。
大丈夫なんだろうけどやだなー。
せっかxmlの指定までしてるんだったらUTF-8とかつけてほしいところです。
で、それで内部で解析してくれたら丸く収まるんだけどなー。
ま、いいや。出来たんだから。


で、肝心のLZXファイルとJavaは下記のとおりです。
Echo.lzx


<?xml version="1.0" encoding="Shift_JIS"?>



^laszlo.nyumon.rpc.Echo


Debug.write("----------");
Debug.write("onerror:", err)


Debug.write("----------");
Debug.write(this.proxy);




上記は、けん坊の雑記帳を参考にさせていただきました。ありがとうございます。

Echo.java


package laszlo.nyumon.rpc;
public class Echo {
public Echo(){
}
public String echo(String str){
return "返却:" + str;
}
}

つぎの問題は、サーバ側でDIをしたいって事です。
どうも、Laszloはコンストラクタを生成しセッションに結び付けているようです。
で、こいつをLZServlet以下でいろいろやっているようなのです。

そんで、関係ありそうな

  • LZServlet
  • JavaDataSource

などなどを拡張してうまくDIを使えないかを考えなきゃいけないのかな。

そんなことしなくても、一箇所で受け取ってそこからDIを使うって方法も
ありですね。

どうしよっかな〜。