Tomcat V6 Examples移植到Apusic V5.1

目标:将Tomcat V6的的例子Examples移植到Apusic V5.1上

 

术语:
Tomcat:只提供了WEB容器的开源服务器;
Apusic:提供了完整的J2EE支持的商用服务器;
%TOMCAT_HOME%:Tomcat安装目录
%APUSIC_HOME%:Apusic安装目录

准备:
http://java.sun.com下载JDK V1.5以上的版本并安装,确认JAVA_HOME正确指向装好的JDK目录;
http://tomcat.apache.org下载Tomcat V6以上的版本并安装;
http://www.apusic.com下载Apusic V5.1以上的版本并安装;

 

过程:
1. 执行%TOMCAT_HOME%/bin/startup.bat,访问例子Examples:http://localhost:8080/jsp,确认Tomcat和Examples成功安装,在窗口模式下按Ctrl+C停止服务器;
2. 执行%APUSIC_HOME%/domains/mydomain/bin/startapusic.cmd,访问主页:http://localhost:6888/,确认Apusic已经成功安装,在窗口模式下按Ctrl+C停止服务器(记住因为是批处理还需要按Y确认);
3. 找到%TOMCAT_HOME%/webapps/examples目录,将examples目录拷贝到%APUSIC_HOME%/domains/mydomain/applications/下,重新启动Apusic,稍等一会待Apusic自动部署,应用报错:java.lang.NoClassDefFoundError: org/apache/catalina/CometProcessor,这个错误是因为应用中使用了Tomcat内核的API(非J2EE规范),虽然编写这样的应用违背J2EE规范(JBoss和Resin也这样做过),但是既然应用已经这样使用必须想办法支持。
4. 一种方法是找出应用代码中的部分进行修改,很遗憾我没有找到;另一种就是把那个需要引用的类所在的catalina.jar文件拷贝到%APUSIC_HOME%/domains/mydomain/lib目录下,先停止Apusic应用服务器,然后重新启动。
5. 稍等一下,Apusic自动部署了examples应用,现在访问例子:http://localhost:6888/examples/
6. 哇,成功了。就这么简单就可以完成Tomcat应用到Apusic应用的移植。
总结:Apusic是个符合J2EE规范的应用服务器,在Tomcat上开发的应用都可以非常简单的移植到Apusic上。并且Apusic同样支持WAR包(WEB模块)的直接部署。

备注:
0. 访问http://localhost:6888/examples/jsp/jsp2/el/basic-arithmetic.jsp出错了,为什么?
 因为J2EE规范中除0是必须抛出错误,而Tomcat则没有遵守规范操作,请开发者注意。
 当然,完美主义者还是希望看到正常显示的页面,那么请把这个文件中的3/0替换成3/4就可以了。
1. 打开examples应用的lib目录,会发现里面还有两个jar文件:jstl.jar和standard.jar,这是支持Standard Library用的,其实Apusic已经自带无须他们,现在停止Apusic服务器,再删除这两个JAR包,然后重新启动Apusic服务器,应用果然可以正常运行;
2. 移植时把catalina.jar全部拷过来了,里面包含了Tomcat对WEB容器的部分实现,那么肯定会疑虑系统到底在调用谁的实现呢?为了确认我们可以将Apusic服务器停止,用WINRAR打开catalina.jar文件,把里面与Comet无关的class全部删除,再重新启动Apusic服务器,应用仍然可以正常运行,现在没有疑虑了;
3. 为什么每次都需要停止服务器才能操作lib里面的JAR文件呢,难道Apusic不支持热部署?
Apusic当然支持热部署,将Examples直接拷贝到applications目录下其实就是热部署,你甚至可以在Apusic启动完成后再执行拷贝也可以。但是应用一旦被加载进应用服务器后,所有的jar文件全部会被锁定,以便保证应用的完整性,所以修改lib下的jar文件必须将应用服务器重新启动。
4. 建议不要部署压缩文件,而是部署将应用展开后的目录,因为对于压缩文件应用服务器启动时还需要一个解压过程,降低启动速度消耗系统资源;
5. 如何在Apusic上给WEB模块配置上下文呢?
 现在打开%APUSIC_HOME%/domains/mydomain/config/server.xml可以看到新部署的examples的说明: 
<application name="examples" base="applications/examples" start="auto"/>,因为examples不是标准的J2EE应用,导致WEB模块中没有指定上下文,因此可以使用name来指定上下文,比如:
<application name="apusic-examples" base="applications/examples" start="auto"/>就把应用的上下文换成apusic-examples了,访问自然也变成了http://localhost:6888/apusic-examples,简单吧!

你可能感兴趣的:(tomcat,应用服务器,jsp,Web,Comet)