论坛首页 Java企业应用论坛

开源Java Web架构 有源码

浏览 30696 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-09-09  
peterwei 写道
给老yan投下精,最近我在研究memcached相关的东西,以后多向你请教。
1.后来整个架构有没有发生改变?
2.tomcat 的session那块最后是怎么处理的?我记得当时好像用到cookie了。
3.应用服务器用了memcached,为什么当时web server没有一起使用memcached?就我所知,memcached也可以处理集中式session,好像有个memcached-session-manager。


开始第一版是使用了共享session的,集中放在memcached里面。现在只是使用cookie记录一下用户的一个ID信息,用来验证用户身份,相当于一个用户一个ticket。购物车的ID也是存在cookie里面,具体的购物车数据是存在服务器端的memcached里面。基本上是这样了。
0 请登录后投票
   发表时间:2010-09-20  
楼主项目所选用的不走寻常路,做的很好的,有几个问题想问问:
开发工具用的intellij idea,不用的Eclipse/Myeclips,用的spring MVC不用的Struts不知道是出于什么考虑?使用下来感觉怎么样,另外引入的jar文件那么多更新起了也太不容易了,更新的时候会不会容易发生冲突?spring 3.0.4较以前版本有了不少改进是否考虑更新呢?
谢谢!
0 请登录后投票
   发表时间:2010-09-21  
赞赏一下!

感谢楼主的共享,不是代码层面的共享,而是设计思想层面的共享,我们需要更多这样共享来壮大我们的软件事业!


0 请登录后投票
   发表时间:2010-09-21  
onlysomeone 写道
楼主项目所选用的不走寻常路,做的很好的,有几个问题想问问:
开发工具用的intellij idea,不用的Eclipse/Myeclips,用的spring MVC不用的Struts不知道是出于什么考虑?使用下来感觉怎么样,另外引入的jar文件那么多更新起了也太不容易了,更新的时候会不会容易发生冲突?spring 3.0.4较以前版本有了不少改进是否考虑更新呢?
谢谢!

选择intellij idea只是个人习惯而已,从5.0开始一直用到现在。使用了spring IOC首选就是spring mvc,而且集成也非常简单。整个架构结构比较简单,配置文件比较精简,新手可以很容易上手。jar文件管理起来确实是个头痛的问题,里面有一些是没用的,我也懒得去清理了,使用mvn管理应该是一个不错的方向,只是现在没时间去整理了。升级spring3.0.4是没有问题的,有兴趣的只要替换一下spring3的jar文件就可以了。
0 请登录后投票
   发表时间:2010-09-21  
xchao 写道
赞赏一下!

感谢楼主的共享,不是代码层面的共享,而是设计思想层面的共享,我们需要更多这样共享来壮大我们的软件事业!




呵呵,这个是之前一版的架构了,现在版本有些改进,有时间整理一下发上来和大家讨论一下。
0 请登录后投票
   发表时间:2010-09-23   最后修改:2010-09-24
楼主啊,示例中“登录”不了,只是页面刷新了,
感觉是执行j_spring_security_check,验证了“验证码”之后就完了。楼主能否提供一下较为完整的登录功能的代码,谢谢了!
0 请登录后投票
   发表时间:2010-09-25  
yanwt 写道
xchao 写道
赞赏一下!

感谢楼主的共享,不是代码层面的共享,而是设计思想层面的共享,我们需要更多这样共享来壮大我们的软件事业!




呵呵,这个是之前一版的架构了,现在版本有些改进,有时间整理一下发上来和大家讨论一下。

看着这个架构对小弟们学习有很大帮助,感谢楼主的分享精神.
还请楼主快些整理下新版中各个层面用的的技术(越祥细越好)  .
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29

 楼主,我看了源码,有些见解有几点觉得框架的sessionsna处理有些浪费性能

1 HttpSessionSidWrapper.java

if (session != null) {
            Enumeration<String> enumeration = session.getAttributeNames();
            while (enumeration.hasMoreElements()) {
                String name = enumeration.nextElement();
                map.put(name, session.getAttribute(name));
            }
            SessionService.getInstance().saveSession(sid, map);
        }

 

每次请求,getsession方法都会遍历session,然后保存到缓存中,这种行为如果是必须,肯定会影响速度,不如用一个监听器比如
利用HttpSessionAttributeListener监听httpsession的属性变化,同步到memecached中的sessionmap。

Java代码

public void attributeAdded(HttpSessionBindingEvent event) { 
或者attributeRemove 

 
这样是更好的解决方法对吧?

2还有cookie的key用的是自动生成的uuid,其实不如用session.getId(),这个也是唯一的,而且还可以用来比较session.getId()和cookie中是否相同来判断前后是否是同一个session(该应用服务器是否crash)
暂时就这两个问题了,还会继续看源码,有问题到时候再沟通一下

 

0 请登录后投票
   发表时间:2010-09-30  
对这些不太懂 ,主要是做应用系统 ,LZ 能给个技术文档么 。不讲代码 ,就将思想 。那些地方用了什么技术,什么的。。
0 请登录后投票
   发表时间:2010-09-30  
kakaluyi 写道

 楼主,我看了源码,有些见解有几点觉得框架的sessionsna处理有些浪费性能

1 HttpSessionSidWrapper.java

if (session != null) {
            Enumeration<String> enumeration = session.getAttributeNames();
            while (enumeration.hasMoreElements()) {
                String name = enumeration.nextElement();
                map.put(name, session.getAttribute(name));
            }
            SessionService.getInstance().saveSession(sid, map);
        }

 

每次请求,getsession方法都会遍历session,然后保存到缓存中,这种行为如果是必须,肯定会影响速度,不如用一个监听器比如
利用HttpSessionAttributeListener监听httpsession的属性变化,同步到memecached中的sessionmap。

Java代码

public void attributeAdded(HttpSessionBindingEvent event) { 
或者attributeRemove 

 
这样是更好的解决方法对吧?

2还有cookie的key用的是自动生成的uuid,其实不如用session.getId(),这个也是唯一的,而且还可以用来比较session.getId()和cookie中是否相同来判断前后是否是同一个session(该应用服务器是否crash)
暂时就这两个问题了,还会继续看源码,有问题到时候再沟通一下

 


使用UUID是想保持用户的一些状态,如果使用session.getId()的话,用户关闭浏览器,sessionid就会丢失。既然花了那么大的开销存储了session数据,肯定希望能使用的长久一些是吧。
0 请登录后投票
论坛首页 Java企业应用版

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