WebObjects/Web 應用程式/部署/Windows
(修訂版 1.3;2002-08-29,檢視完整修訂版列表) 本文件的最新版本可以在 http://www.tetlabors.de/wo/setup_webobjects_on_windows.html 找到。
您可以對本操作指南做任何您想做的事,但風險自負。我對此概不負責。如果您不是這方面的專家,我建議您先為測試目的設定一個新系統,然後再將您新獲得的知識應用到實際系統中。
本操作指南介紹了 WebObjects 5.1 在 Windows 上的安裝。它最初是關於在 WinNT 上安裝 WebObjects 5.x 的電子郵件幫助,後來不斷發展。它涵蓋了在以下版本的 Windows 上安裝和配置 WebObjects 5.1 的大多數常見問題,包括開發和部署。
- Windows NT,工作站和伺服器版
- Windows 2000,專業版和伺服器版
- Windows XP Professional
本操作指南的主要內容是針對 Win2000 Server 上的開發安裝。文字中將簡要說明其他配置的差異。這仍然比 Linux/WO 部署更難,在 Linux/WO 部署中,您只有一個配置。
本操作指南不涉及 WebObjects 安裝後出現的部署問題。它以啟動 Monitor 結束。但是,可以透過以正確的方式安裝 WebObjects 來解決許多問題 :-),因此您仍然可以閱讀本操作指南。
如果您發現錯誤或想要提出建議、改進等,請透過此處聯絡我。
為了減少延遲,請準備好以下內容:
- 來自 Sun 的 Java2-SDK (http://java.sun.com/j2se/1.4/download.html)
- WebObjects 5.1 CD(請從 http://store.apple.com/ 獲取)
- 有效的序列號(來自 WO 5.0 或 WO 5.1)
- WebObjects 5.1 的最新更新;完整的補丁列表位於 http://docs.info.apple.com/article.html?artnum=70037
- 一些補丁來完成本操作指南(請從此處下載)
- WebObjects 4.x CD(僅在您已安裝 WebObjects 5.0 之前的版本時才需要)
如果您計劃在新機器上安裝,則還需要
- Windows CD(WinNT、Win2000 或 WinXP)
- 驅動程式 CD 或從網際網路上更新的驅動程式(如果您必須使用特殊硬體)
- Windows NT Option Pack CD(如果您計劃在 WinNT 上安裝 IIS)
- Windows 2000/XP CD(如果您想安裝恢復控制檯)
- 您所用 Windows 版本的最新 Service Pack/彙總包和修補程式(數量太多,無法一一列舉,請從 http://www.microsoft.com/ 開始搜尋)
在本操作指南中,您會多次看到“開啟 Shell”這一術語。這意味著您應該進入“開始”選單,點選“執行...”並輸入 cmd,然後按回車鍵。一個新的、空的視窗,帶有命令提示符,應該會開啟。當然,如果已經打開了一個 Shell,只需使用它即可……
本操作指南以 Windows 2000 Server 的安裝為例,但應適用於上述所有版本的 Windows。如果有什麼特別不同之處,文字中會有簡要說明。安裝過程基本是自解釋的,我只提及需要格外注意的步驟。
如果您計劃在 Windows 上進行實際部署,請忘記 Windows 的非伺服器版本。由於 Windows 許可證限制,工作站/專業版版本只允許 10 個併發連線到機器——透過網路共享開啟的檔案也計入連線。設定部署當然可以工作,但效能會非常差,您應該考慮購買 Windows Server 版本,或者使用 Linux/Apache 作為 Web 伺服器,只在 Windows 上部署應用程式。
首先是“基本設定”:插入 Windows CD 並啟動。如果您有啟動軟盤、網路資料夾或其他作為安裝檔案來源的內容,請使用它。在某些 OEM 版本或無人值守安裝中,可能只需要一些或無需任何輸入——在這種情況下,只需跳過相應的步驟即可。
<僅限 nt4 伺服器> 如果安裝程式詢問伺服器的角色,請選擇“單伺服器”。除非您知道自己在做什麼,否則不要選擇“域控制器”角色之一。在網路設定期間,您可以選擇安裝 Internet Information Server (IIS)。不要這樣做,因為它是一個過時的版本。請務必_取消選中_該複選框!不要使用 DHCP!請參見下面的“網路設定”瞭解解釋。</僅限 nt4 伺服器>
僅安裝全球資訊網伺服器、Internet Information Services 管理單元和所有必需的檔案。除非您確實需要,否則不要安裝 FTP、NNTP、SMTP。如果配置不正確,這些服務會為攻擊者提供極好的攻擊手段。
如果您安裝了多個作業系統,請停用除第一個作業系統之外的所有作業系統的夏令時,否則您會在一年中的兩次時間裡遇到很多麻煩……
選擇自定義網路設定,並輸入 IP 地址、子網掩碼、閘道器和 DNS 伺服器設定。不建議在伺服器上使用 DHCP,因為某些服務依賴於永久 IP 地址。如果您必須使用 DHCP(它畢竟是一個很棒的服務),請配置 DHCP 伺服器,使您的 WebObjects 機器始終獲得相同的地址(地址保留、IP 到 MAC 地址對映)。
為了能夠檢視周圍的其他計算機,輸入的 WORKGROUP 名稱必須與其他系統的 workgroup 名稱匹配。如果您進行基於域的設定,則不會有任何問題,只需將機器新增到您的域即可。
Win2000/XP 存在一個令人尷尬的習慣,即當網路介面卡沒有連線到網路時,會釋放其配置。因此,在啟動任何服務,尤其是在啟動過程中,請務必確保網路電纜已連線到活動站(其他機器或集線器/交換機)。如果不是這種情況,某些服務將在本地主機(127.0.0.1)上執行,當您嘗試連線時會遇到奇怪的錯誤。
<僅適用於 Win2000 伺服器> 第一次登入 Windows 時,您會看到“配置您的伺服器”對話方塊。除非您知道自己在做什麼,否則我建議您選擇“稍後配置此伺服器。”並單擊“下一步”。在下一頁,取消選中“啟動時顯示此螢幕”,然後關閉對話方塊視窗。如果需要,您可以稍後透過“開始,程式,管理工具,配置您的伺服器”返回。</僅適用於 Win2000 伺服器>
如果您需要安裝額外的驅動程式(例如圖形卡),請立即安裝。否則,您已完成基本 Windows 設定。以下是一些您現在可能想做的事情
如果您有多處理器系統,您應該能夠只啟用一個處理器(單 CPU HAL)來啟動 Windows。如果您在以後遇到硬體問題,並且必須在僅支援一個 CPU 的主機板上進行緊急引導,這將非常有用。此外,某些應用程式不能在多處理器系統上執行。要獲得單 CPU 支援,請在 c:\boot.ini 中新增一個新條目,並在末尾新增一個“/onecpu”開關。不要從本指南中複製貼上,因為磁碟和分割槽號可能因您的安裝而異,只需複製已存在的條目。
[operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows 2000 Server" /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows 2000 Server (one CPU)" /fastdetect /onecpu
您可能需要取消 c:\boot.ini 的防寫才能新增條目。開啟 shell 並輸入以下命令
attrib -r -s c:\boot.ini
無需事後新增防寫。
另一個有用的工具是 Windows 恢復控制檯,尤其是在 Windows 在啟動期間崩潰時(藍色畫面、錯誤的驅動程式、錯誤的配置、在新增新的硬碟後無法引導等)。Win2000 版本的恢復控制檯可以在所有版本的 Windows 上使用,而 WinXP 版本不能在僅執行 WinNT 的機器上使用。要新增它,請插入 Windows 2000/XP 光碟,開啟 shell 並輸入以下內容
cd /d <cdrom>:\i386 winnt32 /cmdcons
將向 c:\boot.ini 新增一個新條目,可以在安裝的作業系統列表中選擇該條目。
截至撰寫本文時,WinXP 尚未提供 Service Pack。根據需要安裝修補程式。對於 Win2000,請安裝 Service Pack 2 和所有必要的修補程式。對於 NT4,請安裝 Service Pack 6,然後安裝 SP6 後面的彙總包。這將為您提供 128 位加密強度。
插入 Windows NT Option Pack 光碟並安裝 Internet Explorer 4.01(或更高版本)。
完成後
啟動 <cdrom>:\setup.exe
安裝程式會警告您,Option Pack 未在 Service Pack 4 之後版本的 Service Pack 上測試過。單擊“是”以繼續。
選擇“自定義”作為安裝型別。
在下一個視窗中,取消選中所有元件,並對可能的警告回答“是”。
然後轉到“Internet Information Server (IIS)”,然後單擊“顯示子元件…”。
移至新選擇列表的末尾,然後選中“全球資訊網伺服器”。您可能想選中“文件”(位於列表的開頭)。所有依賴軟體元件將自動選中。
為了避免安全問題,除非您需要它並知道自己在做什麼,否則不要安裝以下內容
- FTP、SMTP、NNTP 伺服器
- 索引伺服器
- FrontPage 98 伺服器擴充套件
- 證書伺服器
- Microsoft 指令碼偵錯程式
- Windows 指令碼宿主
如果安裝程式要求您指定 WWW 服務的資料夾,您可以使用建議的“c:\inetpub\wwwroot”。
對於 Microsoft 事務伺服器,只需單擊“下一步”兩次。Option Pack 安裝程式最終應該完成。之後,您可能需要重新安裝 WinNT 的所有 Service Pack/更新,因為某些檔案可能已被 Option Pack 安裝程式覆蓋。
開箱即用的 NT/IIS 執行非常危險,因此我建議您使用此區域提供的安全指南之一。安全 IIS 安裝對於簡單的內部測試並不需要,但如果將未受保護的機器連線到網際網路,則應將其視為自殺行為。您已被警告。以下是一些可能有幫助的連結:www.microsoft.com/security/(然後從那裡深入瞭解)http://www.intersectalliance.com/projects/WinNTConfig/index.html(保護 WinNT)http://www.intersectalliance.com/projects/Win2kConfig/index.html(保護 Win2000)http://www.shebeen.com/iis4_nt4sec.htm(保護 NT 上的 IIS)http://www.intersectalliance.com/projects/IIS4Config/index.html(保護 IIS)有關更多資訊,請在 Google 中搜索“hardening+iis+against+attack”。
現在您已經擁有一個執行的 Windows 計算機 - 希望是安全的 :),我們可以為 WebObjects 安裝做準備。本部分中的內容適用於 WebObjects 5.0 和 5.1。
如果您使用的是帶有舊版本的 WebObjects 的現有機器,則必須在安裝 WebObjects 5.1 之前解除安裝它。在 WebObjects 4.5 光碟上,在 <cdrom>:\development\Windows\Uninstall 下,您會找到幾個目錄
- UninstallWO3.51
- UninstallWO4.0
- UninstallWO4.5
使用適合您版本的那個。要解除安裝 WebObjects 5.0,請使用“開始,控制面板,新增/刪除程式”。
內置於 WinNT 的 shell 根本無法與 WebObjects 配合使用。對於 Win2000 版本,如果命令列由於大量使用框架而超過 2000 個字元,則存在一些問題。因此,您必須替換 shell。好訊息是,您可以在每個版本的 Windows 上使用每個版本的 CMD.EXE,因此基本思想是從 WinXP 安裝中獲取 CMD.EXE 並用它替換預設 shell - 除非您執行 WinXP :)。
如果您沒有 Win2000/XP 光碟,您至少可以下載 Win2000 Service Pack 2(或 Windows XP Service Pack 1,因為它即將釋出),並從中提取 CMD.EXE。由於您可以免費下載 Service Pack,因此應該沒有法律問題。
在嘗試替換 shell 之前,請確保切斷對安裝檔案或 Windows 檔案保護的訪問,否則 Windows 檔案保護將在幾秒鐘內恢復舊版本。如果您是從光碟安裝的,請移除 Windows 安裝光碟。如果您透過網路安裝,請在開始替換之前拔下網路電纜。Windows 檔案保護在 WinNT 上不存在,您不必擔心。
在附加檔案包中(在這裡下載),有一個指令碼可以為您進行替換。如果您對提供的 CMD.EXE 感到不舒服,請隨意獲取您自己的 CMD.EXE 版本。
- 關閉所有開啟的 shell 視窗,因為如果 CMD.EXE 正在執行,則無法替換它。
- 雙擊與指令碼一起提供的 CMD.EXE;這將開啟一個新的(本地)shell,可用於替換預設 shell。
- 在開啟的視窗中,輸入:shellReplace
- 指令碼將備份 CMD.EXE 的原始版本到 CMD.EXE.ORIGINAL,然後用新版本替換它。一秒鐘後,Windows 檔案保護將開啟一個對話方塊,要求您插入 Windows 安裝光碟。在這裡按“取消”,然後在彈出的下一個視窗中回答“是”。
現在關閉 shell 並開啟一個新的 shell,方法是“開始,執行…,輸入 cmd 並按回車鍵”。檢視第一行顯示的內容
使用原始版本,shell 中的第一行應如下所示
- WinNT:Microsoft(R) Windows NT(TM)
- Win2000:Microsoft Windows 2000 [版本 5.00.2195]
- WinXP:Microsoft Windows XP [版本 5.1.2600]
如果您得到以下內容:Microsoft Windows XP [版本 4.0.1381],這意味著您實際上是在 WinNT 4.0 安裝(4.0.1381)上執行來自 WinXP 的 CMD.EXE。其他可能的組合留給讀者作為練習。 :-) 這是好事,很棒,而且所有人都愛它
現在,您應該更改 Dr.Watson 的配置,Dr.Watson 是 Windows 的整合崩潰記錄器和偵錯程式,以便它在沒有使用者互動的情況下執行。開啟 shell 並輸入
drwtsn32 -i
這將安裝 Dr. Watson 作為預設的應用程式偵錯程式,如果您安裝了 Visual Studio Debugger 並且此偵錯程式在每次應用程式崩潰後出現,這將很有用。
之後,輸入
drwtsn32
將彈出一個對話方塊視窗。您應該在此處使用以下設定
啟用(選中)
- ‘轉儲符號表’
- ‘轉儲所有執行緒上下文’
- ‘追加到現有日誌檔案’
停用(取消選中)
- ‘建立崩潰轉儲檔案’
- ‘視覺通知’
- ‘聲音通知’
這些設定指示 Dr. Watson 收集儘可能多的資訊並在沒有使用者互動的情況下完成。否則,崩潰的應用程式將不會終止,直到使用者單擊“確定”。
- ‘指令數量’:20
- ‘要儲存的錯誤數量’:50
這將儲存最後 50 個錯誤,每個錯誤的最後 20 條指令。
- ‘日誌檔案路徑’:將其設定為簡短且易於記憶的路徑。也許你已經有一個用於日誌檔案的資料夾;我一直使用 TEMP 資料夾。
接下來安裝 Java-SDK。SDK 的版本必須大於或等於 1.3.1,SDK 1.3.0 將不起作用。此外,你必須安裝 SDK,僅安裝執行時環境 (JRE) 將不起作用。
我建議使用 SDK 1.4.0 或更高版本,除非你遇到問題(有人提到過時間戳的問題)。特別是在多處理器系統上,1.4.0 的併發垃圾收集是一個很大的優勢。如果你進行跨平臺開發 (OSX/Windows),請確保從 Sun 下載完整的國際 SDK(最大的軟體包),因為只有此版本包含來自 Mac 的所有字型編碼。否則,你將收到異常,說明找不到 NSMacOSRomanStringEncoding。
執行 SDK 安裝程式。
使用建議的路徑(例如 c:\j2sdk1.4.0)。
你可以取消選中“原始碼”和“示例”,它們對於 WO 部署來說不是必需的。如果你需要,安裝 Java 外掛。
SDK 設定完成後,開啟 shell 並輸入
java -version
你應該看到類似這樣的輸出
java version "1.4.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92) Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)
幹得好!你現在可以安裝 WebObjects 了。
所有內容都已設定並正常執行,現在可以安裝 WebObjects 了。確保以具有管理員許可權的使用者身份登入。此部分也適用於 WebObjects 5.0 和 5.1。
在你的硬碟上建立一個新資料夾,並將 WebObjects 安裝 CD 的內容複製到該資料夾。不要使用網路上的共享資料夾,因為 Setup 需要在完成一半時重啟,如果它找不到 CD 的內容,就會失敗;會產生不良影響,你將留下一個無法使用的 WO 安裝……類似 c:\cdrom 的空資料夾就可以了。
支援檔案包包含多個版本的 NMServer.reg。選擇你需要的版本
- NMServer.reg.deployment - 如果安裝 WO 部署,則適用於所有版本的 Windows(原始版本存在錯誤)
- NMServer.reg.nt4-devel - 用於在 NT4 上進行 WO 開發(原始版本僅在 Win2000/XP 上執行)
- NMServer.reg.win2k-devel - 用於在 Win2000/XP 上進行 WO 開發(WO 預設包含的版本)
將適當的檔案重新命名為 NMServer.reg 並將其複製到
- c:\cdrom\Deployment\Windows\Install\NMServer.reg(用於部署)或
- c:\cdrom\Developer\Windows\Install\NMServer.reg(用於開發)。
根據安裝型別,執行
- 用於開發安裝:c:\cdrom\Developer\Windows\Setup.exe
- 用於部署安裝:c:\cdrom\Deployment\Windows\Setup.exe
要完成本操作說明中的所有步驟(如編譯介面卡),需要進行開發設定。正如某人說得好
開發 = 部署 + 開發工具
如果你只想安裝部署,只需跳過不需要的步驟。請注意,如果你只安裝部署,你將無法編譯 ISAPI 介面卡(它有一個醜陋的錯誤)。請務必也設定開發安裝(可能在另一臺機器上)。
接受許可協議。
輸入使用者名稱、公司名稱以及你的設定的相應序列號(在本例中為開發)。
我只在 WinNT 上見過這種情況,但它也可能在其他版本上發生:雖然你已經安裝了 Java2-SDK 1.4.0,但 Setup 卻抱怨說沒有 JRE,你需要安裝 Sun Java 1.3 或更高版本。在這種情況下,退出 Setup 並從支援檔案包中匯入 jresettings.reg 檔案(只需雙擊它即可)。你可能需要先用文字編輯器開啟它(記事本就可以了),然後修改其中的路徑設定。預設情況下,它指向 c:\j2skd1.4.0。如果你已將 SDK 安裝到該位置,則無需修改 jresettings.reg。
選擇“自定義安裝”。
選擇 C:\Apple 作為目標資料夾。你可以指定另一個驅動器號,但不要將 Apple 資料夾放在根資料夾以外的任何位置。如果你這樣做,就會遇到路徑過長的問題。此外,絕不要在路徑中使用空格!
在“選擇元件”中,不要更改任何內容;只需單擊“下一步”。
<僅限 winnt> 在此對話方塊之後,可能會彈出一個“ComponentAddItemError”對話方塊。只需單擊“確定”並從 Web 伺服器列表中選擇“其他”;然後單擊“下一步”。</winnt only>
‘CGI-BIN 目錄’:指定 IIS 指令碼資料夾的路徑,該資料夾通常位於 c:\inetpub\scripts。你可以使用“瀏覽...”按鈕來避免輸入錯誤。
‘文件根目錄’:IIS wwwroot 資料夾的路徑,通常為 c:\inetpub\wwwroot。
在所有後續對話方塊視窗中單擊“下一步”。Setup 應該開始將所有需要檔案複製到正確的位置。然後它會要求你重啟。執行重啟並再次登入,使用與之前相同的使用者名稱。Setup 將繼續安裝,並最終完成。在此之前不要中斷它,這會使安裝變得毫無用處!
Setup 完成後,安裝你使用的 WebObjects 版本的最新更新。當被要求重啟時,重啟系統。
恭喜!WO Setup 已完成。
將所有 WebObjects 檔案放在硬碟上並不意味著陽光馬上就會到來。這就是我所說的“WebObjects 安裝後的步驟”。
開啟“服務”
- 在 WinNT 上:‘開始,控制面板,服務’
- 在 Win2000/XP 上:開啟 shell 並輸入
%systemroot%\system32\services.msc /s 你會發現以下與 WebObjects 相關的服務。服務的名稱寫在了括號中 - 你可以使用該名稱從命令列啟動/停止這些服務。
這兩個服務在開發和部署中都已安裝
- Apple WebObjects 任務守護程式 5 (wotaskd5)
此服務管理所有正在執行的應用程式例項。它應該被設定為在開發和部署中自動啟動。
- Apple WebObjects 監控程式 5 (womonitor5)
此服務提供了一個使用者介面來建立新應用程式例項和管理現有應用程式例項,相當於 wotaskd 的前端。它不是啟動和管理應用程式例項所必需的,應該(出於安全原因)被設定為手動執行。要啟動它,開啟 shell 並輸入
net start womonitor5
在啟動需要的時間(通常只有幾秒鐘)之後,你可以開啟瀏覽器並指向 http://<myhost>:56789 以檢視第一頁。為了提高安全性,請轉到“首選項”選項卡並設定訪問監控程式的密碼。然後像平時一樣使用它。要停止使用,請輸入
net stop womonitor5
在 WebObjects 5.0 中,wotaskd 和 Monitor 預設情況下不會作為服務安裝。若要更改此設定,你需要使用支援檔案包中的 instsrv 和 srvany 工具。以下是如何將 wotaskd 和 Monitor 安裝為服務的快速分步指南,有關更多資訊,請參閱 srvany.exe 附帶的 srvany.doc
- 右鍵單擊“開始”選單按鈕,然後選擇“瀏覽所有使用者”。在開啟的資源管理器視窗中,轉到“程式,啟動”。
將“啟動任務守護程式”快捷方式從啟動資料夾中移出,以阻止 wotaskd 在你登入時啟動。我一直將其放在“WebObjects”資料夾中,但你也可以刪除它。
- 將 srvany.exe 複製到易於記憶的位置,如 C:\Apple(或 C:\WinNT)。
開啟 shell 並輸入 instsrv wotaskd c:\apple\srvany.exe
- 開啟 RegEdit 並轉到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wotaskd
將 DisplayName 屬性更改為“Apple WebObjects 任務守護程式”。如果 Start 屬性不是 2,則將其更改為 2。這意味著該服務應該自動啟動。
- 在 wotaskd 鍵下,新增一個新的子鍵,並將其命名為 Parameters。
在此子鍵下,建立一個新的 Application 屬性(型別為字串),其值為:C:\Apple\Library\WebObjects\JavaApplications\wotaskd.woa\StartWOTaskD.exe 不要在這裡使用 %NEXT_ROOT% - 當服務即將啟動時,此變數可能還不存在,從而導致失敗。請改用 WebObjects 根資料夾的絕對路徑名。
- 建立第二個字串值屬性 AppDirectory,其值為 C:\Apple\Library\WebObjects\JavaApplications\wotaskd.woa
- 重啟系統
重啟後,你應該能夠從另一臺機器上檢視 http://<myhost>:1085,而無需登入到 Windows 計算機。如果這能正常工作,說明你已正確完成所有操作。
如果你還想將 Monitor 安裝為服務,請執行以下操作。
- 開啟 shell 並輸入:instsrv womonitor c:\apple\srvany.exe
- 開啟 RegEdit 並轉到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\womonitor
將 DisplayName 更改為“Apple WebObjects 監控程式”。將 Start 更改為 3,這意味著“手動啟動”。如果你不需要關心安全性,可以將其設定為 2(自動啟動)。
- 在 womonitor 鍵下,新增一個新的子鍵,並將其命名為 Parameters。
在此子鍵下,建立一個新的 Application 屬性(型別為字串),其值為:C:\Apple\Library\WebObjects\JavaApplications\JavaMonitor.woa\JavaMonitor.cmd
- 建立一個第二個字串屬性 AppDirectory,其值為
C:\Apple\Library\WebObjects\JavaApplications\JavaMonitor.woa
- 要每次在埠 56789 上啟動 Monitor,請新增第三個字串屬性 AppParameters,其值為:
-WOPort 56789
您也可以在這裡指定更多命令列引數。現在,嘗試啟動 Monitor。開啟一個 shell 並輸入 net start womonitor 等待幾秒鐘後,開啟您的瀏覽器並訪問 http://<myhost>:56789。您應該會看到 Monitor 的起始頁。
- Apple Mach Daemon (Apple_Mach_Daemon) 和 Apple Netname Server (Apple_Netname_Server)
這兩個服務(以及 Pasteboard Server 和 Window Server)為在 Windows 上執行 YellowBox 應用程式(大多數 WebObjects 開發者工具)提供了基礎。您不必關心它們,只需將它們設定為自動啟動即可。
- openexec (openexec)
此服務啟動 Openbase 資料庫引擎並提供幾個示例資料庫。如果您不想使用 OpenBase,您可以將啟動型別設定為“手動”來節省記憶體,這將阻止此服務自動啟動。要刪除當前正在執行的 Openbase 程序,您可以重新啟動或使用“kill”工具(包含在支援檔案包中)殺死所有相關程序。開啟一個 shell 並輸入
kill OpenBase.exe kill pgroup.exe kill databackup.exe kill openinfo.exe
除非您確信自己要做什麼,否則永遠不要將條目的啟動型別設定為“停用”!“手動”服務可以根據需要從系統啟動,而“停用”服務根本無法啟動(除非您選擇其他啟動型別)。停用錯誤的服務可能會阻止系統啟動,不建議這樣做。
除了所有這些服務之外,對於開發安裝,在“所有使用者”啟動資料夾中還有兩個快捷方式,它們具有以下設定
- Pasteboard Server
Target: %NEXT_ROOT%\Library\Frameworks\AppKit.framework\Resources\pbs.exe
Start in: %NEXT_ROOT%\Library\Frameworks\AppKit.framework\Resources
Run: Minimized
- Window Server
Target: %NEXT_ROOT%\Library\System\WindowServer.exe
Start in: %NEXT_ROOT%\Library\System
Run: Minimized
“Pasteboard Server”和“Window Server”會在每次新使用者登入時啟動。使用快速使用者切換,可以同時登入多個使用者,導致 Pasteboard Server 和 Window Server 啟動多次。這兩個程式都不喜歡這種情況,會停止工作,進而導致開發者工具(ProjectBuilder、EOModeler、WOBuilder)也停止工作。 ;-(
解決方法:如果機器上只有一個使用者使用 WebObjects 進行開發,請將 Pasteboard Server 和 Window Server 的快捷方式從“所有使用者”啟動資料夾移動到相應使用者的個人啟動資料夾。如果機器上有多個使用者使用 WebObjects 進行開發,請確保他們不要同時登入。如果其他方法都不奏效,您可以停用快速使用者切換。
安裝 WebObjects 更新時至少存在兩個錯誤
- 您自己更改的檔案不會更新,更新程式只會靜默跳過它們。因此,如果您想確保某個檔案已更新,請將其重新命名(例如,為 <filename.extension.OLD>),然後再次執行更新。
- 每次執行更新時,都會將 WebObjects 相關資料夾新增到 PATH 變數中。根據更新安裝的頻率,這可能會導致路徑變得非常長。更新完成後,請手動清理 PATH 變數。
在控制面板中開啟“系統”。在“高階”選項卡上,單擊“環境變數”,然後單擊要更改的使用者變數或系統變數的名稱,如下所示:單擊“新建/編輯/刪除”新增/更改/刪除新的變數名稱和值。您可能需要關閉並重新開啟正在執行的程式,以使新的設定生效。要使用新值更新所有正在執行的服務,最好(也是更不容易出錯)重新啟動機器一次。
WO 設定完成後,應存在以下環境變數
- LIB
其中包含 WebObjects 開發者工具使用的幾個庫的路徑,應指向 C:\Apple\Developer\Libraries。您通常不必在這裡更改任何內容,這裡只是為了完整性而提及。
- NEXT_ROOT
新建:不要將 NEXT_ROOT 中的斜槓更改為反斜槓!保持原樣即可。如果您這樣做,介面卡原始碼的編譯將失敗。我之前版本中建議過其他方法,這是我的錯。
- PATH
以下三個條目是 WebObjects 唯一需要的條目,但通常會透過執行 WebObjects Update 進行復制。這不會造成損害,只是會使 PATH 變數變得過長。確保只包含以下條目一次(假設您已將 WebObjects 安裝到 C:\Apple):C:\Apple\Library\Executables; C:\Apple\Library\JDK\bin; C:\Apple\bin;
- TEMP
對於用於開發和執行 WebObjects 應用程式的使用者帳戶,請從使用者變數部分中刪除 TMP 和 TEMP,並將它們新增到所有使用者部分。將 TEMP 和 TMP 更改為沒有空格的路徑,例如 c:\temp。如果您尚未建立 c:\temp,則可能需要建立它。我認為,這樣可以更容易地找到啟動指令碼殭屍、日誌檔案和其他 WebObjects 臨時內容。
要清理殭屍,您也可以使用您編寫的任何應用程式,並在帶有“clean”引數的 shell 中啟動它
cd myapp.woa myapp.cmd clean
- WEBOBJECTS_JAVA_EXTENSIONS
這包含用於附加 JAR 檔案的擴充套件資料夾的路徑。典型的路徑是 C:/PROGRA~1/Java/J2RE14~1.0/lib/ext。請確保這裡不要使用空格,要麼將您的 JRE 移動到另一個資料夾,要麼使用短名稱(8dot3 符號,如舊的 MSDOS)。
- WEBOBJECTS_JAVA_HOME
這指定了您編寫的 WebObjects 應用程式使用的 SDK 的路徑。典型的路徑是 C:/J2SDK1~1.0。與上面一樣,路徑名稱中不要使用空格。
與您在此處指定的 SDK 不同,WebObjects 開發者工具始終使用 %NEXT_ROOT%\Library\JDK 中的 JDK 1.1.8 - 您不必關心這一點。
如果您已安裝 WebObjects Development 但想充分利用其部署功能(例如多個例項、無限制請求等),則必須將您的許可證升級到部署版本。有兩種方法可以做到這一點。第一種方法是使用許可證升級程式。開啟一個 shell 並輸入
%NEXT_ROOT%\Demos\JavaWebObjectsLicenseUpgrader.app\JavaWebObjectsLicenseUpgrader.exe
或者,您可以透過“開始,程式,WebObjects,WebObjects 5 許可證升級程式”開啟它。第二種方法(如果許可證升級程式沒有啟動)是使用文字編輯器(記事本就可以了)編輯金鑰檔案。只需啟動編輯器並開啟
%NEXT_ROOT%\Library\Frameworks\JavaWebObjects.framework\Resources\License.key
刪除舊的許可證金鑰並插入新的許可證金鑰。
您必須重新啟動 wotaskd 和(如果正在執行)Monitor,以使更改生效
net stop wotaskd5 net stop womonitor5 net start wotaskd5 net start womonitor5
IIS 介面卡中存在一個嚴重的錯誤,當它承受重負載時會極大地降低效能。您每秒將達到大約 3 到 5 個請求,記憶體會以極快的速度被佔用,導致在建立幾個會話後出現 OutOfMemoryExceptions。無論何時使用 ISAPI 介面卡,即使您的應用程式在使用不同作業系統的另一臺機器上執行,也會發生這種情況。
幸運的是,Karl Hsu 找到了一個解決方法,我對此非常感謝。感謝 Karl!Karl 指出,只有在遇到嚴重效能問題時才應合併此修復程式,因此請在修補之前進行一些測試。Apache Benchmark 工具 ab(包含在支援檔案包中)可用於此目的。
這兩個檔案 request.h 和 request.c 都位於 %NEXT_ROOT%\Developer\Examples\WebObjects\Source\Adaptors\Adaptor 中
包含以下程式碼的 request.h 和 request.c 的修補版本也包含在支援檔案包中。如果您沒有對這兩個檔案進行過更改,則可以將它們複製到 %NEXT_ROOT%\Developer\Examples\WebObjects\Source\Adaptors\Adaptor 並立即開始編譯。
否則,在 request.h 中,搜尋 #include "WOURLCUtilities.h" 並將以下行新增到其下方
#include "wastring.h"
在 request.c 中,搜尋方法 'int req_sendRequest' 的開頭(大約在第 217 行),並在 _before_ 新增以下程式碼塊
#ifdef WIN32
static void req_appendHeader(const char *key, const char *val, String *headers)
{
int valLength = strlen(val);
while (val[valLength - 1] == '\r' || val[valLength - 1] == '\n') {
valLength--;
}
str_append(headers, key);
str_appendLiteral(headers, ": ");
str_appendLength(headers, val, valLength);
str_appendLiteral(headers, "\r\n");
}
int req_sendRequest(HTTPRequest *req, net_fd socket)
{
struct iovec *buffers;
int bufferCount, result;
String *headersString;
buffers = WOMALLOC(3 * sizeof(struct iovec));
headersString = str_create(req->request_str, 0);
if (headersString) {
st_perform(req->headers, (st_perform_callback)req_appendHeader, headersString);
}
buffers[0].iov_base = headersString->text;
buffers[0].iov_len = headersString->length;
buffers[1].iov_base = "\r\n";
buffers[1].iov_len = 2;
bufferCount = 2;
if (req->content_length > 0)
{
bufferCount++;
buffers[2].iov_base = req->content;
buffers[2].iov_len = req->content_length;
}
result = transport->sendBuffers(socket, buffers, bufferCount);
str_free(headersString);
WOFREE(buffers);
if (result == 0)
result = transport->flush_connection(socket);
else
WOLog(WO_ERR, "error sending request");
return result;
}
#else
現在,在這個 #else 之後是原始的 req_sendRequest 方法。轉到此方法的末尾,並在下一行插入一個 #endif。當您成功修補原始檔後,就該...。
下一個錯誤:makefile 預期 OS 環境變數為空或包含字串“WINDOWS”。不幸的是,OS 的值是 WINDOWS_NT 而不是 WINDOWS,因此 make 程序將無法編譯 ISAPI 介面卡。你可以修改 makefile 使其相容 WINDOWS_NT,但你需要進行很多修改。
相反,讓我們直接修改 OS 變數。但是,不要透過控制面板永久更改它,因為我不知道它是否在其他地方需要。只需在編譯前將其設定為正確的值即可。開啟一個 shell 並輸入
cd /d %NEXT_ROOT%\Developer\Examples\WebObjects\Source\Adaptors set OS=WINDOWS make clean make
如果編譯成功(沒有錯誤訊息),我們現在應該擁有 WebObjects 介面卡作為 EXE(CGI)和 DLL(ISAPI)檔案。這兩個檔案應該被複制到正確的位置(將 c:\inetpub 更改為匹配你的系統)。
net stop w3svc copy /y cgi\webobjects.exe c:\inetpub\scripts copy /y iis\webobjects.dll c:\inetpub\scripts net start w3svc
在複製之前停止 IIS 可以防止 ISAPI 介面卡出現可能的共享衝突,因為如果 IIS 已經載入了該檔案,你無法覆蓋它。
現在你已經編譯了 ISAPI 介面卡,你需要配置它。對於單伺服器部署(IIS 和 wotaskd 在同一臺機器上),無需進一步配置。但是,如果你在另一臺機器上執行 wotaskd,或者想要使用多個應用程式伺服器,你需要告訴介面卡在哪裡尋找它們。對我來說始終有效的做法是透過登錄檔中的主機列表。
開啟 Regedit(開啟一個 shell 並輸入 regedit)並轉到
HKEY_LOCAL_MACHINE\SOFTWARE\Apple\WebObjects\
如果它不存在,建立一個新的子鍵並將其命名為“Configuration”。然後轉到
HKEY_LOCAL_MACHINE\SOFTWARE\Apple\WebObjects\Configuration
並新增以下兩個鍵(型別為 REG_SZ)
CONF_INTERVAL 10
這意味著 ISAPI 介面卡每 10 秒將與 wotaskd 通訊並重新讀取配置。
CONF_URL http://host1:1085,http://host2:1085,http://host3:1085
這是一個所有執行 wotaskd 的主機的逗號分隔列表。1085 是預設埠。只需新增所有應用程式伺服器,並確保不要在逗號後面加空格 - WO 不喜歡空格。如果你有固定的 IP 地址,你可以指定它們,否則使用主機名並確保 IIS 機器可以將主機名解析為有效的地址。如果所有機器都執行 Windows,這應該不成問題,否則你需要使用 DNS 伺服器或主機檔案。
現在一切都應該設定好了,是時候進行一個小測試了。首先,讓我們看看 wotaskd 是否正在執行。
開啟瀏覽器並轉到 http://<myhost>:1085
If it works, you should see the host's configuration displayed in the browser. Now, open a shell and start Monitor if it is not already running: net start womonitor5
等待幾秒鐘,然後將瀏覽器指向 http://<myhost>:56789
你應該會看到 Monitor 的主視窗。現在你可以開始編寫和部署應用程式了。玩得開心!
問:執行 WO 應用程式時,我一直收到以下異常
java.io.UnsupportedEncodingException: NSMacOSRomanStringEncoding
答:確保 charsets.jar 庫位於你的 Java 執行時路徑中。它安裝在 JDK 中,但不一定安裝在 JRE 中。
1.3: 2002-08-29 - 刪除了將 NEXT_ROOT 中的斜槓更改為反斜槓的建議,因為這會破壞介面卡原始碼的編譯
1.2: 2002-07-26 - 在 WebObjects 5.0 中添加了將 wotaskd 和 Monitor 安裝為服務的步驟
1.1: 2002-07-10 - 為 WinNT 上的 WebObjects 設定期間出現的錯誤添加了兩個解決方法
1.0: 2002-07-09 - 首次公開發布
0.9: 2002-06-28 - 開發中