在 AIX Version 5.3 中使用 Java 和 PHP 技術(shù)進行開發(fā),第 1 部...
2007 年 7 月 12 日
在 AIX? 上開發(fā)一個 Java? 應用程序,并了解如何通過使用 PHP 接口擴展該應用程序以查看基礎(chǔ) Java 代碼。在 AIX 中可以開發(fā)使用 Java 和 PHP 技術(shù)的應用程序。在獲得使用 PHP 作為基于 Web 的接口平臺的好處的同時,您可以使用 Java 代碼作為核心邏輯(或者重新部署現(xiàn)有的基于 Java 的應用程序)。本文是系列文章的第 1 部分,研究了 AIX 中 Java 編程語言和 PHP 集成方法的基礎(chǔ),提供了使用這種結(jié)構(gòu)的示例應用程序的簡要概述,然后介紹了在安裝 Java 編程語言和 Apache Tomcat 以開發(fā)應用程序之前所需掌握的一些核心內(nèi)容。
PHP 是一種非常優(yōu)秀的 Web 開發(fā)語言,而在商業(yè)應用程序開發(fā)方面,Java? 編程語言十分流行。因此,為了在 AIX? Version 5.3 操作系統(tǒng)上充分利用它們的優(yōu)勢,專門開發(fā)了 PHP Java Bridge。本系列文章的目的是使得 AIX 5.3 開發(fā)人員能夠更快地在 Web 應用程序的開發(fā)中集成 PHP 和 Java 技術(shù)。
為了說明這一點,您將按照典型的開發(fā)過程來構(gòu)建一個簡單的問卷調(diào)查應用程序,具體內(nèi)容包括:
開發(fā)主要的 Java 應用程序
通過 Servlet 將 Java 應用程序公開為基于 Java 的 Web 應用程序
添加在數(shù)據(jù)庫中存儲信息的支持
將原始應用程序公開為 Web 服務,并為該應用程序提供 PHP 接口
使用專門的 PHP Java Bridge 重新開發(fā) PHP 接口
對于企業(yè)而言,在為應用程序開發(fā)新的接口的過程中,最常見的問題之一是如何設(shè)計解決方案。隨著向支持 Web 的應用程序的發(fā)展,通常需要為使用現(xiàn)有的語言和框架的現(xiàn)有應用程序開發(fā)基于 Web 的包裝器。
對于某些環(huán)境,這可能會導致一些問題,因為 Web 應用程序的部署情況可能基于完全不同的技術(shù),并且在許多情況下,某個特定環(huán)境的能力和優(yōu)勢始終不能得到最大程度利用。
甚至在開發(fā)新的應用程序時,也可能會出現(xiàn)同樣的問題,即 Web 開發(fā)專家習慣于某種環(huán)境,如 PHP,而您的業(yè)務應用程序邏輯專家則對 Java 技術(shù)有著豐富的經(jīng)驗。有些時候,您可能希望充分利用不同環(huán)境所提供的靈活性。PHP 允許對 Web 應用程序進行快速的應用程序原型設(shè)計,并且允許根據(jù)需要將 HTML 和嵌入的 PHP 命令混合在一起,這使得 Web 接口的開發(fā)變得非常容易。
盡管 Java 環(huán)境可以使用 Java Server Pages (JSP) 和本地解決方案(如用于 HTML 對象部署的 Struts)進行 Web 部署,但是它通常更適合用于大型應用程序中的核心應用程序邏輯。Java 環(huán)境具有強類型和標準化的特點,所以它更適合為復雜的業(yè)務應用程序開發(fā)解決方案。
關(guān)鍵是使用一種合適的解決方案,而該方案使您能夠為應用程序的不同部分(后端邏輯和前端接口)同時使用這兩種解決方案,并且使用 Java 和 PHP 技術(shù)的接口在兩種系統(tǒng)之間進行信息交換。
Java 和 PHP 技術(shù)之間并沒有直接的關(guān)聯(lián),它們是兩種不同的技術(shù),使用了完全不同的邏輯、二進制代碼和部署環(huán)境。然而,有一種方法可以使得兩種系統(tǒng)之間能夠相互通信,那就是使用面向服務的體系結(jié)構(gòu)(SOA)和 Web 服務來進行信息交換。在這個示例場景中,您將通過一系列 Web 服務來公開 Java 應用程序。然后,PHP 應用程序?qū)⒊洚?Web 服務客戶端,以便與 Java Web 服務接口進行通信。
另一種方法是使用 PHP Java Bridge,它提供了一個直接對象接口,該接口允許您在同一個應用程序中直接使用 Java 和 PHP 代碼。
在本系列文章和教程中,將詳細介紹如何開發(fā) Java 應用程序,并使用基礎(chǔ) Java 代碼的 PHP 接口對該應用程序進行擴展。
在本系列文章的學習過程中,您將構(gòu)建一個簡單的問卷調(diào)查系統(tǒng),該系統(tǒng)提供了一系列問題,并收集對這些問題的回答,然后在這些回答的基礎(chǔ)上提供統(tǒng)計分析。
在 Java 代碼中使用一個用于調(diào)查的基類構(gòu)建應用程序邏輯,以進行問卷調(diào)查。您還將構(gòu)建一個單獨的基類(保存問題的核心數(shù)據(jù)),通過對這個類進行擴展,您可以得到一些其他類以支持不同的響應類型(多項選擇、文本條目、評估等等)。您可以在
圖 1 中看到這個基本調(diào)查類的結(jié)構(gòu)。
要通過 Web 接口公開這個應用程序,您需要構(gòu)建一個 Java Servlet,它對原始問題類進行了擴展,支持以 HTML 的形式輸出這些問題,并接收響應。該元素的結(jié)構(gòu)如
圖 2 所示。
因為您可能希望能夠?qū)Y(jié)果信息進行存儲,所以需要構(gòu)建到 DB2? 數(shù)據(jù)庫的接口并對基本的 Survey 類進行擴展,以便能夠?qū)⒔邮盏降捻憫獙懭氲綌?shù)據(jù)庫中。
要提供針對該系統(tǒng)的 PHP 接口,可以在 Java 端對應用程序進行重新調(diào)整,使其作為一項 Web 服務,然后您可以從 PHP 應用程序中對其進行訪問,以提供可供選擇的接口。最后一項工作是,使用 PHP Java Bridge 重新部署該應用程序以實現(xiàn)系統(tǒng)性能的最大化。
要完成前兩個步驟,即開發(fā)核心應用程序然后將該應用程序部署為 Java Servlet,您需要安裝 Java 編程語言和 Apache Tomcat(一種 Java Servlet 部署環(huán)境)。讓我們首先來安裝和設(shè)置 Java 編程語言。
您需要安裝 Java Software Development Kit (SDK) Version 5 或更高版本,并且需要的是開發(fā)環(huán)境而不是運行時環(huán)境,因為您將需要把 Java 源代碼編譯成示例應用程序中的核心應用程序?qū)ο笏璧念悺?div style="height:15px;">
AIX Version 5.3 分發(fā)版中提供了 32 位的 Java V1.4 SDK,而您的系統(tǒng)中可能已經(jīng)安裝了該軟件,因為它是 WebSM 所必需的??梢酝ㄟ^運行 lslpp -L Java14.sdk 來進行驗證。IBM developerWorks 站點提供了 64 位的 Java 5 SDK(請參見
參考資料)。除了使用更新的 Java 發(fā)行版之外,64 位應用程序能夠在使用 64 位內(nèi)核的 64 位硬件上更高效地運行??梢园凑障铝胁襟E進行安裝:
下載 Java5_64.sdk.tar.gz 文件到您的系統(tǒng)。
使用 gunzip -c Java5_64.sdk.tar.gz | tar -xvf - 對 SDK 進行解壓縮。
以 root 用戶的身份,使用以下的命令行安裝 SDK: installp -a -d Java5_64.sdk all。
或者通過 SMIT:
運行 smitt install。
選擇 Install and Update Software。
選擇 Install Software。
指定包含映像的文件的全路徑(例如,/usr/local/src/Java4_64.sdk)。
單擊 OK。
單擊 OK 然后安裝 SDK。
Apache Tomcat 提供了一個 JSP 部署平臺。您可以通過它來部署使用 Web 接口或支持 Web 服務應用程序部署的 Java 應用程序。在本系列文章中,您將 Java 技術(shù)用作 Java 服務平臺,稍后將其作為 Java 和 PHP 交叉平臺開發(fā)的解決方案。
Tomcat 可能是最容易安裝和部署的系統(tǒng)組件。作為一個本地 Java 應用程序,在安裝了 Java 應用程序之后,安裝和設(shè)置 Tomcat 都是非常簡單的。
按照以下步驟安裝 Tomcat:
下載最新的 Tomcat 包(請參見
參考資料)。正如本文所述,V6.0.10 是 Apache Tomcat 最近的穩(wěn)定發(fā)行版。
使用 tar 和 gunzip 或 unzip 解壓縮 Tomcat 包: $ gunzip -c apache-tomcat-6.0.10.tar.gz|tar xvf -。
將解壓縮得到的目錄移動到您希望安裝 Tomcat 的位置,但請不要對所創(chuàng)建的目錄進行重命名。例如: $ mv apache-tomcat-6.0.10 /usr/local。
在真實的目錄和您希望使用的名稱之間創(chuàng)建一個符號鏈接。這使得可以在需要的時候,更方便地升級到更新的 Tomcat 版本: $ ln -s /usr/local/apache-tomcat-6.0.10 /usr/local/tomcat。
因為 Tomcat 是一個 Java 應用程序,所以無需遵循特殊的安裝或者構(gòu)建方法。您現(xiàn)在應該準備好了安裝并啟動 Tomcat。
在第一次啟動 Tomcat 之前,您應該再次檢查 Tomcat 系統(tǒng)的配置,以確保它與您的環(huán)境是匹配的。在檢查配置之前,有必要查看一下 Tomcat 安裝的基本目錄結(jié)構(gòu):
LICENSE
NOTICE
RELEASE-NOTES
RUNNING.txt
bin/
conf/
lib/
logs/
temp/
webapps/
work/
Tomcat 安裝中的關(guān)鍵部分如下所述:
bin 目錄包含主要的腳本以及控制和運行 Tomcat 應用程序的應用程序。該目錄中包括一些 Shell 腳本、本地 Windows? 應用程序和 Windows 批處理文件。您應該對該目錄中的 Shell 腳本運行 chmod 以確保您可以啟動、停止以及控制 Tomcat 的安裝: $ chmod ugo+x bin/*.sh。
conf 目錄包含一些保存了 Tomcat 配置信息的文件。在最初設(shè)置了 Tomcat 之后,幾乎不用再改變這些配置信息,因為可以通過 Tomcat 接口直接完成大多數(shù)安裝和部署工作。
lib 目錄中包含一些庫和 Java 代碼文件,而 Java 系統(tǒng)正是由這些內(nèi)容構(gòu)成的。
在安裝 Tomcat 服務器時將自動創(chuàng)建 logs 目錄,其中包含日志文件(包括錯誤日志)。
temp 目錄也是在安裝 Tomcat 服務器時自動創(chuàng)建的,其中包含各種臨時文件。
webapps 目錄是安裝您的 Web 應用程序組件的地方。您可以安裝 JAR 文件、WAR 文件和組成您的應用程序的 JSP 文件。在缺省情況下,Tomcat 包括文檔、示例和用于控制 webapps 目錄中 Tomcat 安裝的管理應用程序。
work 目錄包含正在運行的應用程序的工作組件,該目錄是 Tomcat 在運行時自動創(chuàng)建的。
現(xiàn)在,讓我們來檢查一下 Tomcat 的配置,因為您可能需要更新其中的部分配置,以適應您的環(huán)境。
Tomcat 中大量的選項使人眼花繚亂,這些選項用于配置各種功能和選項。對于標準安裝而言,通常大多數(shù)選項不需要您去操心。
但是可能需要對很多關(guān)鍵的元素進行配置。在缺省情況下,Web 服務器通常運行于 TCP/IP 的 80 端口,為了避免與其產(chǎn)生沖突,Tomcat 在端口 8080 上運行,但是在某些服務器上,可能已經(jīng)將其配置給另一個應用程序使用,如 Web 代理。
通過編輯 conf/server.xml 文件,您可以改變 Tomcat 所偵聽的缺省端口。您需要在 Catalina 服務里找到“Connector”塊,它通常位于該文件開頭的 50 行中。您可以參見
清單 1 中的示例。
<Service name="Catalina"> <!-- A "Connector" represents an endpoint by which requests are received and responses are returned. Documentation at : Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP) Connector: /docs/apr.html Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />
將端口屬性值更改為您希望使用的端口。如果需要,您可能還希望調(diào)整 redirectPort 屬性,其中包含了安全套接字層 (SSL) 連接所使用的端口。如果您更改了這個值,那么請確保同時更改 SSL 連接的端口規(guī)范,如
清單 2 所示。
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
如果您希望服務器特定主機上的服務能夠支持多個網(wǎng)絡接口或地址,那么您還必須修改主機名規(guī)范。需要在兩個位置對其進行設(shè)置,一處是在 Engine 標記中,而另一處是在特定的 Host 標記中,如
清單 3 所示。
<Engine name="Catalina" defaultHost="localhost"> ... <!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2. --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
您必須更改 defaultHost,然后更改相應的名稱屬性。
在配置中,您需要檢查的另一個文件是 conf/web.xml 文件。您暫時不需要編輯這個文件,但需要熟悉其中的內(nèi)容,因為在 Tomcat 服務器中設(shè)置附加的應用程序時必須編輯這個文件。
在安裝和配置了 Tomcat 之后,您可以啟動 Tomcat 服務器。首先,確保將 JAVA_HOME 環(huán)境變量設(shè)置為 Java 環(huán)境的正確安裝位置。如果您已經(jīng)安裝了 Java5_64,那么該安裝位于 /usr/java5_64(請參見
清單 4)。
$ JAVA_HOME=/usr/java5_64 $ export JAVA_HOME
您可能還希望在主要的 PATH 中顯式地添加 Java 執(zhí)行路徑,如
清單 5 所示。
$ PATH=$JAVA_HOME/bin:$JAVA_HOME/rje/bin:$PATH $ export PATH
另外,您還可以在一個環(huán)境變量中設(shè)置 Tomcat 安裝位置的路徑,以便更容易定位(請參見
清單 6)。
$ CATALINA_HOME=/usr/local/tomcat $ export CATALINE_HOME
現(xiàn)在,您應該能夠使用所提供的 Shell 腳本來啟動 Tomcat 了。啟動腳本將顯示配置信息(請參見
清單 7)。
$ $CATALINA_HOME/bin/startup.sh Using CATALINA_BASE: /Data/Incoming/apache-tomcat-6.0.10 Using CATALINA_HOME: /Data/Incoming/apache-tomcat-6.0.10 Using CATALINA_TMPDIR: /Data/Incoming/apache-tomcat-6.0.10/temp Using JRE_HOME: /usr/java5_64
如果其中報告了任何錯誤,那么您可能希望在 logs/catalina.out 中查看更詳細的日志信息。
清單 8 中顯示了一個輸出示例。
Mar 31, 2007 8:51:11 AM org.apache.catalina.core.AprLifecycleListener init INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/local/lib:/u sr/local/apr/lib:.:/usr/java5/extensions:/usr/java5/lib Mar 31, 2007 8:51:13 AM org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on http-8080 Mar 31, 2007 8:51:13 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 5262 ms Mar 31, 2007 8:51:13 AM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Mar 31, 2007 8:51:13 AM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.10 Mar 31, 2007 8:51:23 AM org.apache.coyote.http11.Http11Protocol start INFO: Starting Coyote HTTP/1.1 on http-8080 Mar 31, 2007 8:51:23 AM org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 Mar 31, 2007 8:51:23 AM org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/34 config=null Mar 31, 2007 8:51:23 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 10466 ms
其中應該包含有關(guān)出錯情況的更詳細信息。最常見的問題是與現(xiàn)有的服務發(fā)生端口沖突或者缺少 Java 安裝。
要對 Tomcat 安裝進行測試,一種比較簡單的方法是在其啟動之后訪問 Tomcat 服務器頁面。如果您沒有更改端口號,并且您的服務器上安裝了瀏覽器,那么可以使用瀏覽器進行訪問: http://localhost:8080/。
如果 Tomcat 服務器位于另一臺計算機或者您更改了端口號,那么可以替換上述示例中的 localhost 和 8080。例如: http://192.168.0.170:8080/。
您應該得到與
圖 3 所示類似的窗口。
在本文中,您簡要地了解了一些與在 AIX 中使用 PHP 和 Java 技術(shù)進行開發(fā)和部署的原因相關(guān)的問題,以及對這兩種系統(tǒng)進行集成的一些可用的解決方案。然后介紹了一個基本的應用程序,其中使用了 Java 后端和類,以便支持使用 PHP 通過 Web 接口進行擴展的不同操作。在本系列文章的下一部分中,您將使用 Java 技術(shù)開發(fā)核心應用程序邏輯。