我正在使用IBM Portal API開發Websphere Portal Server中的某些頁面,但我想在嵌套在主要門戶中的虛擬門戶網站的上下文中工作。我已經閱讀了IBM的文檔,但我不明白它是如何工作的,所以我決定問你們。你們中有人是否已經這樣做了? 這是我怎樣,我想從我的虛擬門戶獲得ContentNode:Websphere Portal Server虛擬門戶IBM門戶API
private void createPortalContent(HttpServletRequest request, HttpServletResponse response) throws InterruptedException, ModelException{
Context ctx = null;
try {
ctx = new InitialContext();
portletModelHome = (PortletModelHome) ctx.lookup(PortletModelHome.JNDI_NAME);
if(portletModelHome == null){
Thread.sleep(5000);
portletModelHome = (PortletModelHome) ctx.lookup(PortletModelHome.JNDI_NAME);
}
contentModelHome = (ContentModelHome) ctx.lookup(ContentModelHome.JNDI_NAME);
if(contentModelHome == null){
Thread.sleep(5000);
contentModelHome = (ContentModelHome) ctx.lookup(ContentModelHome.JNDI_NAME);
}
contentModelControllerHome = (ContentModelControllerHome) ctx.lookup(ContentModelControllerHome.JNDI_NAME);
if(contentModelControllerHome == null){
Thread.sleep(5000);
contentModelControllerHome = (ContentModelControllerHome) ctx.lookup(ContentModelControllerHome.JNDI_NAME);
}
contentMappingInfoHome = (ContentMappingInfoHome) ctx.lookup(ContentMappingInfoHome.JNDI_NAME);
if(contentMappingInfoHome == null){
Thread.sleep(5000);
contentMappingInfoHome = (ContentMappingInfoHome) ctx.lookup(ContentMappingInfoHome.JNDI_NAME);
}
virtualPortalList = (VirtualPortalListHome) ctx.lookup(VirtualPortalListHome.VIRTUAL_PORTAL_LIST_JNDI_NAME);
} catch (NamingException e) {
e.printStackTrace();
}
ContentModelController contentModelController = getController(request, response);
//LOGGER.info("### CONTENT MODEL CONTROLLER: " + contentModelController.getLocator() + " " + contentModelController.getRoot().toString());
ContentNode contentNode = (ContentNode) contentModelController.getLocator().findByUniqueName("ro.ram.comunicate");
//LOGGER.info("### CONTENT NODE: " + contentNode);
// LOGGER.info("#### VIRTUAL PORTAL LIST: " + virtualPortalList);
//VirtualPortal virtualPortal = virtualPortalList.getVirtualPortalListProvider().getVirtualPortalList().getLocator().findByUniqueName("");
// LOGGER.info("### VIRTUAL PORTAL: " + virtualPortal.getTitle(Locale.ENGLISH));
//Iterator<VirtualPortal> it=virtualPortalList.getVirtualPortalListProvider().getVirtualPortalList().iterator();
// while(it.hasNext()){
// LOGGER.info("### VIRTUAL PORTAL LIST ITERATOR: " + it.next().getDescription(Locale.ENGLISH) + " " + " " + it.next().getTitle(Locale.ENGLISH));
// it.next();
//}
}
謝謝
您使用了哪些特定的Portal API? – Carlos
我正在使用包含名爲com.ibm.portal。*的軟件包的門戶API。這些jar包是wp.base.jar,wp.model.api.jar等。 –
模型api非常大,但是如果你正在portlet範圍內運行代碼,它應該已經被作用域了,就像你正在使用模型api來檢查內容模型,它已經將範圍擴展到當前的VP。現在,如果您試圖在VP範圍之外的servlet中運行它,比如嘗試創建鏈接或類似的東西,那麼您必須使用objectids等來查找頁面,而不是查找頁面。 只有模型的一部分是VP作用域,就像portlet模型跨越vps一樣。我們需要更多關於你想要做什麼的細節 – Crosstalk22