综述:JSWDK、Tomcat由于运行所需的资源较少,以及自身的易用性,正受到越来越多的JSP学习者的青睐。
但在整个JSP世界中它们并不是一支独秀,支持JSP的服务器软件有很多,它们主要应用于商业领域,其中最重要的要属Allaire Jrun、IBM Websphere以及BEA Weblogic。
一、Allaire Jrun
Allaire公司的JRun是一个具有最广阔适用性的Java引擎,用于开发及实施由Java Servlets(JSP)和JavaServer Pages编写的服务器端Java应用。
JRun是第一个完全支持JSP 1.0 规格书的商业化产品,目前共有3个版本,全球有超过80,000名开发人员使用Jrun,以在他们已有的Web服务器上添加服务器端Java的功能。其中Web服务器包括了Microsoft IIS、Netscape Enterprise Server,Apache等。 JSP是一种强大的服务器端技术,它是用于创建复杂Web应用的一整套快速应用开发系统。
详细产品信息
JRun是开发实施服务器端Java的先进引擎。我们可以使用Jrun来运行Java Servlets。运行Java Servlets有两种方法,扩展自己的Web 服务器或是使用内置JRun的Web服务器。通过在整个环境中将servlets作为一个可扩展的、完整定义过的Java部件模型来使用,我们就可以更加方便、快速的开发、实施复杂的应用,维护起来也更加经济。
JRun可以使你开始开发并测试Java应用程序。它最多能接受5个并发的连接(标准版)并且:
1.包括全部Java Servlet API
2.支持JavaServer Pages(JSP)
3.支持所有主要的Web servers和计算机平台
4.JRun Pro能够在生产环境下承受大访问量的负载,帮助你实施应用、服务或Web站点(包括内联网)。JRun Pro 支持无限量并发式连接
5.运行多个Java虚拟机,包括多个并发的Java虚拟机(JVM)。
6.提供一个远程管理applet以及一个远程可再分布式的管理applet。
7.JRun Pro Unlimited包括了JRun Pro的所有功能,除此以外,还可以运行无限量的、并发的JVM。
JRun 功能介绍
利用Java技术,你可以在现有的Web server之上添加服务器端的Java功能,JRun所支持的Web服务器包括Microsoft IIS和Personal Web Server,Netscape的Enterprise或FastTrack,Apache, O'Reilly公司的WebSite以及StarNine公司的WebSTAR。
JRun依靠其内置的JRun Web Server可以单独运行。使用服务器端Java,用户可以开发出复杂的商业应用系统。最重要的一点是,由于servlets的平台独立性,以及更加简单的开发、更快速的实施、更经济的维护成本,使它成为CGI(Common Gateway Interface)或Perl scripts的极佳的替代产品。
另外,JRun 2.3可以全面实施最新Java Servlet API。同时,JRun还可以利用Java Web Server中的许多先进功能。一些JRun2.3的重要功能列举如下:
1.全面支持Java Servlet API version2.1
2.全面支持JavaServer Pages(JSP)1.0 draft spec
3.动态 taglets
4.提供现成模板
5.页面编辑
6.dynamic-servlet重载
7.Servlet-initialization属性
8.Servlet 串联及过滤
9.多个宿主(虚拟主机)支持
10. tag支持
11.任务跟踪
12.安装向导
13.复杂的Swing-based管理应用
14.100%纯粹Java以及完全跨平台
15.可运行于任何Java Virtual Machine
16.最多运行于5台Java Virtual machine(JRun Pro)
17.可运行于无限多个Java Virtual machine(JRun Pro Unlimited)
18.远程管理(JRun Pro)
技术优势
Java Servlets是由Java Servlet API--Java平台的一部分,编写成的独立跨平台的服务器端程序。Java Servlets拥有"一次编写,随处运行"的强大力量,同时具备网络传递安全性以及对服务器端应用提供了良好伸缩性。Servlets可以替代传统的由Perl,C/C++或其他语言编写的服务器端应用及扩展程序。用户将Servlet作为一个可扩展的,定义良好的跨平台环境来运用,能够更加方便的开发、快速实施服务器端复杂的应用,并节省维护成本。(可以在廉价的Windows NT机器上部署servlets)
使用现有的成熟的服务器技术,例如Web 服务器中结合servlets,当编写复杂的应用时,就可以避免特定服务器配置中平台的局限性及复杂性。使用Servlets,开发人员就不必再顾虑服务器的内部工作方式。servlets API内在的classes能够控制Form 数据,server header,cookies等所有资源。
现有服务器端应用和servlets的最大区别就是性能。在服务器中运行一个独立的JVM,servlet一旦被呼叫即被载入。直到servlets改变时才会被再次载入。无须重新启动服务器或应用,一个被修改过的servlet就可以被自动加载。由于servlet永远驻留在内存中,它的加载速度极快。静态或永久信息可以通过多个激活的servlet 达到共享,并且允许多个用户之间共享信息。Servelet也是模块化的,它们即可以单独的完成一项特定任务,同时也可以结合在一起工作。 servlets彼此可以互相对话。
JRun支持的Web Server :
1.Microsoft's Internet Information Server (IIS) and Personal Web Server (PWS)
2.Netscape's Enterprise and FastTrack Servers
3.Apache
4.'Reilly's WebSite Pro
5.StarNine's WebSTAR
6.Novell Netware 5 (Novonyx)
二、Websphere
WebSphere是互连网基础架构软件。它可以帮助企业实现下一代电子商务应用的开发、部署和集成,如B2B电子商务方面的应用。通过企业级事务处理,WebSphere可以从单一Web发布支持所有的商务应用。WebSphere改变了企业自身与客户、合作伙伴以及企业员工之间的关系管理方式。
有关 Websphere 的常见问题解答
问:如何使Web应用程序挑出不属于servlet或EJB的新类文件?
答:在配置Web应用程序时,指定包含servlet及其非servlet Java 组件的应用程序类路径。类加载程序监视应用程序类路径,一旦检测到已经对加载的 servlet进行了更新,它就会重新加载该应用程序类路径中的所有Java组件。在WebSphere 3管理控制台中,可使用"拓扑(topology)"标签,访问您的Web应用程序,例如,default_app。在"高级 (advanced)"标签中指定类路径(可重新加载的类路径)。这些类应该物理地驻留在这里指定的路径中。
问:在我要调用jar文件中的一个类时,为什么发生ClassNotFound异常错误?
答:在您要调用位于jar文件中的一个类时,请确保在类路径中包括jar文件的完整路径。
问:在WebSphere中模型和克隆的概念是什么?
答:在您想要创建同WebSphere Application Server中部署的应用程序几乎完全相同的副本时,您可创建一个称为模型的应用程序模板。如果您部署了这些应用程序副本,这些副本则称为克隆。此技巧用于服务器的工作量管理。
问:是否可以清除我的WebSphere服务器上的日志文件而无需停止应用程序服务器?
答:不可以,您不能在应用程序服务器运行期间删除或编辑日志文件。如果您这样做,则应用程序服务器将停止写入日志。AIX和Solaris平台允许您编辑或删除日志文件,而不会出现任何错误消息,然而应用程序服务器将停止使用日志文件。Windows NT平台将给予您一条消息:此文件正在被另一个进程使用。清除日志的推荐方法是先停止应用程序服务器,然后删除或者重命名或移动日志并重新启动应用程序服务器。如果在应用程序服务器启动时日志文件不存在,它将创建这些日志文件。
问:应该在何处指定仅在服务器启动时加载一次的类?
答:当您安装此产品时,将自动设置应用程序服务器类路径。类路径的缺省设置包含所有的应用程序服务器API(AS_install_root\lib 目录中的JAR文件)。在应用程序服务器启动时,系统类加载程序将自动加载应用程序服务器类路径中的类。这些类不能重新加载。您也可以通过在应用程序服务器"常规 (general)"页上的命令行参数中指定类路径将类路径传递到应用程序服务器的JVM中。
问:因为我的DB2用户标识和口令与在WebSphere安装期间所指定的不同,所以我的WebSphere应用程序服务器无法启动。怎样才能在不重新安装WebSphere的情况下更改用户标识和口令?
答:您可以通过更改admin.config文件中的以下各行来更改WebSphere应用程序服务器中数据库的用户标识和口令:
com.ibm.ejs.sm.adminServer.dbUser=db2userid
com.ibm.ejs.sm.adminServer.dbPassword=db2password
或者,您可以在数据库中创建另一个用户,使其用户标识和口令与WebSphere中的相同。
问:如何保护一个HTML页(假定安全已经配置)?
答:请执行以下步骤:
1.创建一个企业应用程序。
2.将权限分配给企业应用程序(各组分别具有何种访问权限)。
3.创建一个资源,即HTML文件的URI。
4.将资源添加到企业应用程序中。
5.为此资源指定安全映射。
问:在我要访问刚创建的JSP时为什么会出现错误?
答:请确保您已正确地指定了Web应用程序路径(您在浏览器中所键入的内容)和文件系统路径(Web应用程序查找的地方)。文件系统路径是文档根目录和Web应用程序(处于高级之下)的类路径。文档根目录控制可在何处找到HTML和JSP文件。类路径控制servlet(如果可以按类名加载servlet的话)。
问:WebSphere Connection Manager是否支持数据库存储过程?
答:支持,WebSphere Application Server支持JDBC模型。此模型提供优化数据库访问的功能。利用数据库存储过程是其中的功能之一。WebSphere Application Server在ConnectionManager中通过提供com.ibm.db.CallableStatement 类访问存储过程而扩展了JDBC的功能。
问:WebSphere Application Server用来存储用户概要信息的数据库表的名称是什么?
答:此表的名称是User_Profile_Table,位于WAS数据库之中。
问:使用WebSphere Connect Manager(数据源)访问数据库并执行一个servlet时,我为什么会得到错误SQL1046N:授权 ID 无效?
答:有几种原因可能导致此错误发生:
1.用户标识未授权与数据库进行连接。
2.连接指定的用户标识未授权执行指定的功能。
3."IBM WS AdminServer"服务"Startup - Log on as"参数被定义为"System Account"或用户没有适当权限的"This Account"。
4.在servlet或EJB实现getConnection方法而不传递用户标识和口令时会经历此错误的结果。因为getConnection方法将使用在实现servlet或EJB例程的环境中定义的用户标识和口令。
要解决此错误:
1.指定授权的用户标识和口令以连接到数据库。
2.确保或赋予该用户标识权限以执行特定的功能。
3.如果您在将用户标识和口令传递给getConnection方法,请确保正在传递正确值,在类中定义变量,变量是通过ResourceBundle属性文件传递的,等等。
4.如果您不是在将用户标识和口令传递给getConnection方法,请确保"IBM WS AdminServer"服务"Startup - Log on as"参数指定了一个授权用户。
问:如何控制WebSphere所使用的端口?
答:WebSphere管理服务器使用两个端口:引导程序端口和LSD端口。缺省情况下,引导程序端口为900,LSD端口为9000。如果您希望在UNIX上不以root用户的身份来运行WebSphere,则必需更改引导程序端口。如果您遇到一个与端口 9000 冲突的端口,则您必须更改LSD端口。编辑admin.config 文件并添加下面这些属性,可以控制各端口:com.ibm.ejs.sm.adminServer.lsdPort=9005(缺省值为 9000)com.ibm.ejs.sm.adminServer.bootstrapPort=9002(缺省值为 900)
问:使用WebSphere Administration控制台时,如何避免使会话无效?
答:在会话管理器(在servlet引擎中)中,单击"时间间隔 (intervals)"标签。在"无效时间"字段中输入值"-1"。这将确保不会使会话无效。
问:WebSphere Application Server如何与Web服务器进行通信?
答:WebSphere Application Server使用OSE (Open Servlet Engine) 与Web服务器进行通信。
问:如何更改WebSphere的类路径?
答:您可以通过WebSphere Application Server的属性表向其类路径进行添加。要替换类路径,请单?quot;常规 (general)"标签上的"环境 (environment)"字段,以启动属性环境编辑器。在此编辑器中,更改此类路径或其他环境变量。要添加类路径,请在"命令行参数(command line arguments)"字段中输入类路径。
问:启动WebSphere时,为什么会得到错误:端口9000正在被使用?
答:端口9000是管理服务器位置服务守候进程的缺省端口。许多系统资源(包括AIXX-windows管理器)也使用端口9000。如果您在AIX上执行./startupServer.sh命令时看到错误消息"端口9000正在被使用 - 选择另一个端口",这时管理服务器进程不能启动,因为端口9000正在被AIX X-windows 管理器使用。通过在管理服务器命令行指定-lsdPort选项更改位置服务守候进程监听的端口,或在admin.config文件(在Windows NT上位于目录\bin中;在UNIX上位于/bin中)中设置com.ibm.ejs.sm.adminServer.lsdPort属性。
问:我想将WAS管理信息中心库存储在另一台机器上的Oracle数据库中。在将要安装WebSphere Application Server的机器中我需要安装什么数据库软件?
答:您需要在将要安装WebSphere Application Server的机器上安装Oracle客户端,并将Oracle客户端配置为可与远程Oracle服务器进行通信。在WebSphere安装过程中,您在本地机器上指定Oracle客户端主目录的路径(例如,x:\Oracle\Ora8i)。
问:将EJB部署到WebSphere容器中时,如何解决NoClassDefFound异常错误?
答:NoClassDefFound异常错误可表明部署工具未能找到部署或配置到WebSphere中EJB的一个或多个支持类。要解决此异常错误,请将带有jar名称的完整jar文件路径添加或附加到带有应用程序服务器命令行-classpath参数的应用程序服务器类路径中。
问:如果修改了一个servlet,是否需要重新启动WebSphere和Web服务器?
答:不需要。您只要对其进行编译,WebSphere(2.02 版本或更高版本)将能够自动加载新的类文件。
有关Websphere Studio的常见问题解答
问:是否可以使用WebSphere Studio JavaBean向导从一个EJB中创建servlet、输出JSP和输入HTML?
答: 您应该在VisualAge for Java环境中为EJB创建一个access bean。当创建 access bean时,请选择一个Java bean wrapper。现在您就可以在WebSphere Studio JavaBean向导中使用该access bean来创建servlet、输出JSP和输入 HTML。如果在您的EJB开发中没有使用VisualAge for Java环境,您就必须编写一个存取EJB的客户端JavaBean,并在WebSphere Studio中使用该JavaBean。
问:我有一个可以运行在WebSphere测试环境中的.jsp文件,该文件为什么不能在WebSphere Application Server中运行?
答:原因是WebSphere Application Server配置为与JSP 1.0一起运行,WebSphere Studio配置为生成0.91版本的JSP。要解决该问题,请更改在 WebSphere Studio中生成的JSP版本:右击在WebSphere Studio中您所工作的项目在属性下面,选择高级标签。在属性列表中,选择JSP,并选择版本 1.0。
问:如何在WebSphere Studio中创建一个定制发布阶段?
答:在工具栏中突出显示"projects",并从下拉菜单中选择"customize publishing stage"。在此窗口中输入阶段名称,并选择"Add"。
问:当我将bean(class 或 jar)文件拖放到WebSphere Studio页面设计器中时,应该会弹出一个JSP:useBean 对话框。但每次都显示小应用程序对话框,如何显示JSP:useBean对话框?
答:在WebSphere Studio页面设计器工具栏中选择工具,然后选择选项。在选项对话框窗口中,将"HTML element generated for a dropped Java file"从小应用程序更改为JSP:useBean。
问:在WebSphere Studio中,如何在测试和产品服务器之间切换?
答:在WebSphere Studio工具栏上,选择项目,然后将发布阶段突出显示。您可以选择测试服务器或产品服务器。
问:在WebSpher