访问网关的Servlet和CGI的区别

Cognos的访问网关有很多种方式,常见的有:
http://server:port/ibmcognos/cgi-bin/cognos.cgi
http://server:port/p2pd/servlet/dispatch
http://server:port/ServletGateway/servlet/Gateway
cgi和servlet的访问区别在?请看下文详解:
1、servlet效率相对cgi较高
  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

2、概括来讲,Servlet可以完成和CGI相同的功能
  CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。
  Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
  Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。
  Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:
  ·客户端发送请求至服务器端;
  ·服务器将请求信息发送至Servlet;
  ·Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求;
  ·服务器将响应返回给客户端。

3、Servlet的优势
  Java Servlet提供了许多优势:
  ·Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。
  ·采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质。
  ·Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中。
  ·可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。
  ·Servlet可被链接(chain)。一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。
  ·采用Servlet Tag技术,可以在HTML页面中动态调用Servlet。
  ·Servlet API与协议无关。它并不对传递它的协议有任何假设。
  ·像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势。

企业cognos集群访问入口一般为 http://server:port/ServletGateway/servlet/Gateway 形式,但有时不太稳定,因此其它入口方式作为备用
声明:以上内容部分从其他网站转载。
参与5

3 同行回答

Spring Spring 商业智能工程师 广发银行
http://server:port/ServletGateway/servlet/Gateway这里的ServletGateway是在cognos的config里面打包默认名字,在发布到weblogic等应用服务器上的时候可以改成其他名字吧,如果是两个servlet网关在weblogic上做集群的话,ServletGateway包里面要修改其他配置吗?比如webcontent...显示全部

http://server:port/ServletGateway/servlet/Gateway

这里的ServletGateway是在cognos的config里面打包默认名字,在发布到weblogic等应用服务器上的时候可以改成其他名字吧,如果是两个servlet网关在weblogic上做集群的话,ServletGateway包里面要修改其他配置吗?比如webcontent\WEB-INF\web.xml有如下说明


               

这里要修改吗?要怎么修改呢

收起
银行 · 2016-08-22
浏览838
奥利弗 奥利弗 数据库开发工程师 北纬股份有限公司
不明觉厉:victory:显示全部
不明觉厉:victory: 收起
互联网服务 · 2014-04-03
浏览753
Aaron_liu Aaron_liu 软件架构设计师 国际商业机器大连分公司
:)不明觉历显示全部
:)不明觉历 收起
IT咨询服务 · 2014-04-03
浏览753

提问者

贝克汉姆
贝克汉姆 1 3 3
软件开发工程师 IBM
评论3895

相关问题

相关资料

问题状态

  • 发布时间:2014-04-03
  • 关注会员:2 人
  • 问题浏览:5289
  • 最近回答:2016-08-22
  • X社区推广