??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲av成人一区二区三区,亚洲一久久久久久久久,亚洲国产精品线在线观看http://www.tkk7.com/SimonLei/You may say I am a dreamer, but I am not the only one.zh-cnMon, 12 May 2025 02:55:49 GMTMon, 12 May 2025 02:55:49 GMT60grails wicket plugin 的一个问题及修正http://www.tkk7.com/SimonLei/archive/2008/01/15/175390.htmlSimonLeiSimonLeiTue, 15 Jan 2008 02:38:00 GMThttp://www.tkk7.com/SimonLei/archive/2008/01/15/175390.htmlhttp://www.tkk7.com/SimonLei/comments/175390.htmlhttp://www.tkk7.com/SimonLei/archive/2008/01/15/175390.html#Feedback1http://www.tkk7.com/SimonLei/comments/commentRss/175390.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/175390.html
http://graemerocher.blogspot.com/2007/05/grails-wicket-wonders-of-grails-plug-in.html

我试了一下,发现最新版?0.3)的wicket插gQ运行helloworld都有问题Q错误是Q?br />
wicket.markup.MarkupNotFoundException: Markup not found.

查看了一下原因,按照文Q?HelloWorld.html 是放?grails-app/views 目录下的Q但?wicket 插g 没有修改classpath ?resource 装蝲的\径,也就是说Q实际上q个 HelloWorld.html 对于 wicket 来说 是不可见的。但是如果把q个 HelloWorld.html 攑֜ src/java 目录下,则可以正常运行?br /> 惛_了一个简单的解决ҎQ修?$GRAILS_HOME/scripts/Package.groovyQ在 146 行增加:
fileset(dir:"${basedir}/grails-app/views") {
include(name:
"**/**")
exclude(name:
"**/*.groovy")
}

像 src/java 当中的资源一P全部拯到目标目录下Q这L效果和攑֜ src/java 目录下一样了?br />
ȝQ?http://blogsite.3322.org/



SimonLei 2008-01-15 10:38 发表评论
]]>
l验Mx人啊Qspring与osgil合当中遇到的问题)http://www.tkk7.com/SimonLei/archive/2006/12/28/90442.htmlSimonLeiSimonLeiThu, 28 Dec 2006 02:37:00 GMThttp://www.tkk7.com/SimonLei/archive/2006/12/28/90442.htmlhttp://www.tkk7.com/SimonLei/comments/90442.htmlhttp://www.tkk7.com/SimonLei/archive/2006/12/28/90442.html#Feedback2http://www.tkk7.com/SimonLei/comments/commentRss/90442.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/90442.html首先看看我前几天的一blog

spring ?osgi的第一个障?

eclipse3.1, spring2.0.1Q将spring.jar攑ֈ一个插件中Q在另一个插件中M用?最单的例子Q在context.getBean的时候就报了一个异常:

Caused by: org.xml.sax.SAXParseException: cvc - elt. 1 : Cannot find the declaration of element  ' beans ' .

先是搜了一遍,没有发现很有帮助的内宏V然后跟了一下,发现q是因ؓxsd的映找不到。而造成q个问题的原因, 是在 spring.jar当中的META-INF/spring.schemas q个找不到?/font>

而这个找不到的最Ҏ原因Q是因ؓ在eclipse当中QMETA-INF目录是不能够被其他插件找到的。也是_META-INF 目录是拥有spring.jar的那个插件所独占的,而其他插件就依赖于q个插gQ也是无法找到META-INF目录下的文gQ?从而抛个异常?/font>

解决问题的办法有几个Q最单的莫过于拷贝spring.schemas文g到需要的插g中,另一个办法是把spring的context 装蝲放在spring.jar所在的插g中,或者改eclipse的代码?:(

q个问题解决之后Q紧接着W二个问题就?

Unable to locate NamespaceHandler  for  namespace http: // www.springframework.org/schema/aop

造成q个的原因和W一个类|spring.handlers拯到META-INF目录下就ok了?br />
上面是我以前的一个经验,今天仔细研究了一下,发现自己掉进?l验M的圈套?/font>

q个l验是这L累v来的Q在刚开始尝试用eclipse的时候,用的?.0?.1MxpdQ当?不知道osgi是个什么东?:$ 创徏的几个插Ӟ都没有创建osgi bundle manifest。也是_ 只有plugin.xmlQ而没有META-INF/MANIFEST.MF文g的。但是在q行期,eclipse会自动的 从plugin.xml当中d信息Q生成时的MANIFEST.MF文gQ放?runtime?configuration/org.eclipse.osgi/manifests 目录下。而生成这个MANIFEST.MF文gQ是 通过 PluginConverterImpl q个cL实现的,在它?isValidPackageName Ҏ中,所有的 META-INF或者以META-INF开头的目录Q都不会被自动的export出去Q从而在临时生成的MANIFEST.MF 文g中,永远不会有META-INF目录的export?/font>

当时刚开始接触eclipse和osgiQ根本不知道自己当时最佳的解决Ҏ是创徏一?bundle manifestQ?然后在其中将META-INF目录export出来。而是通过盲目的修改代码来l过q个弯。后来这个弯l过MQ?留给我的l验是QMETA-INFq个目录Q是插g独n的,别的插g不允许访问的?/font>

于是Q在前几天,当spring.jar当中的几个META-INF目录下的文g讉K不了Ӟ我也认ؓq个l验有用Q?差点去改eclipse的代码了。幸好尝试了一下,把spring.jar所在的插g中,META-INF目录׃n出来Q?居然好了。仔l查了一下,发现屏蔽META-INF的代码只出现在PluginConverterImplq个cd中?回头想了惻Il于明白自己q次是掉在经验主义的坑里面了?/font>

l验Mx人啊。唉?br />
ȝQ?http://blogsite.3322.org/



SimonLei 2006-12-28 10:37 发表评论
]]>
SUN Tech 2006 见闻http://www.tkk7.com/SimonLei/archive/2006/09/29/72729.htmlSimonLeiSimonLeiFri, 29 Sep 2006 02:09:00 GMThttp://www.tkk7.com/SimonLei/archive/2006/09/29/72729.htmlhttp://www.tkk7.com/SimonLei/comments/72729.htmlhttp://www.tkk7.com/SimonLei/archive/2006/09/29/72729.html#Feedback4http://www.tkk7.com/SimonLei/comments/commentRss/72729.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/72729.html
会场讑֜最拥堵的北四环中\Q赶C场已l接q?点,匆忙报道之后Q?
W一感觉是不像去q那么大的场面了Q只有两个会场,而且很奇怪的是,
参展的其他厂商,也只有AMD一Ӟ昑־有点h?

James Gosling又一ơ出CQ不q做的演讲ƈ没有很多新鲜的东西,值得
注意的倒是Ruby on Rails出现在他的演讲内容当中,q大概也与JDK未来版本
要支持动态语aQ以及SUN把jruby的两个h招进L一pd的关pR随后有
一个SUN的技术展C,其中有意思的一个是 SPOT(Small Programmable Object Tech)Q?br />有点象《少数派报告》当中阿汤哥用的手套Q用手套来当做鼠标一L?
IZ使用Q很是不错?

随后一整天的演Ԍl我的感觉,重头戏是NetbeansQ其ơ是AjaxQ再其次?
Java EE 5。感觉今天一pd的活动都与Netbeans有关QAjax和Java EE 5包括
Java MEQ都时不时的与Netbeans挂上钩。从今天被Netbeansz脑的结果来看,
Netbeans现在实来好用,功能也越来越强大。Eclipse如果按照现在的发?
速度Q确实有些危险。不q,从另一个角度看Q有竞争才能促进发展Q也不算是g
坏事?

其他斚w的收P包括对JAVA SE 7 的一些特性了解,Java EE 5的一些介l,以及
关于Java EE 5的参考实?GlassFish的介l,Zq听了一些Java ME的东西,?
有些意思,可惜暂时用不上?

今天有一些感触:
 
好的技术,如果没有好的工具支持Q也是很隄存的。这p惛_我们自己的IMP框架Q?br />q去重Ҏ在framework和engine上,而对于designer的投入则q远不够。这样造成的现
象就是限制了开发效率,从而没有能够最大的发挥IMP框架的作用?

Netbeans虽然好用Q也能够从一定程度上提高生力。但是我q是那种观点Q看上去
很美的代码生成机Ӟ往往只是节省了“创建”的旉成本Q而对于“修改”的?br />率提高,却不一定有帮助?

JSF感觉q是沿袭了Struts的东西太多,q通过Ajax的renderQ感觉还是不能算非常好的
Component Framework。还是不如Echo2 ;)

回家的时候,正赶上北四环的拥堵高峎ͼ回到家已l很晚了Q写的很零ؕQ不知道明天
会不会有什么大的收莗反正今天感觉就是被z了一天的脑,宛_我都惌一个Netbeans
来玩玩了?

SUN Tech 2006W二?

又经历了痛苦?个小时到达了会场Q今天的SUN公司主题居然是“开源的好处”,
重点提出开源最l有利于开源者,LSUN从OpenSaloris的开源当中获得了很多
好处。不知道前几q大家强烈要求SUN 开源的时候,是不是也是这U论调。也懒得
L以前的新MQ不qȝ逐渐有将Java开源的打算了,而且SUNL要将所有的
软g开源,q对于open sourceC֌Q也是件好事?

今天ȝ来说内容不是很丰富,q一ơ的Tech DayQd也就是几个h在讲Q一个h
讲好几场Q这在以前的Tech Day是很出现的?br />
今天的收获如下:

听了一场关于swing和美化swing的讲座,感觉SUN对于java的投入,比以前更大了?br />以前Q关于swing的微词很多,也有很多不好用的反馈Q但是在几个jdk版本的发布过
E当中都没有改进Q最典型的莫q于ContentPaneQ?Lastly, after seven years, we've made
jFrame.add equivalent to jFrame.getContentPane().add()."。在JDK5之后Q可以感觉到SUN
对于用户C֌的反馈开始逐渐重视。对于swing当中的功能较q问题Q专门整了一?br />swinglab来解冟뀂其中还有个swingx的子目Q也有不的swing功能增强lg可以用?

Apache DerbyQ也是原来IBM收购informix时收购到的CloudscapeQ现在又有了一个新
名字?Java DBQ而且会随着JDK6一起发布。Java DB的功能比较完善,据说性能也不
错,L支持300G的数据量没有问题。如果这L话,不仅hsql可以抛掉Q而且说不?br />mysql也可以不用了。我现在也很喜欢q种既可以embedQ又可以做ؓcs的数据库Q现?br />做rails的就是用sqliteQ感觉也够用了。Java DBq有个很强的功能是,可以数据打包ؓ
jar文gQ做为只ȝdbQ放在光盘或者其他地方,做ؓ备䆾和还原,以及做demo应用?br />在光盘上Q应该都有很大的用处?

JDK for script language. 在JDK6当中Q已l支?ruby和javascript两种脚本语言了?br />功能上感觉有点象BSFQ但是由于随着JDK6一起发布,所以以后媄响力会更大?br />而且Q做演讲的h也提刎ͼjruby的开发者进入SUN公司Q恐怕不只是用ScriptEngine
支持script语言q么单。今天体验了一下印度h说英语,实是强...

另外q听了一?MBeanQConcurrence斚w的东西,收获也有一些。例如在JDK6当中Q?br />MBeanServer~省启动了Q而不像JDK5里,需要用一个命令行参数才能启动?
两天下来Q感觉这一期的SUN Tech Day和以往最大的区别是Q这一期完全是?br />SUN自己垄断了,没有别的公司演讲Q?不讨论别的公司的内容Q没有别的公司参展?br />a必称 NetBeansQ操作系l必U?Solaris。从一个角度来看,SUN公司实 U极?br />参与C开源社区当中,q且比以前更加接q用P也更U极的响应用Lrequest?br />q一点,从Netbeans的进展神速, 到JDK最q几个版本的新特性增加速度Q都比JDK5
以前要好很多。这对于Java的进一步发展,可以说是一件好事。从另一?角度来看Q?br />q一届Tech Day表现出来的情况,不知道是应该说SUN更加有了自主意识Q还是应该说
SUN实没有很好的组l?q次会议。从参加演讲的h员,到展厅的布置来看Q?br />都不如往届。不知道是不是SUN财务紧张造成的,hoho.

又花了两个小时才从首堵北京的北四环中路到了家Q感觉今q的Tech DayQ?br />最大的收获是被z脑了,也体会到了目前最火爆的Ajax是如何的火爆?

ȝ: http://blogsite.3322.org/jspwiki/

SimonLei 2006-09-29 10:09 发表评论
]]>
代码的卫生、习惯及其它...http://www.tkk7.com/SimonLei/archive/2006/04/03/38839.htmlSimonLeiSimonLeiMon, 03 Apr 2006 02:27:00 GMThttp://www.tkk7.com/SimonLei/archive/2006/04/03/38839.htmlhttp://www.tkk7.com/SimonLei/comments/38839.htmlhttp://www.tkk7.com/SimonLei/archive/2006/04/03/38839.html#Feedback1http://www.tkk7.com/SimonLei/comments/commentRss/38839.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/38839.html
最q忙Q发现家里开始脏乱差了。仔l想惻I其实之所以会q样Q?br />是因为经常发现有点脏的地方,也懒得动QL想等到啥时候大扫除
一下子全部清理q净。后来地面越来越脏,p来越不注意,q入?br />一个恶性@环?br />
不禁联想到“破H户”理论,有个破窗LC֌Q会逐渐变得不适合居住?br />又想C个经常看到的现象Q如果一个电U杆下有一包垃圾,只要清理
不及Ӟq段旉Q这个电U杆׃变成一个垃圑֠?br />
扯这么多Q其实想说的是代码的卫生。代码,刚开始都是很q净的,只是
随着旉推移Q随手ؕ扔的果皮U屑逐渐增多Q最后开始发臭,然后q个
代码没有h愿意ȝ了。在目中,l常到q样的情c同L功能Q?br />哪怕以前曾l有人写q,很多是們֐于自己重头开始写。原因是什么?
E序员只信Q自己的代码,q是其中的一个原因。另一个原因是Q以前的
代码实有个需要学习上手的旉。打个比方,一间房子,不适合居住Q需?br />q行一番打扫才能住q去Q这是已有代码。而新的代码,则是E序员亲?br />垒v来,亲手装修的,虽然耗时长,辛苦Q但是心理感觉好。但是呢Q这?br />新房子对于其它程序员来说Q已l时一个堆满垃圾不适合居住的旧房子了?br />于是Q每个程序员都亲手徏一个房子,如此重复下去?br />
那么Q要避免q种无意义的重复力_Q一斚w是程序员本n意识的纠正。打?br />一个旧房子Q虽然脏一点,但是通常比新Z个房子还是要快和省力。另一?br />斚wQ程序员应该有这L信念Q不能让自己的代码变成垃圑֠。也是_
不能容忍自己的代码中堆满垃圾?br />
如何避免代码成ؓ垃圾堆?个h认ؓQ就象“破H户”理ZP不能对破?br />的窗户听之Q之,而要快修复。否则的话,其他人看到第一袋垃圑֜q里Q?br />觉得扔第二袋垃圾没有罪恶感Q至罪恶感不那么强。大家可以想象一下,
在一个窗明几亮的环境中,你扔果皮U屑之前都会三思。但是站在一个垃圑֠
上面Q你扔垃圾之前就不会有什么顾虑了。因此,保持卫生的一个好习惯是Q?br />不放q第一个垃圾?br />
当然Q如果判别某D代码是不是垃圾Q或者及时发现第一D垃圾代码,那就?br />另一个话题,例如用utQ用code reviewQ等{。《Working Effectively with Legacy Code?br />q本书里面,提到了Legacy code 的定义:

Code without tests is bad code. It doesn't matter how well written it is;
it doesn't matter how pretty or object-oriented or well-encapsulated it is.
With tests, we can change the behavior of our code quickly and verifiably.
Without them, we really don't know if our code is getting better or worse.

有h会觉得我的太细Q不揪架构、设计,反而去代码,只见树木不见林。我个h
的看法,架构、设计再好,都需要代码来q行实现。如果这个基没打好,以后q个
代码L会变成无人想的垃圾堆?br />
当然Q我也反Ҏ意义的追求完。我不是个有z癖的hQ所以,代码C么程度就是
q净的了Q我个h的看法是QClean code that works。当然这一点其实不Ҏ辑ֈQ但?br />做ؓ一个程序员Q我q是努力去追求这一点的?br />
ȝQ?http://blogsite.3322.org/jspwiki/


SimonLei 2006-04-03 10:27 发表评论
]]>
在eclipse为核心的framework中支持Jsphttp://www.tkk7.com/SimonLei/archive/2005/12/26/25411.htmlSimonLeiSimonLeiMon, 26 Dec 2005 02:58:00 GMThttp://www.tkk7.com/SimonLei/archive/2005/12/26/25411.htmlhttp://www.tkk7.com/SimonLei/comments/25411.htmlhttp://www.tkk7.com/SimonLei/archive/2005/12/26/25411.html#Feedback0http://www.tkk7.com/SimonLei/comments/commentRss/25411.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/25411.html?a >上次的文?/a>当中Q把 eclipse做ؓweb framework的核心,q且使得 servlet 的定义和mapping做ؓ扩展点,实? 方便。不q现在又面一个问题,有个历史遗留pȝ当中Q有jsp 的应用。而jsp与servlet 的一? 很大的区别在于,它需要用 javac d~译。这׃得问题复杂化了,特别是?class loader 的关pd得更复杂?p>我们首先看一下这里面有几U?class loaderQ首先,启动 eclipse 的是一个system loaderQ然? ?eclipse starter ?loaderQ启动我们的核心class loaderQ这个核心负责启?jetty 和我? ?web app两个插gQ每个插仉有自q eclipse bundler loader。而jetty插g启动jetty 应用服务器,应用服务器本w有 context class loaderQ它q要负责去装?WEB-INF/lib 下的所有jar文gQ以?WEB-INF/classes 目录下的文gQ做为编译期使用?/p>

q里不仅class loader 众多Q而且关系复杂。一不小心就Ҏ抛出 class not found 异常Q或者是 class cast 异常。相对而言Q只支持servlet q单,因ؓ只要?servlet ?context class loader ?eclipse bundler loader 替换掉就行。而jsp的编译机ӞD了问题的出现?/p>

我对于这U复杂classloader情况的心得,是把错l复杂的 class loader 关系|拉_变成一? 树。这L好处是Q对于loader 的关pL较清晎ͼ出现ClassNotFoundException? ClassCastExceptionq两U情늚时候,都狠Ҏ判断怎么回事Q不会被l晕。这U时候,单步跟踪 只是找死Q把classloader关系d来,有利于对问题的分析?/p>

于是Mq样一个图Q把复杂的网拉直了,问题p刃而解了?/p>


其中的关键就?LauncherClassLoader。这个就是我们自qClassLoaderQ把它设|ؓ servlet context classloader ?parentQƈ且把 context classloader 的装载顺序改变成为先由parent 装蝲Q再自己装蝲的模式。这Pjsp的编译还是由 context loader d理,我就不管了。其他的 该装载的地方Q还是有 eclipse bundler 去装载,q样问题基本解决?/p>

不过q样其实q是有个问题Q如果要?jsp 当中调用某个插g当中?classQ那么在~译期就会出? 问题。不q由于目前只是解?legacy jsp 应用的问题,所以这个暂时不存在。我能想到的解决Ҏ 其实也狠单,把这?jar 文g的url也做为扩展点出现Q那么当jsp需要某个classӞ只要把它 所需要的 jar 文g?url 做ؓ一个扩展,?LauncherClassLoader 当中这些jar文gd? url loader 当中Q而这?url 会出现在 jsp 的编译class path当中?/p>

ȝQ?a >http://blogsite.3322.org/jspwiki/



SimonLei 2005-12-26 10:58 发表评论
]]>
忍无可忍Q无需再忍——终于决定改eclipse代码?/title><link>http://www.tkk7.com/SimonLei/archive/2005/12/15/24028.html</link><dc:creator>SimonLei</dc:creator><author>SimonLei</author><pubDate>Thu, 15 Dec 2005 06:01:00 GMT</pubDate><guid>http://www.tkk7.com/SimonLei/archive/2005/12/15/24028.html</guid><wfw:comment>http://www.tkk7.com/SimonLei/comments/24028.html</wfw:comment><comments>http://www.tkk7.com/SimonLei/archive/2005/12/15/24028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/SimonLei/comments/commentRss/24028.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/SimonLei/services/trackbacks/24028.html</trackback:ping><description><![CDATA[<span><span><span>一直以来,eclipse 对于 fragment 的概念都是一U补充,而不是覆盖的机制? 也就是说Qfragment 里的 class 会在 host plugin ?class 装蝲之后而装载? 只有 host plugin 里面没有扑ֈQ才会去?fragment 里面的类?p>我们的frameworkQ目前是׃个专门的组在维护。其他小l是不能随意改它的代码的? 但是Q当有些情况下,使用q个framework的开发小l需要修改这部分代码Q而这个修? 又只是局部的Q只有这个小l需要用的,那么现在很头痛。后来用一Ujar替换的方? 来满个需要,但是搞得开发v来很J琐Q需要经常的export?/p><p>一直以来也没有d eclipse 的代码,q次把应用启动的模式从deployҎlaunch 之后Q? 别的地方都好_唯有需要处?fragment 的这个地方很头痛?/p><p>如果把eclipse fragment的装载顺序调整一下,先装?fragment 里的classQ再装蝲 host plugin 里面?classQ这个问题就q刃而解了。framework开发小l只需要处? 公用的代码,使用 framework 的小l就可以用自q fragment d理特D的代码Q? q个世界清净了。大安可以?launch q种模式来启动应用,加快应用开发的效率?/p><p>刚才改了一下,其实很简单,只是?DefaultClassLoader p了,看一下代码就知道? 怎么攏V后悔怎么没有早点改,呵呵?/p>ȝQ?<a >http://blogsite.3322.org/jspwiki/</a><a><br></a></span></span></span><img src ="http://www.tkk7.com/SimonLei/aggbug/24028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/SimonLei/" target="_blank">SimonLei</a> 2005-12-15 14:01 <a href="http://www.tkk7.com/SimonLei/archive/2005/12/15/24028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我不喜欢ror的一点——代码生?/title><link>http://www.tkk7.com/SimonLei/archive/2005/12/07/22830.html</link><dc:creator>SimonLei</dc:creator><author>SimonLei</author><pubDate>Wed, 07 Dec 2005 03:29:00 GMT</pubDate><guid>http://www.tkk7.com/SimonLei/archive/2005/12/07/22830.html</guid><wfw:comment>http://www.tkk7.com/SimonLei/comments/22830.html</wfw:comment><comments>http://www.tkk7.com/SimonLei/archive/2005/12/07/22830.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/SimonLei/comments/commentRss/22830.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/SimonLei/services/trackbacks/22830.html</trackback:ping><description><![CDATA[<span><span><span>目前来说Q最不喜Ƣ的是代码生成q种机制。这个机制看h 很快Q能够快速的开发一个简单的应用。不敢说q是rails ? 核心Q至是它吸引h的一个优势,而正好是我所不喜Ƣ的一炏V?p>其实对于代码生成q种机制Q在 Pragmatic Programmer 里面 已l提CQ叫?evil wizard。我很认同那本书里面的说法, 大部分的软g开发过E,?修改 而不?新徏 代码。也?br>是说Q? 真正好的代码和框Ӟ应该有对 change 支持比较好的机制?/p><p>ruby on rails 能够Ҏmodel快速的生成代码Q确实有一些吸引力? 但是Q一?model 发生变化Q这时候代码生成就不能起作用了Q因? 我重新生成代码会把我修改q的代码覆盖掉。如果手工进行编码的话,我也 没看出来它相当于jsp的优ѝ当Ӟ它的 mvc 以及 helper 分离? 机制实比纯_的 jsp 要好Q不q对于代码生成这一部分Q我不觉? ?rails Ҏ的吸引?/p><p>ror大概也考虑到这一点,所以也有对 plugin ?engine 的支持? q两个东西我现在q没有研IӞ应该会比较有意思吧?/p><br>ȝQ?a >http://blogsite.3322.org/jspwiki/</a><br></span></span></span><img src ="http://www.tkk7.com/SimonLei/aggbug/22830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/SimonLei/" target="_blank">SimonLei</a> 2005-12-07 11:29 <a href="http://www.tkk7.com/SimonLei/archive/2005/12/07/22830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己启动jetty所遇到?session reset 问题http://www.tkk7.com/SimonLei/archive/2005/11/29/21833.htmlSimonLeiSimonLeiTue, 29 Nov 2005 07:53:00 GMThttp://www.tkk7.com/SimonLei/archive/2005/11/29/21833.htmlhttp://www.tkk7.com/SimonLei/comments/21833.htmlhttp://www.tkk7.com/SimonLei/archive/2005/11/29/21833.html#Feedback2http://www.tkk7.com/SimonLei/comments/commentRss/21833.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/21833.html
在eclipse 当中启动?jetty Ӟ׃要根?extension point 来找?br>相应?servlet 定义?mappingQ因此自己取得一?contextQ然后往里面
addHandler。开始只有一?servlet Q没有问题,后来又有两个pluginQ其?br>也有servlet/mapping的定义,然后L出现 session reset 的问题?br>
开始还以ؓ是自己做的classloader 的问题,因ؓ担心自己做的 loader 会?br>不好的媄响。后来把日志U别调高之后Q发现如果连l只讉K一个servlet, ׃?br>?session reset 问题Q如果这时候再讉K另一?servletQ它׃赋予另外一?br>session id。再仔细看了一下增?servlet mapping 的代码:
for (ExtensionBean bean : servletMappingBeans) {
  ServletHandler handler = new ServletHandler();
  handler.addServlet( bean.getProperty( "mapping"), bean.getClassName());
  context.addHandler( handler);
}


q样Q相当于?context 里面增加了多?servlet handlerQ每个handler有一个自q
session managerQ由此导致访问不同的 servletQ用不同的session id 的问题,从?br>D客户端认?session reset 了。因此,E微修改一下就解决了这个问题:

ServletHandler handler = new ServletHandler();
for (ExtensionBean bean : servletMappingBeans) {
  handler.addServlet( bean.getProperty( "mapping"), bean.getClassName());
}
context.addHandler( handler);


教训Q一开始就觉得q个问题不是个大问题Q但是由于在后台老是没有异常Q日志文件中?br>没有提供_的信息,因此一开始花了很长时间进行调试和单步跟踪Q虽然不喜欢Q但是当?br>也没有想出其他办法)。后来把日志U别提高了,把jetty的debug enable之后Q发现访?br>不同的servlet造成session id 的变化,从而很快的定位到问题ƈ且解决问题?br>
也就是说Q碰到问题,q是应该冷静Q尽量用日志d位问题,而不是用debugd位问题?br>
ȝQ?http://blogsite.3322.org/jspwiki/


SimonLei 2005-11-29 15:53 发表评论
]]>
Eclipse 做ؓ webapp 核心的几U做法以?classloader 研究http://www.tkk7.com/SimonLei/archive/2005/11/28/21608.htmlSimonLeiSimonLeiMon, 28 Nov 2005 01:56:00 GMThttp://www.tkk7.com/SimonLei/archive/2005/11/28/21608.htmlhttp://www.tkk7.com/SimonLei/comments/21608.htmlhttp://www.tkk7.com/SimonLei/archive/2005/11/28/21608.html#Feedback0http://www.tkk7.com/SimonLei/comments/commentRss/21608.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/21608.html做法1Q以Eclipse为启动点Q将appserver做ؓ一个应用启动?br>
1.jpg
做法Q?br>在Launcher 当中启动Eclipse Platform。此处的ClassLoader 为系l的loader?br>Eclipse Platform 会查扑ֈCore ApplicationQƈ且将其启动?br>在Core Application 当中QClassLoader ?Eclipse ?ClassLoader?br>在Core Application 当中Q我们启动JettyQƈ处于{待状态?br>当Servlet/JSP被调用时QJetty Servlet/JSP初始化,q执行相应动作?br>Servlet ?ClassLoader ?Context ClassLoaderQ符合Servlet 规范的?br>
曄到的问题:
Core Application采用的是Eclipse ClassLoaderQ缺省情况下Q该ClassLoader ?parent ?null。这P在Servlet ClassLoader 当中Q能够接触到System ClassLoaderQ但是Core Application 不能讉KQ它们相互间不可见?br>解决办法QEclipseStarter 有个配置叫做parent.ClassloaderQ将其设|ؓappQ即可解册问题?br>Servlet ClassLoader按照Servlet 2.3的规范,首先由Context ClassLoaderL找,如果找不刎ͼ再交由parent 去load。而当时我在webapp/WEB-INF/lib目录下放了一个runtime.jar文g。这Pruntime.jar当中的类都被Context ClassLoaderl装载进来了Q而对于EclipseStarter当中装蝲的runtime.jar中的cM怸可见Q从而也出现问题?br>解决办法Q把lib目录下的runtime.jar删除好了?br>
׃所有的与eclipse有关的内容,只能由Core Application 的ClassLoader才能装蝲Q因而相互间是可见的。从而达C利用eclipse核心的目的?br>做法2Q以app server 为启动点Q以eclipse 核心为web app的核心:
2.jpg


和做?一P重点是将Core Application的ClassLoader讄为System的loaderQ这P在其他的地方Q例如Servlet当中Q也同样可见了?br>
很重要:runtime.jar和osgi.jar一定要攑֜jetty的启动\径当中。这h会用System的loader 首先扑ֈq两个jar文gQ从而保证大安在这个基上来互相看到?br>
做法3Q以Eclipse为启动点Q将appserver做ؓ一个应用启动,appserver以dispatcherw䆾出现?br>
q个做法和做?一致。区别在于,appserver 本n不做M事情Q只是做Z?dispatcher 出现。它提供一?extension pointQ其他插件扩展该 extensionQ相当于注册 servletQ以及mapping。当有http request ӞdispatcherҎ servlet 的注册和mappingQ自动的分发l对应的servlet。此Ӟ各个servlet?class loader q是 eclipse classloaderQ?servlet ?context classloader 在这U模式当中只是昙׃玎ͼ做了一?dispatcher 之后Q就工作移交给了定义serlvet 的插件的那个 eclipse classloader?br>
q样Qservlet 是可扩展的,再也不依赖于 web.xml了?br>
ȝQ?http://blogsite.3322.org/jspwiki/


SimonLei 2005-11-28 09:56 发表评论
]]>
开发的三种模式http://www.tkk7.com/SimonLei/archive/2005/11/24/21315.htmlSimonLeiSimonLeiThu, 24 Nov 2005 09:43:00 GMThttp://www.tkk7.com/SimonLei/archive/2005/11/24/21315.htmlhttp://www.tkk7.com/SimonLei/comments/21315.htmlhttp://www.tkk7.com/SimonLei/archive/2005/11/24/21315.html#Feedback2http://www.tkk7.com/SimonLei/comments/commentRss/21315.htmlhttp://www.tkk7.com/SimonLei/services/trackbacks/21315.htmlW一U: script 模式Q如jsp/php{,修改了代码,直接h面可以看? l果Q这U开发模式最爽,都不用重启应用服务器?p>W二U:应用服务器模式,修改了代码之后,需要重启一下应用服务器Q然后才? 看到修改的效果,q种模式一般爽Q但是也q可以接受。如果应用服务器支持hot-deployQ? 那就接近W一U开发模式了?/p>

W三U:部v模式Q修改了代码之后Q必首先部|Ԍ然后重启应用服务器才能看? 修改效果。这U模式最不爽Q传l的ejb开发就是这U模式?/p>

目前我们?eclipse 做ؓ核心?web appQ还是第三种开发模式。造成q种开发模? 的原因,可以说是因ؓ当时?eclipse 不熟悉,?osgi 不熟悉,?eclipse class loader 不熟悉造成的。我打算其攚w成W二U模式,然后再考虑W一U是否可行。最q? ?ror, 它将环境分ؓ dev/product/test 几种Q很受启发。我可以在product环境? 采用W二U,在dev环境下采用第一U模式?/p>ȝQ?http://blogsite.3322.org/jspwiki/


SimonLei 2005-11-24 17:43 发表评论
]]>
վ֩ģ壺 ۲ӰԺѹۿ| aר߹ۿ| ޾ƷƵ| ŮڵƵվ | 1134Ʒâ | avɫӰ| þþƷѹۿ| վ߹ۿ| 3344߹ۿƵҳ| 99þۺϾƷ| 57paoƵ| ޹ۺ| ³˿Ƭһۿ| ɫַȫ| 97seۺ| ѹۿһ| ޳ҹ| ѿ13| ˳www߲| ҹѸ| ߹ۿ| avr| 69Ƶѹۿ| avavav| պƵһ| һػ¼Ƶ| ˾þۺ| aëƬȫƵ| ˳վ߹ۿ| Ļ޵Ӱ| ޴Ƭѹۿ| ˺ݺۺϾþ| ѹۿƵ| ߹͵Ʒ| ƯŮ| AVһլɫӰ| Ұ߹ۿ3| žۺVAѿ| 91Ʒˬž߹ۿ| ůůѸձ| Ļѿ|