Jive talkin':開放源碼的 Java 論壇軟件 將 Jive 與您的網站相結合 Jay Allen (allenj@us.ibm.com(allenj@us.ibm.com))lockerjock.com 公司總裁2001年2月 Jive 是一個開放源碼的 Java 論壇軟件,它允許在網站上進行線程化的討論。它提供了性能優秀的用戶定義的 JSP 文件(用 Jive 的外殼)來完全改變論壇的外觀、形象和功能。并提供了一個可植入的 API, 這些 API 提供諸如及時翻譯、內容過濾或者幾乎其它所有功能的先進特性。然而除此之外還有很多的自由論壇, Jive 的獨到之處是它的全部代碼都用 Java 編寫并且被一個專注的程序員群體熱情的支持著。在這篇文章中,將討論到如何將 Jive 結合到 lockerjock,一個有關運動題材的網站。 lockerjock.com 是一個有關運動題材的站點,它以每日提問、全球競賽排行榜、問題統計、民意測驗、和有關細節題材為主要特征。隨著大量用戶開始從站點中得到更多的樂趣,站點需要一個論壇讓可以讓用戶進行交互。我們考慮自己編寫一個論壇軟件,但是由于開發 lockerjock; 所付出的大量勞動而感到疲勞,并且白手起家編寫論壇軟件所到來的挑戰使我們有些氣餒,因此,我們開始尋找一些已有的優秀的論壇軟件。 注:可以利用 Jive 的內建 數據庫連接池或者使用許多 J2EE 應用程序服務器的內建連接池。 很快我們就決定采用 Jive,正如 lockerjock.com 一樣, Jive 采用服務器端 Java,支持我們的數據庫(mySQL)和應用服務器(JRun),并采用 JSP 文件表示。我們不僅是只有一個論壇,而是可以有很多個性化的論壇。所有的論壇都能很好的和 lockerjock.com 結合在一起。安裝 Jive 和創建 Jive 表一樣簡單。將 jive.jar 文件拷貝到 classpath 目錄下,將論壇和管理 JSP 文件放在站點的合適的位置,并運行 Jive 安裝頁面。唯一的問題就是我們的 JSP 版本是 0.92,而 Jive 需要 JSP 1.0 或者更高的版本。因此我花了幾天時間將 JSP 升級到最新版本。 Jive 是如何工作的? Jive 由一系列的存在 SQL 數據庫中的表以及一系列的類庫組成,這些表中存放論壇數據,類庫操縱表、JSP 文件,并能顯示論壇數據。兩套待用的 JSP 文件和 Jive 一起提供;它們的功能相同,顯示論壇并允許用戶和論壇交互。lockerjock.com 用的一套是 viewForum.jsp,viewMessage.jsp 和 post.jsp。這些 JSP 文件的功能如它們的名字一樣。 如果想在發送消息和訪問論壇時使用 Jive 驗證方案,正好可以使用這些文件。 Example 1: 一個簡單的 Jive 應用程序 清單 1 列出的 JSP 文件利用了 Jive 主要對象來顯示一個給定論壇中線程的名稱。后面會詳細的討論每個對象和方法,但是這里給出的概念對理解 Jive 是如何工作是非常重要的。 l 在開始任何 Jive 操作之前,首先創建一個 Jive 授權令牌,在本例中將創建一個匿名授權令牌。 l 利用授權令牌,創建一個具體的論壇工廠。 l 從論壇工廠創建一個論壇,如果授權令牌的許可和論壇的許可集不匹配,將拋出一個異常,而且用戶不能訪問論壇。 l 對論壇中的每一個線程迭帶,打印出每個線程的名稱。 清單 1:打印論壇中每個線程的名字 <%@ page import="java.util.Iterator,com.coolservlets.forum.*" %> <% //JSP to print out the names of all the threads in a forum. //Get an anonymous authorization object. Authorization auth = AuthorizationFactory.getAnonymousAuthorization(); ForumFactory factory = ForumFactory.getInstance(auth); //Loading a forum object throws an Unauthorized exception if the //the permissions set on the forum don't correspond to your access level. try { //Load the forum named myForum Forum forum = factory.getForum("myForum"); //Get an iterator for all the threads in myForum Iterator threads = forum.threads(); while (threads.hasNext() ) { ForumThread thread = (ForumThread)threads.next(); %> <%= thread.getName() %> <% } } catch (UnauthorizedException ue) { System.err.println("You do not have permission to read this forum."); } %> |
|