该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-12
将 webdefault.xml 中的: <init-param> <param-name>jspCompilerPlugin</param-name> <param-value>org.apache.jasper.compiler.JikesJavaCompilerWrapper</param-value> </init-param> 改为: <init-param> <param-name>compiler</param-name> <param-value>jikes</param-value> </init-param> 很显然这里缺省的 compiler 是 modern,就是 tools.jar 中的编译器。 需要注意的是由于 jikes for Windows 没有 -encoding 选项,因此编译 JSP 时会出错。所以上述方法只能在 Linux 上使用。解决起来也很简单,一种方法是编译 jikes for Windows(可以用 MinGW 编译),与 iconv for Windows 连接,使 jikes for Windows 获得 -encoding 选项。另一种方法难度小一点,就是修改 Ant 的代码,使得对于 jikes 不使用 -encoding 选项,然后给 jikes 加一个 wrapper,使用我以前写的那个 wrapper 中相同的方法。 在 Jetty 启动时需要将 rt.jar 加入 classpath,方法是修改 Jetty 的启动脚本 bin/jetty.sh 在: [ -f $JAVA_HOME/lib/tools.jar ] && CP="$CP$PATH_SEPARATOR$JAVA_HOME/lib/tools.ja r" 后再加一句: [ -f $JAVA_HOME/lib/rt.jar ] && CP="$CP$PATH_SEPARATOR$JAVA_HOME/lib/rt.jar" CLASSPATH="$CP" 其中 $JAVA_HOME 是你安装的 JRE 的路径,例如: /usr/local/j2sdk1.4.1/jre 对于 IBM JRE/JDK 1.4,rt.jar 要换成 core.jar。 关于在 Tomcat 中如何使用 jikes,请看: http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-14
jikes稳定性还不够好,我遇到好几次崩溃了。
|
|
返回顶楼 | |
发表时间:2003-10-14
我们这里还不错,从来没有遇到崩溃的现象。Jikes 编译速度要比 tools.jar 快多了。我们用的是
Jetty 4.2.9+Jikes 1.18+IBM JRE 1.4.1+Redhat 7.x/Redhat Adv Server 2.1 |
|
返回顶楼 | |
发表时间:2003-10-14
我在idea里面用jikes编译,有时候就会crash.
不过用的是windows版本的1.1.8可能和特定版本有关系。 |
|
返回顶楼 | |
发表时间:2003-11-29
jetty网站上说,要使用jikes,除了修改webdefault.xml,还要在每个webapplication描述中增加如下内容:
5. For each web application that you add to /etc/jetty.xml, reference the webdefault.xml file as the third argument passed to the addWebApplication(); method. For example: <Call name="addWebApplication"> <Arg>/fooapp/*</Arg> <Arg>webapps/fooapp/</Arg> ========> <Arg>etc/webdefault.xml/</Arg> </Call> 我在增加第3个参数时,就是etc/webdefault.xml时,jetty无法正常启动 ,把这一行隐掉,仅修改webdefault.xml,jetty还是在工作,在local/temp目录下的work目录,中看不出是jikes还是javac产生了类, 和中文相关参数是乱码。 继续把webdefault.xml中关于jasper的参数省略,就是用javac,然后重启jetty,发现新编译中的jsp_class中和中文相关参数内容也是乱码。 有3个问题: 1 为什么每次重起jetty,jsp页面要重新compile 2 上述情况下如何正确使用jikes 3 如何使用javac对jsp编译时encode,(很奇怪不编码实际使用时也正常) |
|
返回顶楼 | |
发表时间:2003-11-29
zingers 写道 1 为什么每次重起jetty,jsp页面要重新compile
2 上述情况下如何正确使用jikes 3 如何使用javac对jsp编译时encode,(很奇怪不编码实际使用时也正常) 1、不知道,需要 Jetty 的开发人员来解决。 2、使用 webdefault.xml 的方法是: <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set> 也可以不加前面的: <SystemProperty name="jetty.home" default="."/> 直接使用绝对路径。 3、Jetty 缺省情况下使用 tools.jar 来编译,不需任何配置就可以支持 JSP 页面中的 encoding 了。当配置使用 jikes 来编译时只有在 Linux/Unix 上支持 encoding,因为 jikes 的 Windows 版不支持字符集转换。 |
|
返回顶楼 | |
发表时间:2003-11-29
thanks dlee
系统win2000+jetty4.21+ant已经能够使用jikes作为jasper2编译器,可惜因为jikes没有-encoding而无法继续下去 我还是在windows下先使用javac吧,以后有机会再到linux上去使用。 dlee, 你说的把jsp页面打成jar包来提高jetty运行速度,是不是把javac/jikes编译后的类(就是临时work目录下的)打成包,还是用其它方法? |
|
返回顶楼 | |
发表时间:2003-11-29
zingers 写道 dlee, 你说的把jsp页面打成jar包来提高jetty运行速度,是不是把javac/jikes编译后的类(就是临时work目录下的)打成包,还是用其它方法?
其实就是 JSP 页面的预编译。把所有 JSP 编译后得到的 .class 打包成一个 jar,放在 CLASSPATH 中。然后在 web.xml 中分别设置为 servlet,再映射到某个 xxx.jsp 的 URL 上。 原理很简单,不过我没做过,因为对于我们的应用必要性不大。 |
|
返回顶楼 | |
发表时间:2003-11-29
上次就看到你说你们的表现层早不用JSP了,那你们现在如何处理表现层呢,velocity,xml,or others?
|
|
返回顶楼 | |
发表时间:2003-11-29
zingers 写道 上次就看到你说你们的表现层早不用JSP了,那你们现在如何处理表现层呢,velocity,xml,or others?
应该是属于 XML 吧。我们直接把前台需要的数据以 XML 格式通过 XMLHTTP 接口发给浏览器,由浏览器用 JavaScript 来做呈现(通过几层 DOM 树的映射和自定义的映射逻辑将 XML DOM 中的数据映射到 HTML DOM 的页面显示控件),所以不需要在服务器端实现 MVC 架构。服务器端全部都是用 Servlet 实现的,几乎不写 JSP。 |
|
返回顶楼 | |