原文引用:
http://flylijian.spaces.live.com/
opencms 介紹及在weblogic8下的部署
- 直接從WEB站點的前臺編輯內容
- 自動在線/離線工作流
- 靈活的內容資源
- 集成全文搜索引擎
- 所見即所得編輯非結構化內容
- 結構化內容采用易于定義的基于XML的內容項目
- 在一個應用中管理多個站點
- 全文搜索支持PDF、Word、Excel文檔資源
- 為所有的存儲資源均可進行配置
- 基于時間的自動內容發布和過期
- 完全支持統一編碼內容
- ACL(Access Control List 訪問控制表)權限控制系統
- 可選的HTML靜態導出
- 基于JSP的模版機制
- 模塊具有版本控制
? 詳細請瀏覽其官方網址http://www.opencms.org
二。 weblogic8下的部署前的準備工作
1。目前穩定版本為6.2.3,但對應開發者和學習使用的可以下到它的最新開發版本7.0版;
2。使用eclipse自帶的cvs插件下載其最新版本
???? 1)cvsroot為:pserver:anon@cvs.opencms.org:/usr/local/cvs
???2)密碼為anon,取分支cvs checkout -r DEV_7_0 opencms可以得到最新源代碼.
3. 安裝weblogic8,我使用的是platform812_zh_CN_win32.exe版本。
4. 缺省安裝完weblogic8后,運行它的配置向導,新建一個basic weblogic server domain,域名改名為opencms,其它全部采用默認設置完成。
5.weblogic域創建成功后,缺省在bea安裝目錄下會生成user_projects\domains\opencms
三。兩種部署opencms方式
a)取下來的opencms源碼中提供了ant方式,可以直接生成war包進行部署,即采用war方式進行部署;這是最簡單和最方便的部署方式 ,但對于開發者來說這應該算是屬于產品發布階段的部署,因此調試起來會很不方便;
b)另一種方式是直接把源代碼目錄部署到weblogic下,這樣可以很方便的進行調試;由于通過weblogic的控制臺只能進行
?? war和ear的部署,所以我們只能直接修改它的配置文件進行部署。
我們采用第二種方式進行部署
1。首先在eclipse編譯取下來的源碼,由于取下來的源碼還需要第三方的jar文件,如ant.jar;找到相應的jar文件引
?? 入進來,另外在它的模塊文件中還引用了其它的文件,如果確定用不上可以先全部刪除掉以便可以正確編譯成功;
2.編譯時最好使用jdk1.4的版本,或直接使用bea自帶的jdk進行編譯,一會兒我會說明原因;
3.編輯user_projects\domains\opencms\config.xml,添加如下內容
?? ?? <Application Deployed="true" Name="opencms"
??????? Path="D:\eclipse3.2.1\eclipse\workspace\opencms\webapp\.\."
??????? StagedTargets="myserver" TwoPhase="false">
??????? <WebAppComponent DeploymentOrder="1001" Name="opencms"
??????????? Targets="myserver" URI="."/>
??? </Application>
??? <ApplicationManager Name="opencms"/>
其中Path="xxxx"中的內容為你的opencms實際安裝目錄
4.修改weblogic啟動文件user_projects\domains\opencms\startWebLogic.cmd
? 引如如下jar文件:
echo CLASSPATH=%CLASSPATH%
set OPEN_CMS=D:\eclipse3.2.1\eclipse\workspace\opencms
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-logging-1.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\activation.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\alkacon-diff-0.9.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\alkacon-simapi-0.9.4.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\ant-contrib-1.0b1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\ant-opencms-1.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-beanutils-1.7.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-codec-1.3.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-collections-3.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-dbcp-1.2.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-digester-1.7.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-email-1.0-mod.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-fileupload-1.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-httpclient-3.0.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\commons-pool-1.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\dom4j-1.6.1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\htmlparser-1.5-20050925.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jakarta-oro-2.0.8.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jaxen-1.1-beta-4.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jstl-1.1.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jtidy-r8-05102004.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\jug-1.1.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\junit-3-8-1.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\log4j-1.2.9.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-analyzers-2.0.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-core-2.0.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-highlighter-2.0.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\lucene-snowball-2.0.0.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\mail.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\mysql-connector-java-3.1.12-bin.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\PDFBox-0.7.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\pg74.216.jdbc3.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\poi-2.5.1-final-20040804.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\quartz-1.4.5.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\servlet.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\standard-1.1.2.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\atm-extractors-0.4.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\xercesImpl.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\webapp\WEB-INF\lib\xml-apis.jar
5.到目前應該可以運行了,在運行中可能會出現各種各樣的問題(依據取下來的版本),按下列方法進行處理
6.點擊user_projects\domains\opencms\startWebLogic.cmd啟動服務;觀察控制臺和user_projects\domains\opencms\myserver下的日志文件,查看錯誤提示;
下面是我運行中碰到的錯誤進行的相應的調整
1)控制臺報The WebLogic Server did not start up properly.
java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848
錯誤原因及解決辦法:MBeanAttributeInfo的serialVersionUID的版本控制id不一樣,說明是使用這個被使用的bean被修改過了,很顯然是版本不對;修改startWebLogic.cmd文件,設置set JAVA_HOME=D:\bea\jdk141_05,使其指向weblogic自帶的jdk;重啟startWebLogic.cmd問題消失。
2)錯誤報Deployment descriptor "web.xml" is malform
ed. Check against the DTD: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find
錯誤原因及解決辦法:解析web.xml出現問題,修改OPEN_CMS\webapp\WEB-INF\web.xml文件;在該文件的 最上面添加如下內容:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
?"http://java.sun.com/dtd/web-app_2_3.dtd">
重新啟動錯誤消失。
3)錯誤為Deployment descriptor "/WEB-INF/
web.xml" is malformed. Check against the DTD: The content of element type "t
ag" must match "(name,tag-class,tei-class?,body-content?,display-name?,small-ico
n?,large-icon?,description?,variable*,attribute*,example?)". (line 40, column 11
).>
錯誤原因及解決辦法:由于weblogic8在解析xml文件時,對xml文件的內容格式要求特別嚴格;必須按照xml格式的要求
及排列順序,所以必須重新組織其內容,一定嚴格要注意順序,如 <servlet>就不能放在<servlet-mapping>后面。
4)錯誤java.lang.SecurityException: Prohibited package name: java.lang
錯誤原因及解決辦法:訪問包可視的方法或變量錯誤;這個錯誤恨少見,一直沒有想明白其中緣由;后來只能采用直接引用jar文件的法子解決該問題;
i)利用opencms自帶的build.xml文件,運行ant jar命令;生成opencms.jar和webdav.jar兩個文件
ii)在startWebLogic.cmd添加如下內容,引進上面的2個jar文件
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\opencms.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%\build\webdav.jar
大家有興趣的可以參考《透視JAVA——反編譯、修補和逆向工程技術》這本書的$4.2章的內容,如果找到更好的解決方法也請來信告知,謝謝~_~
5)其它注意事項,在eclipse下最好采用和運行weblogic一樣的jdk版本進行編譯,否則會出現文件訪問版本不一致的bug
7.啟動startWebLogic.cmd,在瀏覽器中輸入http://127.0.0.1:7001/opencms/setup/
? 如果在出現下面的畫面,則恭喜你,成功了!
粗略看了一下cms4j,居然還是國產;呵呵,支持一下也是應該的;
學習一下