Weblogic6.0部署與設置WEB應用程序(4)
發表時間:2024-06-21 來源:明輝站整理相關軟件相關文章人氣:7
[摘要]Weblogic服務器如何解釋HTTP請求當Weblogic服務器收到HTTP請求,它是這樣解釋這個請求的:通過分解URL的各個部分,然后根據這些信息來決定是哪一個WEB應用程序或服務器應處理這個請求。下面示例演示了對WEB應用程序,虛擬主機,servlets,JSPs和靜態文件的請求的不同組合以...
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 host2:HTTP_Port:HTTPS_Port(其中host1 和 host2是集群里的服務器的主機名,HTTP_Port是監聽HTTP請求的端口,HTTP_Ports是監聽HTTP SSL請求的端口)用字符 分隔每個主機。如將secureProxy參數設為ON(參考secureProxy條目),HTTPS端口在運行HttpClusterServlet的Weblogic服務器和集群里的Weblogic服務器之間使用SSL。即使將secureProxy設為OFF,也必須定義一個HTTPS端口。None
secureProxyON/OFF. 如為ON,HttpClusterServlet和Weblogic服務器集群的成員間使用SSLOFF
DebugConfigInfoON/OFF. 如為ON,an query the HttpClusterServlet for debugging information by adding a request parameter of ?_WebLogicBridgeConfig to any request. 由于安全方面的原因,在產品級環境推薦將此參數設為OFF。OFF
connectionTimeout一個套接字在讀取數據塊之間等待的時間量,以秒為單位。如超時,就會拋出java.io.InterruptedIOException異常。0 = 無限時間
numOfRetriesHttpClusterServlet試圖重新連接失敗連接的次數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結尾要刪去的文件擴展名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.在請求被傳遞到一個Weblogic服務器集群成員之前,pathTrim已被刪去之后,原始URL開頭在添加的字符串。None
HttpClusterServlet部署描述符示例
以下是使用HttpClusterServlet的WEB應用程序部署描述符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>