2008-11-27 46 views
0

如何以編程方式將Portlet添加到JBoss Portal指定用戶的儀表板?有沒有JBoss Portal的遠程API來做到這一點? SOAP Web服務,可能是基於MBean的API?當然,作爲最後的手段,我可​​以自己實現這樣的服務並將其部署到JBoss Portal,但理想情況下,它不應該要求部署任何JBoss。如何以編程方式將portlet添加到JBoss Portal儀表板

我需要從未部署在JBoss上的應用程序執行此操作。它運行在獨立的Tomcat實例上。該應用程序知道門戶地址,它知道用戶名和憑證,我可以在應用程序和門戶之間建立任何我需要的信任關係。

更詳細的描述:我有一個Google Gadget,我要創建我的應用程序的按鈕,將增加小工具作爲portlet我的門戶網站。因此,用戶打開我的應用程序,按下「添加到信息中心」按鈕,谷歌小工具添加到門戶的儀表板。

回答

2

希望這個代碼和平有助於:

//container 
    container = (CustomizationManager)MBeanProxy.get(CustomizationManager.class, new ObjectName("portal:service=CustomizationManager"), MBeanServerLocator.locateJBoss()); 

    //transaction manager 
    tm = (TransactionManager) new InitialContext().lookup("java:/TransactionManager");  

    tm.begin(); 

    //dashboard 
    dashboard = container.getDashboard(new org.jboss.portal.identity.User() { 

     public boolean validatePassword(String arg0) { 
      return false; 
     } 

     public void updatePassword(String arg0) throws IdentityException { 
     } 

     public String getUserName() { 
      return userId; 
     } 

     public Object getId() { 
      return null; 
     } 
    });  
    System.out.println("!!! Portlal: " + dashboard.toString()); 

    //default page 
    defaultPage = dashboard.getPage("default"); 
    System.out.println("!!! Page: " + defaultPage.toString()); 

    //gets page windows 
    Collection<PortalObject> objects = defaultPage.getChildren(); 
    if (objects != null && objects.size() > 0) { 
     for (PortalObject object : objects) { 
      System.out.println("!!! PageChild: " + object.getName()); 
      System.out.println("!!! WindowRegion: " + object.getDeclaredProperty("theme.region")); 

      String windowPortletName = object.getDeclaredProperty("portletName"); 

      if (StringUtils.equals(object.getDeclaredProperty("theme.region"), "column1")) 
      { 
       column1Windows.add(object.getName()); 

       System.out.println("!!! Column1Window: " + object.getName()); 
       System.out.println("!!! Column1WindowPortletName: " + object.getDeclaredProperty("portletName")); 

       //removes from portlets list if already exists 
       Iterator iterator = portlets.iterator(); 
       while (iterator.hasNext()) 
       { 
        Portlet tempPortlet = (Portlet) iterator.next(); 
        if (StringUtils.equals(tempPortlet.getSystemName(), windowPortletName)) 
        { 
         iterator.remove(); 
        }      
       } 
      } 
      else if (StringUtils.equals(object.getDeclaredProperty("theme.region"), "column2")) 
      { 
       column2Windows.add(object.getName()); 
       System.out.println("!!! Column2Window: " + object.getName()); 

       //removes from portlets list if already exists 
       Iterator iterator = portlets.iterator(); 
       while (iterator.hasNext()) 
       { 
        Portlet tempPortlet = (Portlet) iterator.next(); 
        if (StringUtils.equals(tempPortlet.getSystemName(), windowPortletName)) 
        { 
         iterator.remove(); 
        }      
       } 

      } 
     } 
    } 

    tm.commit();   
+0

你會在哪裏把這個代碼? – 2011-12-12 13:36:14

相關問題