嵌入式jetty flex blazeds spring 程序讨论(tomcat)

  网上有一篇文章分析了Google为什么选择了jetty作为其云计算的web容器,这篇文.嵌入式jetty flex blazeds spring 程序讨论(tomcat) .章很容易找到,主要观点认为,jetty足够轻巧,占用资源少,执行速度快。更重要的一点是jetty可以作为嵌入式的web容器使用(当前tomcat也可以作为嵌入式的容器使用,但是使用方式比较复杂,效率也没有jetty高)。与tomcat相比,jetty在功能上并不完善,有时你会认为jetty会给你的编程带来很多不便。所以我们要认真考虑使用哪种容器。下面的内容提到了使用tomcat和jetty交叉使用编写flex程序,这主要考虑到使用tomcat会使编程过程容易,而使用jetty可以提供一个灵便的嵌入式容器。(jetty没有成型的官方文档,这很郁闷)

  想法是这样的,我希望编写一组服务,这组服务需要一个图形显示的界面,当然可以考虑使用javax的swing组件编写GUI,但是swing其自身的复杂度比较高,同时其执行效率也比较低,所以可以考虑当前比较流行的flex作为GUI显示。使用flex比较优秀的地方在于,可以通过浏览器访问服务,同时flex也可以编写桌面形式的GUI。Flex的语法很简单,并且也采用java的风格,所以选择flex做为java服务的GUI,很明显是一个不错的选择。但是flex与远程服务端通信需要使用http服务容器,这时可选的容器很多,tomcat是一个比较优秀的容器,以前也经常使用,所以tomcat一般是首选。但是,我更希望是我的服务的配置更加简单,并不期望用户要多了解服务容器,服务程序能像普通的应用程序一样,直接双击就能启动执行服务,如果使用tomcat,就必须要求所以的服务端组件先安装tomcat,然后将服务发布到tomcat上。由于服务程序是面向网格和云计算的,要求所有使用服务的客户都安装tomcat并理解tomcat的配置是不实际的。此时,jetty就派上用场了,jetty是一种可以嵌入式的web容器,轻量级,占用资源少,使用简便。所以使用jetty作为flex的http容器更合理。另外,一般使用flex与java结合开发,会考虑使用spring框架技术,这样简化了很多处理。

  如果,使用flex+spring方式进行应用服务的开发,必然考虑使用Adobe公司提供的blazeds通信组件,blazeds能够对远程方法调用(RMI)或远程对象进行封装,简化了flex与java程序间的复杂通信问题。尽管spring和blazeds对spring支持的非常好,但是他们与jetty的结合却不是很令人乐观。我查阅了大量资料,发现很少有人使用blazeds与jetty结合,甚至有人断言blazeds根本不适合与jetty一起运行。这使我的初期想法陷入了困境。经过我不断测试和调试,最终想出了一个办法,可以绕过一些问题,最终达到我们的目的。

  首先给出一个在flex+spring+blazeds+tomcat的程序网址,这个程序的测试是我去年写的,你可以查看网址:

  http://blog.sina.com.cn/s/blog_616e189f0100nbs4.ht ml

  您在查看下面的内容时,最好理解了上面网页中提到的程序,因为,下面的程序与上面的程序思路和原理都是相同的,我们不想花费更多的时间在细节上。

  下面我们就描述一下flex+spring+blazeds+jetty(嵌入式jetty)的一个测试程序

  文档结构:

  

  实际上,在tomcat和jetty中配置服务时注意的是:

  1. Jetty不识别spring与blazeds相关的标记,你必须使用xml配置的方式来配置服务。

  2. 在flex中的内容修改后,你必须先关闭jetty服务,才能将修改内容反馈到jetty,tomcat则没这个必要,主要是tomcat支持运行时动态更改。

  你可以在tomcat下编写程序,然后再转移到jetty下执行。