29.2. 配置Web应用

Web应用按照Servlet2.5规范进行部署和配置。Servlet2.5规范中描述了如何将静态的HTML内容、图片、JSP和Servlet等组件打包成为一个Web应用,Web应用可以对应用外的资源,如EJB、JSP Taglib等,进行访问。服务器可以部署多个Web应用,并提供运行环境,通常,可以通过在Web应用中定义的URI访问此Web应用。

29.2.1. 部署Web应用

将打包好的web应用(war包或者目录)放置在Apusic应用服务器域主目录下applications目录中,Apusic应用服务器会自动部署此Web应用。部署Web应用还有其它方式,比如使用管理工具部署,或者直接修改域主目录下config目录中的server.xml文件,增加一个条目,指定Web应用路径(可以是相对applications目录的路径也可以是绝对路径),Apusic应用服务器启动时会加载此条目指定的Web应用。如Default应用的条目是:

<application name="default" base="applications/default" start="auto"/>

server.xml中应用的完整配置项:

<application name="bookstore" base="applications/bookstore.war" start="auto" config ="" virtual-host="" base-context="" start="" loadon="" global-session="" allowHosts =""  denyHosts ="" />

属性说明:

name:应用的名称。

base:应用的目录,可以是绝对路径,也可以是相对路径。如果是相对路径,则相对于%domain_home%。

start:应用启动的模式,值为auto和demand,auto表示服务器启动,应用就启动;demand则是通过管理员手动启动。

config:指定apusic-application.xml配置文件路径。

virtual-host:虚拟主机,多个虚拟主机使用逗号分割。

base-context:应用的基础上下文,和global-session配合可以到达多个应用共享session的功能(需要共享session的应用设置相同的base-context,而且global-session设置为true)。

loadon:如果存在多个应用,则决定应用加载的顺序,类型为数字,值小则优先加载。

global-session:是否为全局session,同一个企业应用中,多个web应用可以获取到其他应用的session属性值。

allowHosts:允许访问的机器ip列表。

denyHosts :拒绝访问的机器ip列表。

29.2.2. 配置web上下文根路径

在Apusic应用服务器中部署的Web应用,提供多种策略指定http访问该应用时的上下文根路径(context-root)。

  • apusic-application.xml

    参考Apusic的default应用的apusic-application.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE apusic-application PUBLIC '-//Apusic//DTD Apusic Application 4.0.2//EN' 'http://www.apusic.com/dtds/apusic-application_4_0_2.dtd'>
    <apusic-application>
      <module uri="public_html">
        <web>
          <context-root>/</context-root>
        </web>
      </module>
    </apusic-application>

    其中,<context-root>指定了该应用的上下文根路径为"/",即可使用http://<hostname/访问该应用。可在web应用(war包或目录)内建一个META-INF目录,此目录与WEB-INF目录同级,并将apusic-application.xml文件放置在其中,即可生效。

  • base-context

    在域主目录下config目录中的server.xml文件中,可指定一个应用的base-context,如下:

    <application name="default" base="applications/default" base-context="/app1" start="auto"/>

    当base-context不为空时,如果应用没有配置context-root,那么base-context即为该应用的context-root;如果该应用的web模块配置了context-root,那么该应用所有web模块的context-root会以base-context为前缀。比如app1的base-context为app1,app1下有个web模块的context-root为web1,那么访问该web模块的路径为http://hostname/app1/web1/。

  • 应用名即上下文根路径

    如果base-context和context-root都未配置,那么apusic会按照以下规则指定web应用的上下文根路径:如果应用是ear模块,那么指定apusic-application.xml中该web module的uri值为根路径;如果应用是web模块,那么web应用的根路径为server.xml中指定的应用名,即"name"属性的值。如果上述值以".war"结尾,那么去除".war"后的值为context-root。