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"?>
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を使うって方法も
ありですね。
どうしよっかな〜。