La classe d'implémentation du portlet

Elle contient le code Java, par exemple :

package org.osivia.tutorial.basic;

import javax.portlet.*;
import java.io.*; 

public class BasicPortlet extends GenericPortlet {

  public void doView(RenderRequest request,RenderResponse response)
      throws PortletException,IOException {

       response.setContentType("text/html");

       PrintWriter writer = response.getWriter();
       writer.write("hello");
   } 
  }
}

le fichier /WEB-INF/portlet.xml

Ce fichier définit les caractéristiques du portlet, notamment la classe d'implémentation

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
   version="2.0">

    <portlet>
        <portlet-name>osivia-tutorial-basicPortlet</portlet-name>
        <portlet-class>org.osivia.tutorial.basic.BasicPortlet</portlet-class>
            <expiration-cache>180</expiration-cache> 
        
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>view</portlet-mode>
        </supports>
        <portlet-info>
            <title>Basic Portlet</title>
        </portlet-info>


    </portlet>

le fichier /WEB-INF/portlet-instance.xml

Chaque portlet doit être référencé par un PortletInstance. Ce portletInstance, qui permettra de référencer le portlet à partir des pages du portail, permet également de poser des droits sur le portlet.

<?xml version="1.0" standalone="yes"?>
<!DOCTYPE deployments PUBLIC
          "-//JBoss Portal//DTD Portlet Instances 2.6//EN"
          "http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd"
>
<deployments>
    <deployment>
        <if-exists>overwrite</if-exists>    
        <instance>
            <display-name xml:lang="en">Osivia - Basic Portlet</display-name>
            <display-name xml:lang="fr">Osivia - Portlet basique</display-name>
            <instance-id>osivia-tutorial-basicPortletInstance</instance-id>
            <portlet-ref>osivia-tutorial-basicPortlet</portlet-ref>
            <security-constraint>
                <policy-permission>
               <action-name>view</action-name>
                       <unchecked/>
                </policy-permission>
             </security-constraint>            
          </instance>        
    </deployment>
</deployments>

le fichier /WEB-INF/jboss-web.xml

Ce fichier permet de fixer le nom du contexte de l'application Web.

Pour différentes raisons (référence de l'instance, déclaration dans les reverse proxy), la bonne pratique est de définir un nom qui persistera au delà des versions du portlet

<!DOCTYPE jboss-web PUBLIC
    "-//JBoss//DTD Web Application 4.2//EN"
    "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">

<jboss-web>
    <context-root>osivia-tutorial-basic</context-root>
</jboss-web>

le fichier WEB-INF/jboss-portlet.xml

Il permet de définir les extensions du portlet spéciques à JBoss Portal (injection des scripts, des CSS, utilisation des services). Il doit contenir à minima l'attribut trans-attribute .

<!DOCTYPE portlet-app PUBLIC
   "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
   "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd">

<portlet-app>

    <portlet>
        <portlet-name>toutatice-demo-testPortlet2</portlet-name>
    
        <transaction>
            <trans-attribute>Required</trans-attribute>
        </transaction>
    </portlet>
     
</portlet-app>