论坛首页 Java企业应用论坛

Hessian,rcp,有状态,模拟会话,ThreadLocal,AOP

浏览 14470 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-24  
为什么需要stateful hessian?RPC要的就是stateless,难道hessian客户端连自己的状态都管理不了吗?不会瘦到这种程度吧!
0 请登录后投票
   发表时间:2007-05-24  
大部分没必要,有时有必要。
其实在我的帖子里面,倒没有一定是statefull,只是记录信息到ThreadLocal(即Current类中)。也就是我最想解决的是能够支持在Bo里面通过ThreadLocal的机制知道当前的请求者,这有可能有好处(有时候这种好处可能不小,比如控制安全,判断权限,记录访问日志等等)
0 请登录后投票
   发表时间:2007-05-24  
唉,咋就不理解偶的意思呢?不多说了,看附件的代码,附件没有考虑多线程问题,你用filter取代掉BasicServiceImpl里面service这一块代码,把取得的用户标识放到ThreadLocal就可以了。5行代码就可以搞定的事情,还弄这么麻烦....
0 请登录后投票
   发表时间:2007-05-24  
good!

你的代码给了另外一个不错的思路了,关键是你提供的下面这个代码,我可以进行扩展,动态塞入一些附带想要传给服务器的数据,然后做Filter从Http Header取出来放到ThreadLocal
(我还是免不了要N些封装类,使这些代码对编程透明,以及支持Spring配置。。。)

考虑一下,是否可以扩展Hessian使能够读取服务器传过来的HttpHeader数据,从而把session的cookie读出来? 如果可以的话,那HttpSession就可以使用了!

补充:很高兴看到readonly的代码!

public class IdentityHessianProxyFactory extends HessianProxyFactory {
    public static final String IDENTITY_KEY = "_hessian_client_";

    private String clientId;

    public IdentityHessianProxyFactory(String clientId) {
        super();
        this.clientId = clientId;
    }

    protected URLConnection openConnection(URL url) throws IOException {
        URLConnection conn = super.openConnection(url);
        conn.setRequestProperty(IDENTITY_KEY, clientId);
        return conn;
    }
}

0 请登录后投票
   发表时间:2007-06-13  
Java 6.0HttpUrlConnection已经支持Cookie了

	public static void main(String[] args) {
		CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL));
		HessianProxyFactory factory = new HessianProxyFactory();
		try {
			TestService testService = (TestService) factory.create(TestService.class,
			        "http://127.0.0.1:8080/hessian/remoting/TestService");
			System.out.println(testService.getSessionId("您好."));
			System.out.println(testService.getSessionId("您好."));

			testService = (TestService) factory.create(TestService.class,
			        "http://127.0.0.1:8080/hessian/remoting/TestService");
			System.out.println(testService.getSessionId("您好."));
			System.out.println(testService.getSessionId("您好."));
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
0 请登录后投票
   发表时间:2007-08-07  
gwbasic 写道
Java 6.0HttpUrlConnection已经支持Cookie了

哦, 6.0 已经归入官方类库了.

我原来是把 JDK 源码中 plugin 部分的 MemoryCookieHandler rip 过来用的, 附件为代码, 6.0 以前的 JVM 还可以用.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics