[摘要]Weblogic服务器如何解释HTTP请求当Weblogic服务器收到HTTP请求,它是这样解释这个请求的:通过分解URL的各个部分,然后根据这些信息来决定是哪一个WEB应用程序或服务器应处理这个请...
Weblogic服务器如何解释HTTP请求
当Weblogic服务器收到HTTP请求,它是这样解释这个请求的:通过分解URL的各个部分,然后根据这些信息来决定是哪一个WEB应用程序或服务器应处理这个请求。下面示例演示了对WEB应用程序,虚拟主机,servlets,JSPs和静态文件的请求的不同组合以及响应结果。
注意:如果将WEB应用程序打包成企业应用程序的一部分,可为WEB应用程序提供一个预定的名字,用这个名字解释对这个WEB应用程序的请求。更多信息,参考部署WEB应用程序成为企业应用程序的一部分。
下表提供一些URLs例子和Weblogic服务器提供服务的文件。Index Directories Checked列是指索引目录属性,该属性在没有特定的文件请求时控制是否显示目录列表。用管理控制台在Web Applications节点的Configuration/Files标签下来设定索引目录。
Table 8-2 WebLogic 服务器解释URLs示例URLIndex Directories Checked?响应的文件
http://host:port/applesno定义在WEB应用程序apples中的初始页面*
http://host:port/applesyesWEB应用程序apples顶层目录的文件列表
http://host:port/oranges/naval无关在WEB应用程序apples里映射为(<url-pattern> )/naval的servlet还有一些关于servlet 映射的需考虑的事项,更多信息,参考配置Servlets
http://host:port/naval无关当WEB应用程序apples定义成默认的WEB应用程序时,在WEB应用程序apples里映射为(<url-pattern> )/naval的servlet更多信息参考配置Servlets
http://host:port/apples/pie.jsp无关WEB应用程序apples顶层目录里的pie.jsp
http://host:portyes默认WEB应用程序的顶层目录文件列表
http://host:portno默认WEB应用程序的初始文件
http://host:port/apples/myfile.html无关WEB应用程序apples顶层目录里的myfile.html
http://host:port/myfile.html无关默认WEB应用程序apples顶层目录里的myfile.html
http://host:port/apples/images/red.gif无关WEB应用程序apples顶层目录下的images子目录里的red.gif,
http://host:port/myFile.htmlmyfile.html在WEB应用程序apples中不存在,并且没有定义默认servlet无关Error 404更多信息参考定制HTTP错误响应
http://www.fruit.com/no虚拟主机名是www.fruit.com的默认WEB应用程序的初始文件
http://www.fruit.com/yes虚拟主机名是www.fruit.com的默认WEB应用程序的顶层目录文件列表
http://www.fruit.com/oranges/myfile.html无关r虚拟主机名是www.fruit.com上WEB应用程序oranges的myfile.html
*更多信息参考配置初始页面。
定制HTTP错误响应
可以配置Weblogic服务器在特殊HTTP错误或Java异常的发生时使用自己定制的WEB页面或其它HTTP资源来响应,而不是Weblogic服务器标准错误响应页面。
在WEB应用程序部署描述符web.xml中的<error-page>元素中定义定制的错误页面。有关错误页面的更多信息,参考error-page元素。
在Weblogic服务器中使用CGI
Weblogic服务器提供支持公共网关接口(CGI)脚本的功能。在新项目中,建议使用HTTP servlets或JSPs。
Weblogic服务器支持所有通过一个名为CGIServlet的内部Weblogic servlet的CGI脚本。要使用CGI,在WEB应用程序部署描述符中注册CGIServlet(参考注册CGIServlet时要包含在WEB应用程序部署描述符的条目示例)。更多信息参考配置Servlets。
配置Weblogic服务器使用CGI
要在Weblogic服务器中配置CGI:
1.通过使用<servlet> 和 <servlet-mapping>元素在WEB应用程序中声明CGIServlet。
CGIServlet的类名是weblogic.servlet.CGIServlet。
2.定义以下<init-param>元素来注册下列初始化参数:
cgiDir
包含CGI脚本的目录路径。可定义多个目录,用“ ;”(Windows)或”:”(Unix)分隔。如未定义cgiDir,目录默认为WEB应用程序根目录下名为cgi-bin的目录。
extension mapping
将文件扩展名映射到解释器或执行脚本的运行器(executable)。如脚本不要求运行器,将忽略这个初始化参数。扩展名映射的<param-name>必须以星号开头,后跟小数点,然后是文件扩展名,如*.pl。
The <param-value> contains the path to the interpreter or executable that runs the script You can create multiple mappings by creating a separate <init-param> element for each mapping.
<param-value>包含解释器或可执行脚本的运行器的路径,通过为每个映射建立单独的<init-param>元素,可以建立多个映射。
Listing 8-3注册CGIServlet时包含在WEB应用程序部署符里的条目示例
<servlet>
<servlet-name>CGIServlet</servlet-name>
<servlet-class>weblogic.servlet.CGIServlet</servlet-class>
<init-param>
<param-name>cgiDir</param-name>
<param-value>
/bea/wlserver6.0/config/mydomain/applications/myWebApp/cgi-bin
</param-value>
</init-param>
<init-param>
<param-name>*.pl</param-name>
<param-value>/bin/perl.exe</param-value>
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>CGIServlet</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
请求CGI脚本
用来请求perl脚本的URL必须象如下模式:
http://host:port/myWebApp/cgi-bin/myscript.pl
其中
host:port
Weblogic服务器的主机名和端口名。
cgi-bin
映射到CGIServlet的url-pattern名。
myWebApp
WEB应用程序名。
myscript.pl
Perl脚本名,位于cgiDir初始化参数指定的目录中。
用ClasspathServlet提供CLASSPATH里的资源服务
如需提供系统CLASSPATH或WEB应用程序的WEB-INF/classes目录中的类或其它资源服务,就要使用一个名为ClasspathServlet的特殊servlet。ClasspathServlet对于使用applets或RMI客户和请求访问服务器端类的应用程序特别有用。隐含地,ClasspathServlet已被注册,可用于任何应用程序。
使用ClasspathServlet的两种方法:
·要提供系统CLASSPATH的资源服务,用如下URL调用资源:
http://server:port/classes/my/resource/myClass.class
·要提供WEB应用程序的WEB-INF/classes中的资源服务,用如下URL调用资源:
http://server:port/myWebApp/classes/my/resource/myClass.class
在这种情况下,资源位于相对于WEB应用程序根目录中的如下目录:
WEB-INF/classes/my/resource/myClass.class
警告:由于ClasspathServlet提供位于系统CLASSPATH中的任何资源服务,不要把不应公开的资源放在系统CLASSPATH中。
将请求代理给另一个HTTP服务器
当将Weblogic服务器作为主WEB服务器时,也可能要配置Weblogic服务器传递,或代理某个请求给二级HTTP服务器,如Netscape Enterprise Server,Apache,Microsoft Internet Information Server,或Weblogic服务器的另一个实例。任何需要代理的请求被重定向到一个特定的URL。甚至能代理到不同机器上的另一个WEB服务器。代理请求基于进入的请求URL。
HttpProxyServlet(发行版的一部分)接受HTTP请求,并把它重定向到代理URL,后台通过Weblogic服务器将响应送回客户端的浏览器。要使用代理,必须在WEB应用程序中配置它,并部署重定向请求的Weblogic服务器上的WEB应用程序。
建立到二级HTTP服务器的代理
要建立到二级HTTP服务器的代理:
1.在WEB应用程序部署描述符中注册代理servlet(参考使用ProxyServlet的web.xml示例)。这个WEB应用程序必须是响应请求的服务器的默认应用程序。代理servlet的类名为weblogic.t3.srvr.HttpProxyServlet。更多信息参考部署和配置WEB应用程序。
2.定义ProxyServlet的初始化参数,<param-name>是redirectURL,<param-value>包含被代理请求定向至的服务器的URL。
3.映射ProxyServlet到一个<url-pattern>。特别地,映射希望代理的文件扩展名,如*.jsp,或*.html。使用WEB应用程序部署描述符web.xml中的<servlet-mapping>元素。
如将<url-pattern>设置为“/”,不能由Weblogic服务器解释的任何请求将被代理到远程服务器。但是,也必须特别映射以下扩展名*.jsp,*.htm,*.html,如要代理以这些扩展名结尾的文件。
4.在重定向请求的Weblogic服务器上部署WEB应用程序。
代理servlet的部署描述符示例
以下是使用代理Servlet的WEB应用程序部署描述符的示例:
Listing 8-4使用ProxyServlet的web.xml示例
<!-- DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 1.2//EN"
"file:///weblogic/dev/myserver/servlet2.2/WEB-INF/web-jar.dtd"
-->
<web-app>
<servlet>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>weblogic.t3.srvr.HttpProxyServlet</servlet-class>
<init-param>
<param-name>redirectURL</param-name>
<param-value>
http://tehama:7001
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
代理请求给Weblogic集群
HttpClusterServlet(Weblogic服务器发行版的一部分)将请求从Weblogic服务器代理到Weblogic集群中的其它Weblogic服务器。HttpClusterServlet提供负载平衡和被代理的HTTP请求的failover.有关servlets和Weblogic集群的另外信息,参考理解HTTP会话状态复制。
设置HttpClusterServlet
要设置HttpClusterServlet:
1.配置Weblogic服务器实例,它将请求代理给一个Weblogic服务器集群。使用Weblogic服务器管理控制台:
a.在域中建立一新WEB应用程序。
b.在域中建立一新服务器,或用默认的。
c.将步骤a建立的WEB应用程序指定为刚建立的服务器的默认WEB应用程序。
2.在步骤1建立的WEB应用程序的部署描述符中注册HttpClusterServlet(参考HttpClusterServlet部署描述符示例)。WEB应用程序必须是响应请求的服务器的默认WEB应用程序。更多信息参考指定默认WEB应用程序。
HttpClusterServlet的类名是eblogic.servlet.internal.HttpClusterServlet。一个HttpClusterServlet部署描述符示例如下。
3.为HttpClusterServlet定义适当的初始化参数。用WEB应用程序部署描述符web.xml中的<init-param>元素定义初始化参数。必须定义defaultServers参数,适当的、附加的参数在表8-3HttpClusterServlet Parameters中描述。
4.映射代理servlet到一<url-pattern>。特别地,映射想要代理的文件扩展名,如 *.jsp或*.html。
如设置url-pattern为“/”,Weblogic服务器不能解释的任何请求将被代理到远程服务器。但是,也必须特别映射以下扩展名 *.jsp ,*.htm 和*.html,如想代理以这些扩展名结尾的文件的话。
另一个设置url-pattern的方法就是映射如/foo一样的url-pattern,然后设置foo的pathTrim参数,它从代理URL移除foo。
Table 8-3 HttpClusterServlet Parameters
<param-name><param-value>默认值
defaultServers(必须的)以下形式的代理请求的目标服务器的主机名和端口号列表:host1:HTTP_Port:HTTPS_Port
关键词:Weblogic6.0部署与设置WEB应用程序(4)