代码之家  ›  专栏  ›  技术社区  ›  Ivan Dubrov

如何以编程方式将portlet添加到jboss门户仪表板[关闭]

  •  -1
  • Ivan Dubrov  · 技术社区  · 16 年前

    如何以编程方式将portlet添加到 JBoss Portal 特定用户的仪表盘?有没有JBoss门户的远程API来做这个?SOAP Web服务,可能是基于MBean的API?当然,作为最后的手段,我可以自己实现这些服务并将其部署到JBoss门户,但理想情况下,它不需要向JBoss部署任何东西。

    我需要在jboss上没有部署的应用程序中完成这项工作。它在单独的Tomcat实例上运行。应用程序知道门户地址,它知道用户名和凭据,我可以在应用程序和门户之间建立我需要的任何信任关系。

    更详细的描述:我有一个 Google Gadget 我想在我的应用程序中创建一个按钮,将这个小工具作为portlet添加到我的门户中。因此,用户打开我的应用程序,按下“添加到仪表板”按钮,谷歌小工具被添加到门户仪表板。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Genadii Ganebnyi    15 年前

    希望这种代码的和平有助于:

       //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();