小
小猪
Unregistered / Unconfirmed
GUEST, unregistred user!
今天第一天培训,上午主要是pan介绍了一下wsad 5的新功能,然后不停的说,
这个功能我感觉没什么用,呼呼。
然后是li开始讲wsad如何使用,如何调试,如何方便快捷的从xml到xsl到html
到dtd到java bean等等等等之间的转换和自动生成,感觉的确比较方便,但觉
得自己写个工具比花钱买个工具划算的说^_^
下午是根据ibm给的培训教材step by step, 三个部分:servlet filter,
visual interface develop,servlet lifecycle,那个界面开发没劲,
看都没看,直接跳过没做。filter还算有点意思,不过要按照它的说明
说可以在filter里面处理log in,我想我会疯掉的,我个人觉得filter
在处理ca的时候应该可以比较方便,将ca的验证夹在业务代码中总归不爽,
无论多松的耦合都是让人难过的事情。无惊无险的做完一个filter,开始
研究那个servlet lifecycle,据说是servlet2.3的最新标准,最近疏于跟
踪这些东西,不是很清楚,但从参考实现来看是实现j2ee包中定义的接口,
应该没错(总是对ibm不太放心^_^)。在servlet2.3中终于实现了对session
管理的比较完善的支持,可以显式的响应session create和session destroy
事件了,不用再自己去费神了,好东西。servlet lifecycle的实现机制是基
于事件响应的,需要定义一个lifecycle的类,实现几个事件接口就行了。
导入参考实现,调试之,于是,有趣的事情出现了。
给出的参考实现lifecycle类实现了两个接口,名字记不住了,一个是
servlet context create和destroy的接口,一个是servlet session create和
destroy的接口,context接口方法是空的,该类定义了一个静态变量sessioncount,
在session create和destroy方法中简单的sessioncount++和sessioncount--,没有
作同步,这没关系,只是一个参考实现而已。启动调试环境,客户端浏览器开始
访问servlet一次,然后通过另外一个jsp查看记数器,竟然是4!强烈不解,加入
调试代码,在修改记数器的代码前加上System.out.println("one session create"),
重起服务,果然,每一个新的连接都调用了两次servlet create的事件响应函数。
于是将ibm的培训教师pan喊过来,希望他能够解释一下,他也很迷惑,讨论后决定
再加一行调试代码,打出sessionid来看看,结果也很有趣,两次调用是同一个
sessionid,也就是说,每一个session创建的时候会调用create的事件函数两次,
大为不解,随手又打开了几个浏览器,记数器的数字以2的倍数简单的增长着,
又发现一个问题:关掉了几个浏览器后,记数器没有变化。
我开始向pan抱怨从使用was35以来就对was的session管理极为不满。pan他提出是否
在session创建时该事件响应机制是既要响应request,又要响应response,我立即表
示反对,认为作为一个应用开发人员,我肯定不能容忍这种机制,也不相信j2ee规范
会如此定义。因此他建议查一下j2ee1.3的规范文档,我表示同意,但不幸的是,我
晚上才发现我所住的北大的宾馆是连接在校园网上的,只能访问国内的站点,我不知
道到哪里可以找到servlet2.3的文档,除了java.sun.com之外,看来只有明天看看
他如何解释了。但是,这仍然不能解释session destroy没有响应的问题,看来wsad问
题多多啊。
安装wsad花了将近30分钟,机器配置是p4 1.5G+512M,然后启动wsad花了将近3分钟,
我差点忍不住要在机房点上一支点八中南海了,总的感觉是还不如用
eclipse+appserver plugin的搭配,只是需要自己写点工具和自己写部署描述符,
如果不要写ejb的话,部署描述符不算难写,用eclipse的效率要高得多。
明天是介绍was5,再议。
(那个visual interface develop应该叫vue什么的,我不太知道什么意思,
本来想就写可视化界面开发的,感觉写中文破坏节奏,就自己写了段英文了,
另外,那个lifecycle是ibm对这个session管理功能的一个称呼,我顺手拿过
来用了,也许叫servlet listener是比较标准的说法吧)
-----------------------------
最后,关于session create的一点补充说明,我第二天作了测试,把ibm提供的
servlet listener的例子导入到resin中,是正常的结果,wsad果然有bug。
这个功能我感觉没什么用,呼呼。
然后是li开始讲wsad如何使用,如何调试,如何方便快捷的从xml到xsl到html
到dtd到java bean等等等等之间的转换和自动生成,感觉的确比较方便,但觉
得自己写个工具比花钱买个工具划算的说^_^
下午是根据ibm给的培训教材step by step, 三个部分:servlet filter,
visual interface develop,servlet lifecycle,那个界面开发没劲,
看都没看,直接跳过没做。filter还算有点意思,不过要按照它的说明
说可以在filter里面处理log in,我想我会疯掉的,我个人觉得filter
在处理ca的时候应该可以比较方便,将ca的验证夹在业务代码中总归不爽,
无论多松的耦合都是让人难过的事情。无惊无险的做完一个filter,开始
研究那个servlet lifecycle,据说是servlet2.3的最新标准,最近疏于跟
踪这些东西,不是很清楚,但从参考实现来看是实现j2ee包中定义的接口,
应该没错(总是对ibm不太放心^_^)。在servlet2.3中终于实现了对session
管理的比较完善的支持,可以显式的响应session create和session destroy
事件了,不用再自己去费神了,好东西。servlet lifecycle的实现机制是基
于事件响应的,需要定义一个lifecycle的类,实现几个事件接口就行了。
导入参考实现,调试之,于是,有趣的事情出现了。
给出的参考实现lifecycle类实现了两个接口,名字记不住了,一个是
servlet context create和destroy的接口,一个是servlet session create和
destroy的接口,context接口方法是空的,该类定义了一个静态变量sessioncount,
在session create和destroy方法中简单的sessioncount++和sessioncount--,没有
作同步,这没关系,只是一个参考实现而已。启动调试环境,客户端浏览器开始
访问servlet一次,然后通过另外一个jsp查看记数器,竟然是4!强烈不解,加入
调试代码,在修改记数器的代码前加上System.out.println("one session create"),
重起服务,果然,每一个新的连接都调用了两次servlet create的事件响应函数。
于是将ibm的培训教师pan喊过来,希望他能够解释一下,他也很迷惑,讨论后决定
再加一行调试代码,打出sessionid来看看,结果也很有趣,两次调用是同一个
sessionid,也就是说,每一个session创建的时候会调用create的事件函数两次,
大为不解,随手又打开了几个浏览器,记数器的数字以2的倍数简单的增长着,
又发现一个问题:关掉了几个浏览器后,记数器没有变化。
我开始向pan抱怨从使用was35以来就对was的session管理极为不满。pan他提出是否
在session创建时该事件响应机制是既要响应request,又要响应response,我立即表
示反对,认为作为一个应用开发人员,我肯定不能容忍这种机制,也不相信j2ee规范
会如此定义。因此他建议查一下j2ee1.3的规范文档,我表示同意,但不幸的是,我
晚上才发现我所住的北大的宾馆是连接在校园网上的,只能访问国内的站点,我不知
道到哪里可以找到servlet2.3的文档,除了java.sun.com之外,看来只有明天看看
他如何解释了。但是,这仍然不能解释session destroy没有响应的问题,看来wsad问
题多多啊。
安装wsad花了将近30分钟,机器配置是p4 1.5G+512M,然后启动wsad花了将近3分钟,
我差点忍不住要在机房点上一支点八中南海了,总的感觉是还不如用
eclipse+appserver plugin的搭配,只是需要自己写点工具和自己写部署描述符,
如果不要写ejb的话,部署描述符不算难写,用eclipse的效率要高得多。
明天是介绍was5,再议。
(那个visual interface develop应该叫vue什么的,我不太知道什么意思,
本来想就写可视化界面开发的,感觉写中文破坏节奏,就自己写了段英文了,
另外,那个lifecycle是ibm对这个session管理功能的一个称呼,我顺手拿过
来用了,也许叫servlet listener是比较标准的说法吧)
-----------------------------
最后,关于session create的一点补充说明,我第二天作了测试,把ibm提供的
servlet listener的例子导入到resin中,是正常的结果,wsad果然有bug。