Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/02/2008, à 16:08

madbmd

JAVA: Problème de deploiement de war (portlets 2.0)

Bonjour ! Mon problème est que je n’ai pas pu faire communiquer deux portlets 2.0
Je viens d’installer netbeans 6.0 (avec glassfish v2), et le plugin portal pack. J’ai aussi installé open portal portlet container (en exécutant le fichier portlet-container-configurator.jar). J’ai créé un projet de test (helloWorld) qui a été correctement déployé et exécuté.
J’ai ensuite créé un autre projet contenant deux portlets que je voudrais faire communiquer (Emetteur et Recepteur). Il y a aussi une classe Personne qui implémente l’interface Serializable et qui devrait donner l’objet à partager.Mon problème est que Open portal refuse de déployer le fichier war généré !
Voici la totalité du code source des classes ainsi que le fichier portlet.xml :

CLASS Personne  :
package com.example;

//import java.lang.String;
import java.io.Serializable;

import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement
public class Personne implements Serializable {
   
    private String nom, prenom;
   
    public Personne(){
       
    }
   
    public void setNom(String nom){
        this.nom = nom;
    }
   
    public void setPrenom(String prenom){
        this.prenom = prenom;
    }
   
    public String getNom(){
        return this.nom;
    }
   
    public String getPrenom(){
        return this.prenom;
    }
   
}

CLASS Emetteur :
package com.example;
import javax.portlet.GenericPortlet;
import javax.portlet.ActionRequest;
import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;
import javax.portlet.PortletException;
import javax.portlet.Event;
import javax.xml.namespace.QName;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import java.io.IOException;
import javax.portlet.PortletRequestDispatcher;


public class Emmeteur extends GenericPortlet {

    public void processEvent(EventRequest req, EventResponse res){
        Personne per = new Personne();
        per.setNom("BMD");
        per.setPrenom("Mad");
        QName name = new QName("http:example.com/events", "foo.bar");
        res.setEvent(name, per);
    }
   
    public void doView(RenderRequest request,RenderResponse response) throws PortletException,IOException {
        response.setContentType("text/html");       
        PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Emmeteur_view.jsp");
        dispatcher.include(request, response);
    }
    public void doEdit(RenderRequest request,RenderResponse response) throws PortletException,IOException {
            response.setContentType("text/html");       
        PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Emmeteur_edit.jsp");
        dispatcher.include(request, response);
    }
    public void doHelp(RenderRequest request, RenderResponse response) throws PortletException,IOException {

        response.setContentType("text/html");       
        PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Emmeteur_help.jsp");
        dispatcher.include(request, response);
    }
}

CLASS Recepteur :

package com.example;

import javax.portlet.GenericPortlet;
import javax.portlet.ActionRequest;
import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderResponse;
import javax.portlet.PortletException;
import javax.portlet.Event;
import javax.portlet.EventRequest;
import javax.portlet.EventResponse;
import javax.portlet.ProcessEvent;
import javax.portlet.PortletMode;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.PortletRequestDispatcher;

public class Recepteur extends GenericPortlet {
   
    String nom, prenom;
   
    public void doView(RenderRequest request,RenderResponse response) throws PortletException,IOException {
        response.setContentType("text/html");       
        PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Emmeteur_view.jsp");
        dispatcher.include(request, response);
    }
    public void doEdit(RenderRequest request,RenderResponse response) throws PortletException,IOException {
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter w = response.getWriter();
        w.println("<center><font size='3'><b><i>Receiver portlet: " + nom + " " + prenom + "</i></b></font></center><br>");
        w.println("Current method: "+((new Exception()).getStackTrace()[0]).getMethodName());
        w.println("<br>");
    }
    public void doHelp(RenderRequest request, RenderResponse response) throws PortletException,IOException {

        response.setContentType("text/html");       
        PortletRequestDispatcher dispatcher =
        getPortletContext().getRequestDispatcher("/WEB-INF/jsp/Emmeteur_view.jsp");
        dispatcher.include(request, response);
    }
    //@ProcessEvent(name="Personne")
     public void processEvent(EventRequest req, EventResponse res){
         Event event = req.getEvent();
         if(event.getName().equals("foo.bar")){
             Personne perr = (Personne)event.getValue();
             nom = perr.getNom();
             prenom = perr.getPrenom();
         }
     }
}

Et voici le fichier portlet.xml :

<?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'>
   
        <event-definition>
            <qname xmlns:x="http:example.com/events" >x:foo.bar</qname>
            <value-type>com.example.Personne</value-type>
        </event-definition>
        <portlet>
        <description>Emmeteur</description>
        <portlet-name>Emmeteur</portlet-name>
        <display-name>Emmeteur</display-name>
        <portlet-class>com.example.Emmeteur</portlet-class>
        <expiration-cache>0</expiration-cache>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
            <portlet-mode>EDIT</portlet-mode>
            <portlet-mode>HELP</portlet-mode>
        </supports>
        <portlet-info>
            <title>Emmeteur</title>
            <short-title>Emmeteur</short-title>
        </portlet-info>
                <supported-publishing-event>
                    <qname xmlns:x="http:example.com/events" >x:foo.bar</qname>
                </supported-publishing-event>
    </portlet>
        <portlet>
        <description>Recepteur</description>
        <portlet-name>Recepteur</portlet-name>
        <display-name>Recepteur</display-name>
        <portlet-class>com.example.Recepteur</portlet-class>
        <expiration-cache>0</expiration-cache>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
            <portlet-mode>EDIT</portlet-mode>
            <portlet-mode>HELP</portlet-mode>
        </supports>
        <portlet-info>
            <title>Recepteur</title>
            <short-title>Recepteur</short-title>
        </portlet-info>
                <supported-processing-event>
                    <qname xmlns:x="http:example.com/events" >x:foo.bar</qname>
                </supported-processing-event>
    </portlet>
</portlet-app>

Quand je supprime les parties ci dessous, le déploiement s’effectue correctement :

<event-definition>
            <qname xmlns:x="http:example.com/events" >x:foo.bar</qname>
            <value-type>com.example.Personne</value-type>
</event-definition>

<supported-processing-event>
<qname xmlns:x="http:example.com/events" > x:foo.bar</qname>
</supported-processing-event>

<supported-publishing-event>
<qname xmlns:x="http:example.com/events" > x:foo.bar</qname>
</supported-publishing-event>

Mais comme vous pouvez le voir ce sont les parties de déclaration des événements !


Hors ligne