grails 有一个 wicket 的插件:
http://graemerocher.blogspot.com/2007/05/grails-wicket-wonders-of-grails-plug-in.html
我试了一下,发现最新版本(0.3)的wicket插件,运行helloworld都有问题,错误是:
wicket.markup.MarkupNotFoundException: Markup not found.
查看了一下原因,按照文档, HelloWorld.html 是放在 grails-app/views 目录下的,但是 wicket 插件 没有修改classpath 和 resource 装载的路径,也就是说,实际上这个 HelloWorld.html 对于 wicket 来说 是不可见的。但是如果把这个 HelloWorld.html 放在 src/java 目录下,则可以正常运行。
想到了一个简单的解决方案,修改 $GRAILS_HOME/scripts/Package.groovy,在 146 行增加:
fileset(dir:"${basedir}/grails-app/views") {
include(name:"**/**")
exclude(name:"**/*.groovy")
}
就像 src/java 当中的资源一样,全部拷贝到目标目录下,这样的效果就和放在 src/java 目录下一样了。
主站:
http://blogsite.3322.org/
首先看看我前几天的一篇blog
spring 与 osgi的第一个障碍
eclipse3.1, spring2.0.1,将spring.jar放到一个插件中,在另一个插件中去使用。 最简单的例子,在context.getBean的时候就报了一个异常:
Caused by: org.xml.sax.SAXParseException: cvc
-
elt.
1
: Cannot find the declaration of element
'
beans
'
.
先是搜了一遍,没有发现很有帮助的内容。然后跟了一下,发现还是因为xsd的映射找不到。而造成这个问题的原因, 是在 spring.jar当中的META-INF/spring.schemas 这个找不到。
而这个找不到的最根本原因,是因为在eclipse当中,META-INF目录是不能够被其他插件找到的。也就是说,META-INF 目录是拥有spring.jar的那个插件所独占的,而其他插件就算依赖于这个插件,也是无法找到META-INF目录下的文件, 从而抛出这个异常。
解决问题的办法有几个,最简单的莫过于拷贝spring.schemas文件到需要的插件中,另一个办法是把spring的context 装载就放在spring.jar所在的插件中,或者改eclipse的代码。 :(
这个问题解决之后,紧接着第二个问题就是
Unable to locate NamespaceHandler
for
namespace http:
//
www.springframework.org/schema/aop
造成这个的原因和第一个类似,将spring.handlers拷贝到META-INF目录下就ok了。
上面是我以前的一个经验,今天仔细研究了一下,发现自己掉进了 经验主义的圈套。
这个经验是这样积累起来的:在刚开始尝试使用eclipse的时候,用的是3.0和3.1Mx系列,当时 不知道osgi是个什么东西 :$ 创建的几个插件,都没有创建osgi bundle manifest。也就是说, 只有plugin.xml,而没有META-INF/MANIFEST.MF文件的。但是在运行期,eclipse会自动的 从plugin.xml当中读取信息,生成临时的MANIFEST.MF文件,放在 runtime的 configuration/org.eclipse.osgi/manifests 目录下。而生成这个MANIFEST.MF文件,是 通过 PluginConverterImpl 这个类来实现的,在它的 isValidPackageName 方法中,所有的 META-INF或者以META-INF开头的目录,都不会被自动的export出去,从而在临时生成的MANIFEST.MF 文件中,永远不会有META-INF目录的export。
当时刚开始接触eclipse和osgi,根本不知道自己当时最佳的解决方案就是创建一个 bundle manifest, 然后在其中将META-INF目录export出来。而是通过盲目的修改代码来绕过这个弯。后来这个弯绕过去了, 留给我的经验就是:META-INF这个目录,是插件独享的,别的插件不允许访问的。
于是,在前几天,当spring.jar当中的几个META-INF目录下的文件访问不了时,我也认为这个经验有用, 差点就去改eclipse的代码了。幸好尝试了一下,把spring.jar所在的插件中,将META-INF目录共享出来, 居然就好了。仔细查了一下,发现屏蔽META-INF的代码只出现在PluginConverterImpl这个类当中。 回头想了想,终于明白自己这次是掉在经验主义的坑里面了。
经验主义害死人啊。唉。
主站: http://blogsite.3322.org/
SUN Tech 2006第一天
会场设在最拥堵的北四环中路,赶到会场已经接近9点,匆忙报道之后,
第一感觉是不像去年那么大的场面了,只有两个会场,而且很奇怪的是,
参展的其他厂商,也只有AMD一家,显得有点冷清。
James Gosling又一次出现了,不过做的演讲并没有很多新鲜的东西,值得
注意的倒是Ruby on Rails出现在他的演讲内容当中,这大概也与JDK未来版本
要支持动态语言,以及SUN把jruby的两个人招进去有一系列的关系。随后有
一个SUN的技术展示,其中有意思的一个是 SPOT(Small Programmable Object Tech),
有点象《少数派报告》当中阿汤哥用的手套,用手套来当做鼠标一样的在
空中使用,很是不错。
随后一整天的演讲,给我的感觉,重头戏是Netbeans,其次是Ajax,再其次是
Java EE 5。感觉今天一系列的活动都与Netbeans有关,Ajax和Java EE 5包括
Java ME,都时不时的与Netbeans挂上钩。从今天被Netbeans洗脑的结果来看,
Netbeans现在确实越来越好用,功能也越来越强大。Eclipse如果按照现在的发展
速度,确实有些危险。不过,从另一个角度看,有竞争才能促进发展,也不算是件
坏事。
其他方面的收获,包括对JAVA SE 7 的一些特性了解,Java EE 5的一些介绍,以及
关于Java EE 5的参考实现 GlassFish的介绍,顺便还听了一些Java ME的东西,也
有些意思,可惜暂时用不上。
今天有一些感触:
好的技术,如果没有好的工具支持,也是很难生存的。这就联想到我们自己的IMP框架,
过去将重点放在framework和engine上,而对于designer的投入则远远不够。这样造成的现
象就是限制了开发效率,从而没有能够最大的发挥IMP框架的作用。
Netbeans虽然好用,也能够从一定程度上提高生产力。但是我还是那种观点,看上去
很美的代码生成机制,往往只是节省了“创建”的时间成本,而对于“修改”的效
率提高,却不一定有帮助。
JSF感觉还是沿袭了Struts的东西太多,就算通过Ajax的render,感觉还是不能算非常好的
Component Framework。还是不如Echo2 ;)
回家的时候,正赶上北四环的拥堵高峰,回到家已经很晚了,写的很零乱,不知道明天
会不会有什么大的收获。反正今天感觉就是被洗了一天的脑,害得我都想装一个Netbeans
来玩玩了。
SUN Tech 2006第二天
又经历了痛苦的2个小时到达了会场,今天的SUN公司主题居然是“开源的好处”,
重点提出开源最终有利于开源者,号称SUN从OpenSaloris的开源当中获得了很多
好处。不知道前几年大家强烈要求SUN 开源的时候,是不是也是这种论调。也懒得
去查以前的新闻了,不过总算逐渐有将Java开源的打算了,而且SUN号称要将所有的
软件开源,这对于open source社区,也算是件好事。
今天总的来说内容不是很丰富,这一次的Tech Day,总共也就是几个人在讲,一个人
讲好几场,这在以前的Tech Day是很少出现的。
今天的收获如下:
听了一场关于swing和美化swing的讲座,感觉SUN对于java的投入,比以前更大了。
以前,关于swing的微词很多,也有很多不好用的反馈,但是在几个jdk版本的发布过
程当中都没有改进,最典型的莫过于ContentPane,"Lastly, after seven years, we've made
jFrame.add equivalent to jFrame.getContentPane().add()."。在JDK5之后,可以感觉到SUN
对于用户社区的反馈开始逐渐重视。对于swing当中的功能较弱的问题,专门整了一个
swinglab来解决。其中还有个swingx的子项目,也有不少的swing功能增强组件可以用。
Apache Derby,也就是原来IBM收购informix时收购到的Cloudscape,现在又有了一个新
名字叫 Java DB,而且会随着JDK6一起发布。Java DB的功能比较完善,据说性能也不
错,号称支持300G的数据量没有问题。如果这样的话,不仅hsql可以抛掉,而且说不定
mysql也可以不用了。我现在也很喜欢这种既可以embed,又可以做为cs的数据库,现在
做rails的就是用sqlite,感觉也够用了。Java DB还有个很强的功能是,可以将数据打包为
jar文件,做为只读的db,放在光盘或者其他地方,做为备份和还原,以及做demo应用放
在光盘上,应该都有很大的用处。
JDK for script language. 在JDK6当中,已经支持 ruby和javascript两种脚本语言了。
功能上感觉有点象BSF,但是由于随着JDK6一起发布,所以以后影响力会更大。
而且,做演讲的人也提到,jruby的开发者进入SUN公司,恐怕不只是用ScriptEngine
支持script语言这么简单。今天体验了一下印度人说英语,确实是强...
另外还听了一下 MBean,Concurrence方面的东西,收获也有一些。例如在JDK6当中,
MBeanServer缺省就启动了,而不像JDK5里,需要用一个命令行参数才能启动。
两天下来,感觉这一期的SUN Tech Day和以往最大的区别就是,这一期完全是被
SUN自己垄断了,没有别的公司演讲, 不讨论别的公司的内容,没有别的公司参展。
言必称 NetBeans,操作系统必称 Solaris。从一个角度来看,SUN公司确实 积极的
参与到了开源社区当中,并且比以前更加接近用户,也更积极的响应用户的request。
这一点,从Netbeans的进展神速, 到JDK最近几个版本的新特性增加速度,都比JDK5
以前要好很多。这对于Java的进一步发展,可以说是一件好事。从另一个 角度来看,
这一届Tech Day表现出来的情况,不知道是应该说SUN更加有了自主意识,还是应该说
SUN确实没有很好的组织 这次会议。从参加演讲的人员,到展厅的布置来看,
都不如往届。不知道是不是SUN财务紧张造成的,hoho.
又花了两个小时才从首堵北京的北四环中路到了家,感觉今年的Tech Day,
最大的收获是被洗脑了,也体会到了目前最火爆的Ajax是如何的火爆。
主站:
http://blogsite.3322.org/jspwiki/