Sun Java System Application Server 7 Web应用开发者指南

上一部分 | 目录 | 下一部分


装配和部署Web组件

本模块描述了如何在Sun Java System应用服务器上装配和部署web组件。 全部的装配部署信息请参考Sun ONE Application Server开发指南

这部分包含以下主题:

Web应用的结构

Web应用具有目录结构,所有访问都影射到应用文档的根(例如/hello)。 文档的根包含JSP>文件、HTML文件和图像文件等静态文件。

一个WAR(Web应用档案)文件以压缩形式包含一个完整的Web应用。

在文档根下有个特殊目录,名为WEB_INF,其中包含了与应用相关并且不在应用 的公共文档树中存在的所有文件。WEB-INF中包含的文件均不能被客户直接访问。WEB-INF的内容包括:

  • /WEB-INF/classes/*,该目录存放servlet和其它类。
  • /WEB-INF/lib/*.jar,该目录的jar文件包含beans和其它一些有用的类。
  • /WEB-INF/web.xml和/WEB-INF/sun-web.xml,基于XML的部署描述文件,用于指定Web应用的配置信息,包括影射、初始化参数和安全约束。

Web应用的目录结构遵循J2EE规格说明中列出的结构。这是一个简单的Web应用的目录结构示例:

+ hello/
|--- index.jsp
|--+ META-INF/
|  |--- MANIFEST.MF
'--+ WEB-INF/
   |--- web.xml
   '--- sun-web.xml


这是一个简单的包含Web组件的J2EE应用示例的目录结构。


+ converter_1/
|--- converterClient.jar
|--+ META-INF/
|  |--- MANIFEST.MF
|  |--- application.xml
|  '--- sun-application.xml
|--+ war-ic_war/
|  |--- index.jsp
|  |--+ META-INF/
|  |  |--- MANIFEST.MF
|  '--+ WEB-INF/
|     |--- web.xml
|     '--- sun-web.xml
|--+ ejb-jar-ic_jar/
|  |--- Converter.class
|  |--- ConverterBean.class
|  |--- ConverterHome.class
|  '--+ META-INF/
|     |--- MANIFEST.MF
|     |--- ejb-jar.xml
|     '--- sun-ejb-jar.xml
'--+ app-client-ic_jar/
   |--- ConverterClient.class
   '--+ META-INF/
      |--- MANIFEST.MF
      |--- application-client.xml
      '--- sun-application-client.xml


生成部署描述文件

Sun Java System应用服务的Web组件包含两个部署描述文件文件:

  • 一个J2EE标准文件(web.xml),在Java Servlet规格说明2.3版的第13章“部署描述文件”中描述。 你可以从http://java.sun.com/products/servlet/index.html找到该规格说明。
  • 可选的Sun Java System应用服务专用文件(sun-web.xml),在该组件中描述它。

生成web.xmlsun-web.xml文件最简单的方法是使用Administration界面或Sun Java System Studio 4来部署一个Web组件。更多信息请参考下一部分或Sun Java System应用服务器开发指南。例如web.xmlsun-web.xml文件,参考“Web组件XML文件实例

生成这些文件后,可以使用Administration界面或像Ant这样的编辑器与命令行组合的工具来装配部署已更新的部署描述文件。Sun Java System应用服务提供了Apache Ant1.4.1。更多的信息请参考Sun Java System应用服务器开发指南

部署Web应用

部署、卸载或重新部署一个Web应用时,不必重新启动服务器。换句话说,部署是动态的。

可以以这样一些方式来部署应用程序,这儿作简要的说明:

关于部署的更详细信息,请参考Sun Java System应用服务器开发指南

-keepgenerated属性添加到sum-web.xmljsp-config

元素中,这样就能为jsp文件保存生成的源。部署web应用时如果包含了这一属性,那么如果是一个应用程序,生成的源将被保存成instance_dir/generated/jsp/j2ee-apps/app_name/module_name;如果是一个独立部署的Web组件,生成的源将被保存成instance_dir/generated/jsp/j2ee-modules/module_name

使用命令行

              使用命令行来部署某个web应用:

1、            手工编辑部署描述文件文件(web.xmlsun-web.xml)。

2、            运行一个Ant编译命令(例如build war)来装配WAR组件。

3、            如果需要,将web应用写成一个WAR文件。这是可选的。例如:

jar -cvf module_name.war *

4、            使用asadmin部署命令来部署WAR组件。语法如下:

asadmin deploy --user admin_user [--password admin_password] [--passwordfile password_file] --host hostname --port adminport [--secure | -s] [--virtualservers virtual_servers] [--type application|ejb|web|connector] [--contextroot contextroot] [--force=true] [--precompilejsp=false] [--verify=false] [--name component_name] [--upload=true] [--retrieve local_dirpath] [--instance instance_name] filepath

例如,下面的命令用于将一个Web应用部署成一个独立的组件:

asadmin deploy --user jadams --password secret --host localhost --port 4848 --type web --instance server1 myWebApp.war

如果upload设置为false,那么filepath必须是服务器上的一个绝对路径。

使用Administration界面

使用Administration界面来部署一个Web应用:

1、        在服务器实例下打开应用组件。

2、        到达Web应用页。

3、        点击Deploy按钮

4、        输入WAR组件(或点击Browse按钮查找)的完整路径,然后点击OK按钮

5、        输入Web应用名和上下文根。如果应用已经存在,可以通过选中合适的复选框重新部署Web应用。这是可选项。

6、        选中复选框指定虚拟服务器名字,可以将Web应用分配给一个或多个虚拟服务器。

7、        点击Ok按钮。

使用Sun Java System Studio

可以使用Sun Java System Studio 4来装配和部署Web应用。 关于使用Sun ONE Studio的更多信息请参考Sun Java System Studio,企业版指南。

注意

Sun Java System Studio中,把Web应用的部署称为Web应用的运行。

 

动态重新加载Web应用


修改了Web应用并将它动态重新加载,不必重新部署web应用或重启服务器就可以完成。实现动态加载的步骤如下:

  • 使用Administration界面:
    a. 在服务器实例下打开应用组件
    b. 进入应用页面
    c. 检查Reload Enabled复选框是否选中以允许动态加载
    d.            在重新加载时间间隔字段中输入秒数来设置应用和组件检查代码是否改变并动态加载的时间间隔。
    e.            点击保存按钮
    f.  进入服务器实例页面,选择应用改变按钮。

具体细节请参考Sun Java System应用服务器管理员指南

  • server.xml文件的applications元素中编辑下列属性:
    • dynamic-reload-enabled="true"允许动态重新加载。
    • dynamic-reload-poll-interval-in-seconds设置应用和组件检查代码改变并动态重新加载的时间间隔。

关于server.xml的详细信息请参考Sun Java System应用服务器管理员配置文件参考

另外,加载了新的servlet文件、EJB的相关修改或重新加载部署描述文件的改变,都必须遵循如下规则:

1、        在部署的应用的根部生成名为.reload的空文件:

instance_dir/applications/j2ee-apps/app_name/.reload

或独立部署的组件的根部生成名为.reload的空文件

instance_dir/applications/j2ee-modules/module_name/.reload

2、        每次作了上述修改,必须显式地更新.reload文件的时间戳(在UNIX中为.reloadtouch属性)。

对于JSP文件,修改被自动地以sun-web.xml文件中jsp-config元素的reload-interval属性中设置的频率重新加载。要禁止动态重新加载JSP页面,将reload-interval属性设置成-1

Sun-web-app_2_3-0.dtd文件

Sun-web-app_2_3-0.dtd文件定义了sun-web.xml文件的结构,以及可以包含的元素、子元素和这些元素拥有的属性。sun-web-app_2_3-0.dtd文件的位置在:

install_dir/lib/dtds directory

注意

不要编辑sun-web-app_2_3-0.dtd文件,其内容仅随着Sun Java System应用服务器的新版本变化

想知道更多关于DTD文件和XML的信息,请参考XML规范说明书,网页地址:http://www.w3.org/TR/REC-xml

DTD文件和XML的全部信息参考http://www.w3.org/TR/REC-xml 处的XML规格说明。在DTD文件(可能以相应的XML文件形式表示)中定义的每个元素可以包含如下内容:

子元素

元素可以包含子元素。例如下面的文件段定义了cache元素。

<!ELEMENT cache (cache-helper*, default-helper?, property*, cache-mapping*)>

ELEMENT标记指定一个cache元素可以包含cache-helperdefault-helperpropertycache-mapping子元素。

下面的表格显示了如何选择子元素的后缀字符来确定子元素所需规则或允许出现的数量。左边一列列出了子元素的结尾字符,右边一列列出了对应的所需规则。

   所需规则和子元素后缀

子元素后缀

所需规则

element*

 可以包含零或多个子元素

element? 

 可以包含零或一个子元素

Element+ 

 必须包含一个或多个子元素

element (无后缀) 

 必须只包含一个子元素

如果某个元素不能包含其它元素,可以参考EMPTY或(#PCDATA)附带提一下可替换的元素名称列表。

数据

一些元素包含字符数据而不是子元素。这些元素的定义格式如下:

<!ELEMENT element-name (#PCDATA)>

例如:<!ELEMENT description (#PCDATA)>

sun-web.xml文件中,空格被看作是数据元素中数据的一部分。因此,在数据元素定界的数据前后不应该有额外的空格。例如:

<description>class name of session manager</description>

属性

<!ATTLIST cache               max-capacity   CDATA     "4096"
                  timeout        CDATA     "30"
                  enabled        %boolean; "false">

一个cache元素可以包含max-capacitytimeoutenabled属性。

#REQUIRED标签表示值必须被应用。#IMPLIED标签表示该属性是可选的,Sun ONE应用服务器会产生默认值。只要可能,列出可选属性的显式默认值(例如”true”)。

属性声明指定属性的类型。例如,CDATA

示字符数据,%boolean是一个预定以枚举。

Sun-web.xml文件中的元素


这部分描述sun-web.xml文件中的XML元素。元素可以如下分类:

注意

除非用其它方法列出,否则子元素必须按照其在每个Subelements标题下列出的次序定义。

一般元素

一般元素包含:

sun-web-app

规定Sun Java System应用服务器为Web组件指定配置。这是个根元素,在sun-web.xml文件中只能包含一个sun-web-app元素。

子元素

下面的表格描述了sun-web-app元素的子元素。左边一列列出了子元素的名称,中间一列指定所需规则,右边一列描述了该元素的功能。

   sun-web-app 子元素  

元素

所需规则

说明

security-role-mapping

零或多个 

 在当前活动领域,将角色映射到用户或组。

Servlet

零或多个 

指定servlet的主要名称,它在web.xml中定义运行角色时使用。

session-config

零或多个

指定会话管理者、会话cookie和其它与会话相关的信息。 

resource-env-ref

零或多个

将绝对的JNDI名称映射到相应的J2EE XML文件中的resource-env-ref

resource-ref

零或多个

将绝对的JNDI名称映射到相应的J2EE XML文件中的resource-ref

ejb-ref

零或多个

将绝对的JNDI名称映射到相应的J2EE XML文件中的ejb-ref 

Cache

零或一个

Web应用组件配置缓存。

class-loader

零或一个

指定类加载配置信息。

jsp-config

零或一个

指定JSP配置信息。 

locale-charset-info

零或一个

指定国际化设置。 

property

零或多个

指定属性,它由名称和值构成。 

属性

性质

下面的表格描述了sun-web-app元素的性质。左边一列列出了性质名,中间一列指定了默认值,右边一列描述了性质的功能。

 

   sun-web-app 性质

性质名称

默认值

描述

crossContextAllowed

true

如果为true,允许该web应用使用ServletContext.getContext()方法访问其它web应用的内容

tempdir

instance_dir/generated/j2ee-apps/app_name

or

instance_dir/generated/j2ee-modules/module_name

 通过该web组件为使用指定临时目录。该值用于构建javax.servlet.context.tempdir背景属性的值。编译后的JSP文件也放在该目录下。

singleThreadedServletPoolSize

5

 指定web应用中,每个SingleThreadModel Servlet可分配的servlet实例的最大数量。

property

指定property时要指明名称和值。属性增加了下面一种或全部的配置信息到父元素中:

  •   关于Sun ONE应用服务器的选项
  • Sun Java System应用服务器不知道,而系统或某个对象所需的信息,例如LDAP服务器或某个java

例如,一个manager-properties元素可以包含属性子元素:

<manager-properties>
   <property name="reapIntervalSeconds" value="20" />
</manager-properties>

manager-properties元素使用的这些属性与父元素session-managerpersistence-type属性相关。具体细节请参考session-manager元素的说明。

子元素

下面的表格描述了property元素的子元素。左边一列列出了子元素的名称,中间一列指定所需的规则,而右边一列描述了元素的功能。

   property 子元素 

元素

所需规则

说明

description

零或一

 指定一个可选的属性文本描述信息。

属性

下面的表格描述了property元素的属性。左边一列列出了属性名称,中间一列指定默认值,而右边一列对属性的功能作了描述。

 

   property 属性

属性名称

默认值

说明

name

none

 指定property的名称

value

none

指定property的值

Description

包含用于指定所含元素的文本说明的数据。

子元素

属性


上一部分 | 目录 | 下一部分

 

常见问答
下载中心
产品简介
 
 
Solaris论坛
 
   
 
null