開發(fā)與部署分開 在WLP81中,可以在WORKSHOP中定義Portal,也可以在Admin Tool中中定義Portal.究竟有怎么區(qū)別呢? 原來WLP81與WLP70不一樣,建議把應(yīng)用的開發(fā)與最終的發(fā)布分開.即在workshop中把應(yīng)用的所有portlet都開發(fā),調(diào)試通過后,然后在WLP81的Admin Tool中定義portal,desktop. 最終發(fā)布出去的是在Admin Tool中定義desktop. 最終用戶通過訪問desktop來訪問portal 應(yīng)用.
如何集成其他Web系統(tǒng) 如果要把其他的基于BS結(jié)構(gòu)開發(fā)的Web系統(tǒng)集成到WLP81中,有以下幾中方式. 1. Kapow 他是WLP81自帶的組件.可以把一個(gè)網(wǎng)頁的全部或裁剪網(wǎng)頁的一部分,在WLP81的portlet中顯示出來. 2. 采用WLP81帶的JSP Tag: <es:uriContent> 3. 采用IFRAME 4. 采用Apache web scraping package
如何集成其他CS結(jié)構(gòu)的系統(tǒng) 如果要在WLP81中集成CS結(jié)構(gòu)的系統(tǒng),個(gè)人認(rèn)為主要有以下幾種方式: 1. 在JSP中調(diào)用Web Service,Tuxedo Service,DCOM,CORBA等組件 把要集成的部分包裝成Web Service,Tuxedo Service,DCOM, CORBA等組件.然后通過在JSP中調(diào)用這些組件來把內(nèi)容在WEB 頁面上展示出來. 2. JAVA API 如果這些CS結(jié)構(gòu)的系統(tǒng)有JAVA API.那么可以在JSP中通過調(diào)用如果這些CS結(jié)構(gòu)的系統(tǒng)有JAVA API來把中調(diào)用這些組件來把內(nèi)容在WEB 頁面上展示出來 3. Citrix公司的MetaFrame Portlet MetaFrame是Citrix公司所開發(fā)的一款解決遠(yuǎn)程訪問相關(guān)問題的優(yōu)秀產(chǎn)品,MetaFrame實(shí)現(xiàn)了基于服務(wù)器的計(jì)算機(jī)構(gòu)---使得遠(yuǎn)程用戶能夠使用任何類型的終端系統(tǒng),通過任何類型的網(wǎng)絡(luò)連接,使用遠(yuǎn)程服務(wù)器上的任何應(yīng)用程序。 MetaFrame產(chǎn)品采用了MultiWin和ICA兩種主要技術(shù)。MultiWin允許多個(gè)用戶可以同時(shí)使用某個(gè)應(yīng)用程序;ICA(Independent Computing Architecture)可以將應(yīng)用的邏輯與界面分開。這兩種技術(shù)的結(jié)合,使得應(yīng)用程序可以隨時(shí)隨處發(fā)布,不再受客戶端和連接性能的限制。 用戶甚至能夠使用同一個(gè)終端系統(tǒng)訪問甚至遠(yuǎn)程多個(gè)不同平臺(tái)、不同網(wǎng)絡(luò)協(xié)議服務(wù)器上的多個(gè)應(yīng)用,這些應(yīng)用被集成在一個(gè)訪問界面中,操作簡(jiǎn)便。詳細(xì)資料參見: http://www.achieva.com.cn/product/citrix/
Portlet的最大化,最小化等圖片出不來 如果訪問WLP81的Portal應(yīng)用,無法顯示Portlet的最大化,最小化等圖片,可通過下面的方法解決: 1. 在%web-app%/framework/skins下增加一個(gè)名為zh的文件夾,然后skins目錄下原有的文件夾(及所有文件)拷貝至zh文件夾內(nèi)。 2. 在WEB-INF下面的netuix-config.xml下增加以下一段 <!--resoule the chinese problem --> <localization> <enable>true</enable> <default-locale language = "en"/> </localization>
替換header中的圖片 如果要替換Portal Header中的圖片,方法如下:從sample portal的framework/markup/shell中導(dǎo)入HeaderFooterVisitor.shell,右擊desktop,從彈出菜單中選擇shell/HeaderFooterVisitor.shell,然后雙擊Header,生成header.jsp,修改header.jsp即可。如果footer出不來,需要在shell文件中加入: <netuix:footer> <netuix:jspContent contentUri="/footer.jsp"/> </netuix:footer> 然后將shell替換為原來的shell,再替換為新shell就可以。
設(shè)置Portal Domain的啟動(dòng)選項(xiàng) 在Portal Domain的啟動(dòng)腳本startweblogic.cmd中,通過設(shè)置下面的flag的值,來決定Portal Domain的啟動(dòng)選項(xiàng)。
set DB_DB=workshop set debugFlag=false set specialFlag=false set WLS_PRODUCTION_MODE=true set testConsoleFlag=true set iterativeDevFlag=true set logErrorsToConsoleFlag=true set pointbaseFlag=true set profileFlag=false set doExitFlag=true set verboseLoggingFlag=false set memmax=-Xmx512m
關(guān)閉portal的搜索引擎 如果你覺的Portal的搜索引擎沒怎么用,可以把它關(guān)閉,方法如下:在Portal Domain的啟動(dòng)腳本startweblogic.cmd中,在下面的語句前加rem,注釋掉。這樣可以提高系統(tǒng)的性能。
rem start "Start Portal SearchEngine" /MIN cmd /c call "%WLP_HOME%\thirdparty\search\startSearchEngine.cmd" rem start "Stop Portal SearchEngine" /MIN cmd /c call"%WLP_HOME%\thirdparty\search\stopSearchEngine.cmd"
WLP81對(duì)IE的要求 WLP81必須配合IE60才行,如果是IE50,在瀏覽Portal應(yīng)用,或進(jìn)入Portal Admin Tool時(shí),會(huì)拋出下面的Exception。可從此處下載IE60: http://www.microsoft.com/downloads/details.aspx?FamilyID=1e1550cb-5e5d-48f5-b02b-20b602228de6&DisplayLang=en
在WLP81中正確顯示FLASH 1.可以通過FLASH PLUG-IN來顯示。下面是一個(gè)例子: <table border="0" cellpadding="5" cellspacing="0" width="100%"> <tr> <td background="/sampleportal/images/bg.gif" width="100%" align="center"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="320" height="60" hspace="80" align="middle"> <param name="movie" value="/sampleportal/images/test.swf"> <param name="quality" value="high"> <embed src="/sampleportal/images/test.swf" width="100%" height="80" hspace="20" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed></object> </td> </tr> </table>
2.通過WLP81的 Content Manager 把要顯示的FLASH放到WLP81 CMS的REPOSITY中,然后通過CONTENT SELECTOR顯示。例子如下:
<pz:contentSelector id="nodes" rule="xcj" /> <es:forEachInArray array="<%=nodes%>" id="node" type="com.bea.content.Node" > <ad:render id="node" height="200" width="400"/> </es:forEachInArray>
要注意的是: *.SEL文件應(yīng)放到GlobalContentSelectors目錄下,不要放到contentselectors目錄下,否則,雖然在Content preview中可以顯示,但在運(yùn)行環(huán)境下無法顯示.
從WLP81的CMS中取內(nèi)容并顯示 下面的代碼通過Content selector從WLP81的CMS中查詢滿足條件的文件,并在瀏覽器中顯示。如是文件的filetype值是img就直接顯示。如是文件的filetype值是doc就顯示超聯(lián)接。
<pz:contentSelector id="nodes" rule="sampleRule" /> <es:forEachInArray array="<%=nodes%>" id="node" type="com.bea.content.Node" > <cm:getProperty node="<%=node%>" name="filetype" resultId="type" default="doc" />
<% String fileType=type.toString(); if (fileType.equals("[img]")) { String simg = "<img src= ' " + "/Sampleportal/ShowBinary" + node.getPath() + "'>"; out.println(simg); %>
<% }
else if(fileType.equals("[doc]")) { String simg="<a href='http://localhost:7001/sampleportal/ShowBinary"+node.getPath()+"' target='_blank' >預(yù)覽下載</a>"; out.println(simg); } %> </es:forEachInArray>
在IE瀏覽器中直接輸入 http://localhost:7001/sampleportal/ShowBinary/BEA+Repository/mynode 可用來檢查是否可以正確顯示CMS中的內(nèi)容。Mynode為相應(yīng)節(jié)點(diǎn)的名稱。
讓W(xué)LP81正確處理中文 為了讓W(xué)LP81能正確處理中文,需要設(shè)置下面幾個(gè)地方。 1. 在web.xml中 <context-param> <param-name>weblogic.httpd.inputCharset./*</param-name> <param-value>GBK</param-value> </context-param>
2. 在weblogic.xml中 <jsp-descriptor> <jsp-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </jsp-param> </jsp-descriptor>
3.修改*.portal文件的編碼 可在ultraEdit中打開*.portal文件 修改其中的 <portal:directive.page contentType="text/html;charset=UTF-8"/>為 <portal:directive.page contentType="text/html;charset=GBK"/> 如果修改后,有一些JSP文件無法打開,可在ultraEdit中打開,把代碼COPY 到Workshop 的source View中.
4.修改Workshop的編碼
在代碼中設(shè)置Page,Portlet的屬性 在開發(fā)時(shí),可以在Workshop的property Editor中設(shè)置page, portlet的屬性.在代碼中可以通過下面的方法設(shè)置或取得page, portlet的屬性. try { PageBackingContext page = PageBackingContext.getPageBackingContext(getRequest()); System.out.println("\n\n\n\n\ntitle=[" + page.getTitle()+"]"); title=page.getTitle();
} catch(Exception e) { e.printStackTrace(); } 如果把上面的page替換成portlet就可以得到portlet的屬性
使PAGE折行顯示 如果一個(gè)portal應(yīng)用的page太多,默認(rèn)只會(huì)顯示為一行,太長(zhǎng).可修改文件framework/skeletons/default/singlelevelmenu.jsp,使他可以折行顯示.例子如下:
int pageNum=0; while (pages.hasNext()) { pageNum++; if(pageNum %15 ==0) { System.out.println("pageNum=" + pageNum); out.println("<br><br>"); }
在WLP81中實(shí)現(xiàn)文件上傳 可以通過Page Flow實(shí)現(xiàn)文件上傳. 在JSP中,通過<netui:fileUpload>顯示文件上傳窗口. <netui:fileUpload dataSource="{actionForm.file}" size="50" accept="*/*" ></netui:fileUpload> 在jpf文件中可通過如下方式讀取上傳的文件,并保存到新的目錄下. try { if(!form.getFile().equals("")) { InputStream is = form.getFile().getInputStream(); String fileName = form.getFile().getFileName(); FileOutputStream os = new FileOutputStream(new File(uploadFolder+fileName)); byte b[] = new byte[128]; while(is.read(b)!=-1){ os.write(b); } is.close(); os.close(); } } catch(Exception e){ e.printStackTrace(); } 如果有中文問題,可以把該P(yáng)age Flow 放到Iframe中. |