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();
//}
}
だから悪い考えです、あなたはページのOBJECTIDを探す必要があり、固有の名前を探して、
使用しているPortal APIは何ですか? – Carlos
com.ibm.portal。*のようなパッケージを含むポータルAPIを使用しています。 jarはwp.base.jar、wp.model.api.jarなどです。 –
モデルapiはかなり大きいですが、ポートレットのスコープ内からコードを実行している場合は、スコープが既に設定されているはずです。モデルapiを使用して、現在のVPにスコープされているコンテンツモデルを参照しています。今ではVPの範囲外にあるサーブレットでそれを実行しようとしている場合、リンクなどを作成しようとすると、オブジェクトIDなどを使用してページを探す必要があります。 ポートレットモデルがvpsを超えているように、モデルの一部だけがVPスコープです。私たちはあなたが何をしたいかについていくつかの詳細を必要としています – Crosstalk22