mshimuraの日記

|

2005-01-10s2Remoting対応

本日は誕生日ですので、それに合わせて(関係ない?)koichikさんの

作られた、S2RemotingInterfaceにS2HessianのInterceptorを合わせ

ました。

新たに作ったのは、下記Connerctorのみです。

public class HessianConnector extends URLBasedConnector {


	private HessianProxyFactory factory = new HessianProxyFactory();
	
	private HashMap proxy = new HashMap();
    protected Object invoke(URL targetURL, Method method, Object[] args)
            throws Throwable {
        Class clazz = method.getDeclaringClass();
		if (proxy.get(clazz) == null) {
		    Object p = factory.create(clazz, targetURL.toString());
			proxy.put(clazz, p);
		}
		return method.invoke(proxy.get(clazz), args);
    }

}

大変楽に作成出来、また他の実装との切り替えも自由に行えます。

KOICHIKさん、よしなかさん コメントをお願い致します。


早速 KOICHIKさんにRefactoringしていただきました。

http://d.hatena.ne.jp/koichik/20050110#c

リファクタリングは頭では判っているつもりでも、実戦をつまないと、なかなか出来ませんね。有難う御座いました。

koichikkoichik2005/01/10 17:57誕生日おめでとうございますです~♪

2004-12-08

S2HessianDotNet

Version 0.2を公開しました。

下記です。

http://seasar.satin.jp/wiki/index.php?Sandbox%2FS2HessianDotNet

変更点は

  • ArrayList等にObjectを入れて返された場合、c#のObjectに変換されないバグを修正
  • Doubleへの変換によしなかさんのAdviseでbitconveterを使用
  • 送る引数内のObjectで同一のObjectが複数参照されていた場合同一のObjectを指す機能を実装(もともとあったのですが、V0.1では未実装でした)
  • C#クラスJAVAクラスの対応を指定する方法の一つを変更
 dnp.setClassConv(typeof(nethessiantest.MyObject1),"org.seasar.s2hessian.example.MyObject");の様に指定

2004-12-07

S2HessianDotNet

ArrayList に MyObjectを入れると、戻って来た時に上手く

Objectが作れないのが判りました。

型の逆変換が上手く適用出来なかった。

とりあえず対応は出来たが。

System.Type#GetType()がすべてのAsseblyを探してくれると

いいのだが。

仕方が無いので、Hashtableを追加。

2004-12-05

S2HessianDotNet

やっとα版だが公開しました。

まだ一部機能は未実装ですが、取りあえず動く筈です。

なお最初に呼ぶ時に時間が掛かると思ったら、mscorlib.resources.dll

のLOADに時間が掛かる見たいです。

立ち上げ時に下記の様に一回 Proxyを設定すると良い見たいです。

DotNetProxy dnp= new DotNetProxy("");

呼び方は、とりあえず下記の形式で、可変長 parameter Callを使っています。

(return type) dnp.invoke("コンポーネントの名前","メソッド",typeof(return type),メソッドの引数)

c#は、Doubleの内部 8 Byte形式を取り出すFunctionが無かったので、

MemoryにSerializeしたものを強引に読み書きして対応しました。

2004-12-01

S2Hessian

よしなかさんの提案の件

よしなかさんの提案通り Burlapもいれて Version 0.3を公開しました。

コメントをお願いします。

今度は .NET版 Client(一応出来ているのですが、見直して)をCODEを

整理して、公開を考えます。(.NETですが関連があるので、Seasar Projectで良いですかね)

この件についてもコメントをお願いします。

なおInterceptorのインターフェースの件は、これは URLの

指定をDiconで行い、HessianのProxyを呼び出しているだけ

なので、Remotingとは関係ないかもしれませんね。

呼び出しは下記のようになり、一切 Interceptorは意識しません。

(Interceptorはそういうものですよね)

public class TestAop {

    public static void main(String[] args) {
        
		S2Container container  = S2ContainerFactory.create("app.dicon");
		
		SeasarTest seasarTest = (SeasarTest)container.getComponent("testcomp");
	    /* Test1 */
	    int ires=seasarTest.intPlus(30,50);
	    System.out.println("Test1 intPlus result: " +ires);
    }
}
package org.seasar.s2hessian;

import org.aopalliance.intercept.MethodInvocation;
import org.seasar.framework.aop.interceptors.AbstractInterceptor;

import com.caucho.hessian.client.HessianProxyFactory;

public class S2HessianInterceptor extends AbstractInterceptor {
	
	private HessianProxyFactory factory = new HessianProxyFactory();
	
	private Object proxy;
	
	private String serviceUrl;
	
	public Object invoke(MethodInvocation invocation) throws Throwable {
		if (proxy == null) {
			proxy = factory.create(super.getTargetClass(invocation), getServiceUrl());
		}
		return invocation.getMethod().invoke(proxy, invocation.getArguments());
	}
	
	public void setServiceUrl(String serviceUrl) {
		this.serviceUrl = serviceUrl;
	}

	public String getServiceUrl() {
		return serviceUrl;
	}
	
}


"http://www.seasar.org/dtd/components.dtd">
<components>
	<component name="testcomp" class="org.seasar.s2hessian.example.SeasarTest">
		<aspect>
			<component class="org.seasar.s2hessian.S2HessianInterceptor">
				<property name="serviceUrl">"http://localhost:8080/s2hessian/s2h/test"</property>
			</component>
		</aspect>
	</component>
</components>


cfc71cd@dmoz.orgcfc71cd@dmoz.org2006/07/30 15:00<a href='http://www.yahoo.com'></a> http://www.ringtones-dir.com/download/ <a href='http://www.ringtones-dir.com'>download ringtones</a>. <a href="http://www.ringtones-dir.com ">nokia ringtones</a>: Best free samsung ringtones, Cingular ringtones and more, Ringtones for free. [url]http://www.ringtones-dir.com/free/[/url] [link=http://www.ringtones-dir.com]ring tones[/link] From site .

pgp8vx5@hotmail.compgp8vx5@hotmail.com2006/07/30 15:00http://www.ringtones-dir.com/get/ ringtones site. [URL=http://www.ringtones-dir.com]ringtones download[/URL]: Best free samsung ringtones, Cingular ringtones and more, Ringtones for free. [url=http://www.ringtones-dir.com]samsung ringtones[/url] From website .

pbdaluz@google.compbdaluz@google.com2006/07/30 15:00http://www.ringtones-dir.com/get/ ringtones site. Best free samsung ringtones, Cingular ringtones and more, Ringtones for free. From website .

|