Weblogic6.0部署與設(shè)置WEB應(yīng)用程序(4)
發(fā)表時(shí)間:2024-02-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]Weblogic服務(wù)器如何解釋HTTP請求當(dāng)Weblogic服務(wù)器收到HTTP請求,它是這樣解釋這個(gè)請求的:通過分解URL的各個(gè)部分,然后根據(jù)這些信息來決定是哪一個(gè)WEB應(yīng)用程序或服務(wù)器應(yīng)處理這個(gè)請求。下面示例演示了對WEB應(yīng)用程序,虛擬主機(jī),servlets,JSPs和靜態(tài)文件的請求的不同組合以...
Weblogic服務(wù)器如何解釋HTTP請求
當(dāng)Weblogic服務(wù)器收到HTTP請求,它是這樣解釋這個(gè)請求的:通過分解URL的各個(gè)部分,然后根據(jù)這些信息來決定是哪一個(gè)WEB應(yīng)用程序或服務(wù)器應(yīng)處理這個(gè)請求。下面示例演示了對WEB應(yīng)用程序,虛擬主機(jī),servlets,JSPs和靜態(tài)文件的請求的不同組合以及響應(yīng)結(jié)果。
注意:如果將WEB應(yīng)用程序打包成企業(yè)應(yīng)用程序的一部分,可為WEB應(yīng)用程序提供一個(gè)預(yù)定的名字,用這個(gè)名字解釋對這個(gè)WEB應(yīng)用程序的請求。更多信息,參考部署WEB應(yīng)用程序成為企業(yè)應(yīng)用程序的一部分。
下表提供一些URLs例子和Weblogic服務(wù)器提供服務(wù)的文件。Index Directories Checked列是指索引目錄屬性,該屬性在沒有特定的文件請求時(shí)控制是否顯示目錄列表。用管理控制臺在Web Applications節(jié)點(diǎn)的Configuration/Files標(biāo)簽下來設(shè)定索引目錄。
Table 8-2 WebLogic 服務(wù)器解釋URLs示例URLIndex Directories Checked?響應(yīng)的文件
http://host:port/applesno定義在WEB應(yīng)用程序apples中的初始頁面*
http://host:port/applesyesWEB應(yīng)用程序apples頂層目錄的文件列表
http://host:port/oranges/naval無關(guān)在WEB應(yīng)用程序apples里映射為(<url-pattern> )/naval的servlet還有一些關(guān)于servlet 映射的需考慮的事項(xiàng),更多信息,參考配置Servlets
http://host:port/naval無關(guān)當(dāng)WEB應(yīng)用程序apples定義成默認(rèn)的WEB應(yīng)用程序時(shí),在WEB應(yīng)用程序apples里映射為(<url-pattern> )/naval的servlet更多信息參考配置Servlets
http://host:port/apples/pie.jsp無關(guān)WEB應(yīng)用程序apples頂層目錄里的pie.jsp
http://host:portyes默認(rèn)WEB應(yīng)用程序的頂層目錄文件列表
http://host:portno默認(rèn)WEB應(yīng)用程序的初始文件
http://host:port/apples/myfile.html無關(guān)WEB應(yīng)用程序apples頂層目錄里的myfile.html
http://host:port/myfile.html無關(guān)默認(rèn)WEB應(yīng)用程序apples頂層目錄里的myfile.html
http://host:port/apples/images/red.gif無關(guān)WEB應(yīng)用程序apples頂層目錄下的images子目錄里的red.gif,
http://host:port/myFile.htmlmyfile.html在WEB應(yīng)用程序apples中不存在,并且沒有定義默認(rèn)servlet無關(guān)Error 404更多信息參考定制HTTP錯誤響應(yīng)
http://www.fruit.com/no虛擬主機(jī)名是www.fruit.com的默認(rèn)WEB應(yīng)用程序的初始文件
http://www.fruit.com/yes虛擬主機(jī)名是www.fruit.com的默認(rèn)WEB應(yīng)用程序的頂層目錄文件列表
http://www.fruit.com/oranges/myfile.html無關(guān)r虛擬主機(jī)名是www.fruit.com上WEB應(yīng)用程序oranges的myfile.html
*更多信息參考配置初始頁面。
定制HTTP錯誤響應(yīng)
可以配置Weblogic服務(wù)器在特殊HTTP錯誤或Java異常的發(fā)生時(shí)使用自己定制的WEB頁面或其它HTTP資源來響應(yīng),而不是Weblogic服務(wù)器標(biāo)準(zhǔn)錯誤響應(yīng)頁面。
在WEB應(yīng)用程序部署描述符web.xml中的<error-page>元素中定義定制的錯誤頁面。有關(guān)錯誤頁面的更多信息,參考error-page元素。
在Weblogic服務(wù)器中使用CGI
Weblogic服務(wù)器提供支持公共網(wǎng)關(guān)接口(CGI)腳本的功能。在新項(xiàng)目中,建議使用HTTP servlets或JSPs。
Weblogic服務(wù)器支持所有通過一個(gè)名為CGIServlet的內(nèi)部Weblogic servlet的CGI腳本。要使用CGI,在WEB應(yīng)用程序部署描述符中注冊CGIServlet(參考注冊CGIServlet時(shí)要包含在WEB應(yīng)用程序部署描述符的條目示例)。更多信息參考配置Servlets。
配置Weblogic服務(wù)器使用CGI
要在Weblogic服務(wù)器中配置CGI:
1.通過使用<servlet> 和 <servlet-mapping>元素在WEB應(yīng)用程序中聲明CGIServlet。
CGIServlet的類名是weblogic.servlet.CGIServlet。
2.定義以下<init-param>元素來注冊下列初始化參數(shù):
cgiDir
包含CGI腳本的目錄路徑?啥x多個(gè)目錄,用“ ;”(Windows)或”:”(Unix)分隔。如未定義cgiDir,目錄默認(rèn)為WEB應(yīng)用程序根目錄下名為cgi-bin的目錄。
extension mapping
將文件擴(kuò)展名映射到解釋器或執(zhí)行腳本的運(yùn)行器(executable)。如腳本不要求運(yùn)行器,將忽略這個(gè)初始化參數(shù)。擴(kuò)展名映射的<param-name>必須以星號開頭,后跟小數(shù)點(diǎn),然后是文件擴(kuò)展名,如*.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>包含解釋器或可執(zhí)行腳本的運(yùn)行器的路徑,通過為每個(gè)映射建立單獨(dú)的<init-param>元素,可以建立多個(gè)映射。
Listing 8-3注冊CGIServlet時(shí)包含在WEB應(yīng)用程序部署符里的條目示例
<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服務(wù)器的主機(jī)名和端口名。
cgi-bin
映射到CGIServlet的url-pattern名。
myWebApp
WEB應(yīng)用程序名。
myscript.pl
Perl腳本名,位于cgiDir初始化參數(shù)指定的目錄中。
用ClasspathServlet提供CLASSPATH里的資源服務(wù)
如需提供系統(tǒng)CLASSPATH或WEB應(yīng)用程序的WEB-INF/classes目錄中的類或其它資源服務(wù),就要使用一個(gè)名為ClasspathServlet的特殊servlet。ClasspathServlet對于使用applets或RMI客戶和請求訪問服務(wù)器端類的應(yīng)用程序特別有用。隱含地,ClasspathServlet已被注冊,可用于任何應(yīng)用程序。
使用ClasspathServlet的兩種方法:
·要提供系統(tǒng)CLASSPATH的資源服務(wù),用如下URL調(diào)用資源:
http://server:port/classes/my/resource/myClass.class
·要提供WEB應(yīng)用程序的WEB-INF/classes中的資源服務(wù),用如下URL調(diào)用資源:
http://server:port/myWebApp/classes/my/resource/myClass.class
在這種情況下,資源位于相對于WEB應(yīng)用程序根目錄中的如下目錄:
WEB-INF/classes/my/resource/myClass.class
警告:由于ClasspathServlet提供位于系統(tǒng)CLASSPATH中的任何資源服務(wù),不要把不應(yīng)公開的資源放在系統(tǒng)CLASSPATH中。
將請求代理給另一個(gè)HTTP服務(wù)器
當(dāng)將Weblogic服務(wù)器作為主WEB服務(wù)器時(shí),也可能要配置Weblogic服務(wù)器傳遞,或代理某個(gè)請求給二級HTTP服務(wù)器,如Netscape Enterprise Server,Apache,Microsoft Internet Information Server,或Weblogic服務(wù)器的另一個(gè)實(shí)例。任何需要代理的請求被重定向到一個(gè)特定的URL。甚至能代理到不同機(jī)器上的另一個(gè)WEB服務(wù)器。代理請求基于進(jìn)入的請求URL。
HttpProxyServlet(發(fā)行版的一部分)接受HTTP請求,并把它重定向到代理URL,后臺通過Weblogic服務(wù)器將響應(yīng)送回客戶端的瀏覽器。要使用代理,必須在WEB應(yīng)用程序中配置它,并部署重定向請求的Weblogic服務(wù)器上的WEB應(yīng)用程序。
建立到二級HTTP服務(wù)器的代理
要建立到二級HTTP服務(wù)器的代理:
1.在WEB應(yīng)用程序部署描述符中注冊代理servlet(參考使用ProxyServlet的web.xml示例)。這個(gè)WEB應(yīng)用程序必須是響應(yīng)請求的服務(wù)器的默認(rèn)應(yīng)用程序。代理servlet的類名為weblogic.t3.srvr.HttpProxyServlet。更多信息參考部署和配置WEB應(yīng)用程序。
2.定義ProxyServlet的初始化參數(shù),<param-name>是redirectURL,<param-value>包含被代理請求定向至的服務(wù)器的URL。
3.映射ProxyServlet到一個(gè)<url-pattern>。特別地,映射希望代理的文件擴(kuò)展名,如*.jsp,或*.html。使用WEB應(yīng)用程序部署描述符web.xml中的<servlet-mapping>元素。
如將<url-pattern>設(shè)置為“/”,不能由Weblogic服務(wù)器解釋的任何請求將被代理到遠(yuǎn)程服務(wù)器。但是,也必須特別映射以下擴(kuò)展名*.jsp,*.htm,*.html,如要代理以這些擴(kuò)展名結(jié)尾的文件。
4.在重定向請求的Weblogic服務(wù)器上部署WEB應(yīng)用程序。
代理servlet的部署描述符示例
以下是使用代理Servlet的WEB應(yīng)用程序部署描述符的示例:
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服務(wù)器發(fā)行版的一部分)將請求從Weblogic服務(wù)器代理到Weblogic集群中的其它Weblogic服務(wù)器。HttpClusterServlet提供負(fù)載平衡和被代理的HTTP請求的failover.有關(guān)servlets和Weblogic集群的另外信息,參考理解HTTP會話狀態(tài)復(fù)制。
設(shè)置HttpClusterServlet
要設(shè)置HttpClusterServlet:
1.配置Weblogic服務(wù)器實(shí)例,它將請求代理給一個(gè)Weblogic服務(wù)器集群。使用Weblogic服務(wù)器管理控制臺:
a.在域中建立一新WEB應(yīng)用程序。
b.在域中建立一新服務(wù)器,或用默認(rèn)的。
c.將步驟a建立的WEB應(yīng)用程序指定為剛建立的服務(wù)器的默認(rèn)WEB應(yīng)用程序。
2.在步驟1建立的WEB應(yīng)用程序的部署描述符中注冊HttpClusterServlet(參考HttpClusterServlet部署描述符示例)。WEB應(yīng)用程序必須是響應(yīng)請求的服務(wù)器的默認(rèn)WEB應(yīng)用程序。更多信息參考指定默認(rèn)WEB應(yīng)用程序。
HttpClusterServlet的類名是eblogic.servlet.internal.HttpClusterServlet。一個(gè)HttpClusterServlet部署描述符示例如下。
3.為HttpClusterServlet定義適當(dāng)?shù)某跏蓟瘏?shù)。用WEB應(yīng)用程序部署描述符web.xml中的<init-param>元素定義初始化參數(shù)。必須定義defaultServers參數(shù),適當(dāng)?shù)、附加的參?shù)在表8-3HttpClusterServlet Parameters中描述。
4.映射代理servlet到一<url-pattern>。特別地,映射想要代理的文件擴(kuò)展名,如 *.jsp或*.html。
如設(shè)置url-pattern為“/”,Weblogic服務(wù)器不能解釋的任何請求將被代理到遠(yuǎn)程服務(wù)器。但是,也必須特別映射以下擴(kuò)展名 *.jsp ,*.htm 和*.html,如想代理以這些擴(kuò)展名結(jié)尾的文件的話。
另一個(gè)設(shè)置url-pattern的方法就是映射如/foo一樣的url-pattern,然后設(shè)置foo的pathTrim參數(shù),它從代理URL移除foo。
Table 8-3 HttpClusterServlet Parameters
<param-name><param-value>默認(rèn)值
defaultServers(必須的)以下形式的代理請求的目標(biāo)服務(wù)器的主機(jī)名和端口號列表:host1:HTTP_Port:HTTPS_Port host2:HTTP_Port:HTTPS_Port(其中host1 和 host2是集群里的服務(wù)器的主機(jī)名,HTTP_Port是監(jiān)聽HTTP請求的端口,HTTP_Ports是監(jiān)聽HTTP SSL請求的端口)用字符 分隔每個(gè)主機(jī)。如將secureProxy參數(shù)設(shè)為ON(參考secureProxy條目),HTTPS端口在運(yùn)行HttpClusterServlet的Weblogic服務(wù)器和集群里的Weblogic服務(wù)器之間使用SSL。即使將secureProxy設(shè)為OFF,也必須定義一個(gè)HTTPS端口。None
secureProxyON/OFF. 如為ON,HttpClusterServlet和Weblogic服務(wù)器集群的成員間使用SSLOFF
DebugConfigInfoON/OFF. 如為ON,an query the HttpClusterServlet for debugging information by adding a request parameter of ?_WebLogicBridgeConfig to any request. 由于安全方面的原因,在產(chǎn)品級環(huán)境推薦將此參數(shù)設(shè)為OFF。OFF
connectionTimeout一個(gè)套接字在讀取數(shù)據(jù)塊之間等待的時(shí)間量,以秒為單位。如超時(shí),就會拋出java.io.InterruptedIOException異常。0 = 無限時(shí)間
numOfRetriesHttpClusterServlet試圖重新連接失敗連接的次數(shù)5
pathTrimString to be trimmed from the beginning of the original URI. 原始URI開頭要刪去的字符串None
trimExtThe file extension to be trimmed from the end of the URI.URI結(jié)尾要刪去的文件擴(kuò)展名None
pathPrependString to be prepended to the beginning of the original URL, after pathTrim has been trimmed, and before the request is forwarded to a WebLogic Server cluster member.在請求被傳遞到一個(gè)Weblogic服務(wù)器集群成員之前,pathTrim已被刪去之后,原始URL開頭在添加的字符串。None
HttpClusterServlet部署描述符示例
以下是使用HttpClusterServlet的WEB應(yīng)用程序部署描述符web.xml示例:
Listing 8-5使用HttpClusterServlet的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>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.internal.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>defaultServers</param-name>
<param-value>
myserver1:7736:7737 myserver2:7736:7737 myserver:7736:7737
</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>