2008-11-27 8 views
0

Comment puis-je ajouter par programme portlet au tableau de bord JBoss Portal d'utilisateur spécifique? Existe-t-il une API distante du portail JBoss pour cela? Service Web SOAP, peut-être l'API basée sur MBean? Bien sûr, en dernier recours, je peux implémenter moi-même un tel service et le déployer sur le portail JBoss, mais idéalement, il ne devrait pas nécessiter de déployer quoi que ce soit sur le JBoss.Comment ajouter programmation portlet au tableau de bord JBoss Portal

que je dois faire cette demande de ne pas déployée sur le JBoss. Il s'exécute sur l'instance Tomcat distincte. L'application connaît l'adresse du portail, elle connaît le nom d'utilisateur et les informations d'identification, je peux établir les relations d'approbation dont j'ai besoin entre l'application et le portail.

Description plus détaillée: J'ai un Google Gadget et je veux créer un bouton dans mon application qui ajoutera le gadget en tant que portlet à mon portail. Ainsi, l'utilisateur ouvre mon application, appuie sur le bouton "Ajouter au tableau de bord" et le gadget Google est ajouté au tableau de bord du portail.

Répondre

2

espoir cette paix code aide:

//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

Où voulez-vous mettre ce code? –

+0

Partout où vous devez manipuler le tableau de bord du portail Jboss. De cource ce code devrait être exécuté dans l'instance du portail JBoss –

Questions connexes