创建和配置 Web 应用程序

创建和配置 Web 应用程序

以下部分描述如何创建和配置 Web 应用程序资源。

 


目录结构

Web 应用程序使用 J2EE 规范中定义的标准目录结构。可以将 Web 应用程序部署为使用此目录结构的文件集合(称为展开的目录格式)或归档文件(称为 WAR 文件)。BEA 建议将展开的 Web 应用程序打包并部署为企业应用程序的一部分。这是 BEA 最佳实践,通过它可以更轻松地执行应用程序迁移、添加和更改操作。此外,通过将 Web 应用程序打包为企业应用程序的一部分,还可以利用拆分的开发目录结构。与传统的单一目录结构相比,这种目录结构具有许多优点。

WEB-INF 目录包含 Web 应用程序的部署描述符(web.xml 和 weblogic.xml)和两个用于存储已编译 Java 类和库 JAR 文件的子目录。这些子目录的名称分别为 classes 和 lib。JSP 标记库存储在位于临时目录顶级的 WEB-INF 目录中。Java 类包括 Servlet、辅助程序类和(如果需要)预编译的 JSP。

属于 Web 应用程序的所有 Servlet、类、静态文件和其他资源都组织在目录层次中。

DefaultWebApp/
将静态文件(如 HTML 文件和 JSP 文件)放入 Web 应用程序的文档根目录中。在 WebLogic Server 的默认安装中,此目录称为 DefaultWebApp,位于 user_domains/mydomain/applications 下。
(要使 Web 应用程序成为默认 Web 应用程序,必须在 weblogic.xml 部署描述符文件中将上下文根设置为“/”。)
DefaultWebApp/WEB-INF/web.xml
用于配置 Web 应用程序的 Web 应用程序部署描述符。
DefaultWebApp/WEB-INF/weblogic.xml
用于定义 web.xml 文件中的指定资源如何映射到驻留在 WebLogic Server 其他位置的资源的 WebLogic 特定部署描述符文件。该文件还用于定义 JSP 和 HTTP 会话特性。
DefaultWebApp/WEB-INF/classes
包含服务器端类,如 HTTP Servlet 和实用工具类。
DefaultWebApp/WEB-INF/lib
包含 Web 应用程序使用的 JAR 文件,包括 JSP 标记库。

临时存储整个目录后,会使用 jar 命令将其捆绑到 WAR 文件中。WAR 文件可以单独部署,也可以作为企业应用程序的一部分(建议)与其他应用程序组件(包括其他 Web 应用程序、EJB 组件和 WebLogic Server 组件)一起部署。

 

JSP 页和 HTTP Servlet 可以访问 WebLogic Server 中可用的所有服务和 API。这些服务包括 EJB、通过 Java 数据库连接(Java Database Connectivity,简称 JDBC)的数据库连接、Java 消息服务 (Java Messaging Service,简称 JMS)、XML 等。

 

 

 

 

DefaultWebApp

|

|--------------------js

|

|---------------------myjsp

|

|--------------------images

|

|--------------------WEB-INF

|                              |---------classes

|                              |                |-------package

|                              |                             |------MyServlet.class

|                              |               

|                              |---------web.xml

|                              |---------weblogic.xml

|                              |----------lib

|

|-------------------index.jsp

                               

 

 

访问 WEB-INF 中的信息

WEB-INF 目录不是应用程序公共文档树的一部分。容器不能将 WEB-INF 目录中包含的任何文件直接提供给客户端。但是,通过对 ServletContext 使用 getResource 和 getResourceAsStream() 方法调用,可以在 Servlet 代码中看到 WEB-INF 目录中的内容;通过使用 RequestDispatcher,可以包括/转发这些内容。因此,如果应用程序开发人员需要从 Servlet 代码访问那些不应直接对 Web 客户端公开的应用程序特定配置信息,则可以将这些信息放置在此目录中。

由于请求以区分大小写的方式匹配到资源映射,因此,(例如)对“/WEB-INF/foo”和“/WEb-iNf/foo”的客户端请求不会导致返回位于 /WEB-INF 下的 Web 应用程序内容,也不会返回该处所列的任何形式的目录。

目录结构示例

以下是 Web 应用程序目录结构的示例,其中 myWebApp/ 是临时目录。

清单 3-1 Web 应用程序目录结构

myWebApp/

	WEB-INF/

		web.xml

		weblogic.xml

		lib/

			MyLib.jar

		classes/

			MyPackage/

				MyServlet.class

	index.html

	index.jsp

 


创建和配置 Web 应用程序的主要步骤

以下步骤概括了使用拆分开发目录结构将 Web 应用程序作为企业应用程序的一部分进行创建的过程。请参阅“使用 WebLogic Server 开发应用程序”中的创建拆分开发目录环境在拆分开发目录中生成应用程序从拆分开发目录进行部署和打包

您可能希望使用 WebLogic Server 中包含的开发人员工具来创建和配置 Web 应用程序。请参阅 Web 应用程序开发人员工具

步骤一:创建企业应用程序包装

  1. 为根 EAR 文件创建目录:

    \src\myEAR\

  2. 按如下所示设置环境:
    • 在 Windows NT 上,执行 setWLSEnv.cmd 命令,该命令位于目录 server\bin\ 中,其中 server 是 WebLogic Server 的顶级安装目录。
    • 在 UNIX 上,执行 setWLSEnv.sh 命令,该命令位于目录 server/bin/ 中,其中 server 是 WebLogic Server 的顶级安装目录,域是指域的名称。
  3. 按如下所示,将企业应用程序打包在 \src\myEAR\ 目录中:
    1. 将企业应用程序描述符(application.xmlweblogic-application.xml)放入 META-INF\ 目录中。请参阅使用 WebLogic Server 开发应用程序中的企业应用程序部署描述符
    2. 根据需要编辑部署描述符以微调企业应用程序的行为。请参阅 Web 应用程序开发人员工具
    3. 将企业应用程序 .jar 文件放入以下目录中:

      \src\myEAR\APP-INF\lib\

步骤二:创建 Web 应用程序

  1. 在 EAR 文件所在的根目录中为 Web 应用程序创建目录:

    \src\myEAR\myWebApp

  2. 按如下所示,将 Web 应用程序打包在 \src\myEAR\myWebApp\ 目录中:
    1. 将 Web 应用程序描述符(web.xml 和 weblogic.xml)放入 \src\myEAR\myWebApp\WEB-INF\ 目录中。请参阅 weblogic.xml 部署描述符元素
    2. 根据需要编辑部署描述符以微调企业应用程序的行为。请参阅 Web 应用程序开发人员工具
    3. 将 Web 应用程序页引用的所有 HTML 文件、JSP、图像和任何其他文件放入 Web 应用程序的根目录中。

      \src\myEAR\myWebApp\images\myimage.jpg

      \src\myEAR\myWebApp\login.jsp

      \src\myEAR\myWebApp\index.html

    4. 将 Web 应用程序 Java 源文件(Servlet、标记库以及 Servlet 或标记库引用的其他类)放入以下目录中:

      \src\myEAR\myWebApp\WEB-INF\src\

步骤三:创建 build.xml 文件

设置目录结构后,可以使用 weblogic.BuildXMLGen 实用工具创建 build.xml 文件。

步骤四:执行拆分开发目录结构 Ant 任务

  1. 执行 wlcompile Ant 任务以调用 javac 编译器。这会将 Web 应用程序 Java 组件编译到输出目录 /build/myEAR/WEB-INF/classes 中。
  2. 执行 wlappc Ant 任务以调用 appc 编译器。这会编译要部署的任何 JSP 和容器特定 EJB 类。
  3. 执行 wldeploy Ant 任务以将 Web 应用程序作为归档的或展开的 EAR 的一部分部署到 WebLogic Server。
  4. 如果这是生产环境(而不是开发环境),请执行 wlpackage Ant 任务以将 Web 应用程序打包为归档的或展开的 EAR 的一部分。
    注意:wlpackage Ant 任务会将已编译的版本的 Java 源文件放入生成目录中。例如:/build/myEAR/myWebApp/classes。

 


配置客户端访问 Web 应用程序的方式

请使用以下模式构造客户端用来访问 Web 应用程序的 URL:

http://hoststring/ContextPath/servletPath/pathInfo

其中,

hoststring
是映射到虚拟主机的主机名或 hostname:portNumber
ContextPath
是 Web 应用程序的名称。
servletPath
是映射到 servletPath 的 Servlet。
pathInfo
是 URL 的其余部分,通常是文件名。

如果使用虚拟主机,则可以使用虚拟主机名替换 URL 的 hoststring 部分。

 


为 Web 应用程序配置虚拟主机

WebLogic Server 支持两种为 Web 应用程序配置虚拟主机的方法:

  • 基于通道
  • 基于主机

配置基于通道的虚拟主机

以下是如何配置基于通道的虚拟主机的示例:

<VirtualHost Name="channel1vh" NetworkAccessPoint="Channel1" Targets="myserver"/>

<VirtualHost Name="channel2vh" NetworkAccessPoint="Channel2" Targets="myserver"/> 

其中 Channel1 和 Channel2 是 config.xml 文件中配置的 NetworkAccessPoint 的名称。NetworkAccessPoint 表示虚拟主机为其提供 HTTP 请求服务的专用服务器通道名。如果给定 HTTP 请求的 NetworkAccessPoint 与任何虚拟主机的 NetworkAccessPoint 均不匹配,则会将传入的 HOST 头与 VirtualHostName 进行匹配,以解析正确的虚拟主机。如果传入的请求与虚拟主机不匹配,则将由默认 Web 服务器为请求提供服务。

配置基于主机的虚拟主机

以下是如何配置基于主机的虚拟主机的示例:

<VirtualHost Name="cokevh" Targets="myserver" VirtualHostNames="coke"/>

<VirtualHost Name="pepsivh" Targets="myserver" VirtualHostNames="pepsi"/> 

 


将 Web 应用程序定位到虚拟主机

使用 WebLogic 管理控制台可以将 Web 应用程序组件定位到服务器和虚拟主机。

请注意,如果从以前版本的 WebLogic Server 迁移,则必须在 config.xml 文件中的目标特性中指定所有 Web 应用程序目标。目标特性已替换虚拟主机特性,虚拟主机不能与同一域中的服务器或群集同名。以下是如何将 Web 应用程序定位到虚拟主机的示例:

<AppDeployment name="test-app" Sourcepath="/myapps/test-app.ear">
   <SubDeployment Name="test-webapp1.war" Targets="virutalhost-1"/>
   <SubDeployment Name="test-webapp2.war" Targets="virtualhost-2"/>
   ...
</AppDeployment>

 


加载 Servlet、上下文监听器和筛选器

Servlet、上下文监听器和筛选器按以下顺序加载和销毁:

加载顺序:

  1. 上下文监听器
  2. 筛选器
  3. Servlet

销毁顺序:

  1. Servlet
  2. 筛选器
  3. 上下文监听器

Servlet 和筛选器按照 web.xml 文件中定义它们的相同顺序加载,按照相反顺序卸载。上下文监听器按照以下顺序加载:

  1. web.xml 文件中的所有上下文监听器(按照文件中指定的顺序)
  2. 已打包的包含标记库描述符的 JAR 文件
  3. WEB-INF 目录中的标记库描述符

 


共享的 J2EE Web 应用程序库

J2EE Web 应用程序库是部署时使用 J2EE 应用程序容器注册的独立 Web 应用程序模块。使用 WebLogic Server 9.2,多个 Web 应用程序可以轻松共享单个 Web 程序模块或模块集合。

Web 应用程序可以引用一个或多个 Web 应用程序库,但不能引用其他库类型(EJB、EAR 文件和常规 JAR 文件)。

Web 应用程序库是部署为库的 Web 应用程序模块。可以使用用来引用 weblogic-application.xml文件中的应用程序库的相同语法,从 weblogic.xml 文件引用这些库,只是将忽略 <context-root> 元素。

部署时,会将每个引用的库的类路径追加到 Web 应用程序的类路径。因此,对所有资源和类的搜索将首先发生在原始 Web 应用程序中,然后才发生在引用库中。

部署工具、appc、wlcompile 和 BuildXMLGen 在 Web 应用程序级别支持库的方式与它们在应用程序级别支持库的方式一样。有关共享的 J2EE 库及其部署的详细信息,请参阅“使用 WebLogic Server 开发应用程序”中的创建共享 J2EE 库和可选包

 


将 JSF 和 JSTL 用于 Web 应用程序

有三个 JSF (JavaServer™ Faces) 和 JSTL(JSP™ 标准标记库)包已作为 Web 应用程序库与 WebLogic Server 捆绑在一起。使用 JSF 或 JSTL 功能的标准 Web 应用程序可以引用这些库。

有关使用您的 Web 应用程序引用这些 Web 应用程序库的信息,请参阅“使用 WebLogic Server 开发应用程序”中的将 WebApp 库和 Web 应用程序一起使用

在 9.2 版本中,可以将下面三个包作为 Web 应用程序库使用:

这些库位于 WL_HOME/common/deployable-libraries 目录中。为方便起见,JSF 库包含了 JSTL JAR 文件,以便在应用程序引用 JSF 库时,它也会自动获取 JSTL 支持。

下表列出了 JSF 和 JSTL 库文件名称及其 MANIFEST 条目:

表 3-1 jsf-myfaces-1.1.1.war
特性
描述
Extension-Name
jsf-myfaces
Specification-Title
JavaServer Faces
Specification-Version
1.1
Implementation-Title
MyFaces
Implementation-Version
1.1.1
Implementation-Vendor
MyFaces 项目组。

 

表 3-2 jsf-ri-1.1.1.war
特性
描述
Extension-Name
jsf-ri
Specification-Title
JavaServer Faces
Specification-Version
1.1
Implementation-Title
'jsf-impl':JavaServer Faces RI
Implementation-Version
1.1.1
Implementation-Vendor
Sun Microsystems, Inc.

 

表 3-3 jstl-1.1.2.war
特性
描述
Extension-Name
jstl
Specification-Title
JavaServer 页标准标记库 (JSTL)
Specification-Version
1.1
Implementation-Title
jakarta-taglibs 'standard':JSTL 实现
Implementation-Version
1.1.2
Implementation-Vendor
Apache 软件基础
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值