IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Portails Java Discussion :

Faire sa propre classe GenericPortlet : ClassCastException [Portlet]


Sujet :

Portails Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Par défaut Faire sa propre classe GenericPortlet : ClassCastException
    Bonjour,

    je souhaite fournir à des développeurs un modèle de portlet, avec des actions déjà implémentée que leurs portlets devront proposer.

    Je pensais donc leur filer ma propre classe abstraite (MyGenericPortlet) qui héritera de GenericPortlet et dont ils devront hériter. Ce qui me donne en gros ceci :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    abstract class MyGenericPortlet extends GenericPortlet {
    // [...]
    	public void doGenericAction(RenderRequest request, RenderResponse response)
    		throws PortletException, java.io.IOException {
    		addToBasketView.include(request, response);
    	}
    }

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MyPortlet extends MyGenericPortlet {    
        public void doView( RenderRequest request, RenderResponse response )
            throws PortletException, IOException {
        }
     
        protected void doHelp( RenderRequest request, RenderResponse response )
            throws PortletException, IOException {
        }
    }

    Cela compile bien dans Eclipse, le build Maven est OK, par contre au déploiement dans Tomcat/Pluto, voici ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java.lang.ClassCastException: com.ibm.MyPortlet cannot be cast to javax.portlet.Portlet
    	at org.apache.pluto.container.driver.PortletServlet.attemptRegistration(PortletServlet.java:210)
    	at org.apache.pluto.container.driver.PortletServlet$1.run(PortletServlet.java:166)
    	at java.util.TimerThread.mainLoop(Timer.java:512)
    	at java.util.TimerThread.run(Timer.java:462)
    J'utilise la portlet-api 1.0. "portlet-class" dans portlet.xml référence MyPortlet.

    Donc deux questions :
    - est-ce que la voie que je prends (intercaler une classe entre GenericPortlet et celle de chaque portlet) vous parait la mieux adaptée à ce que je veux faire ?
    - pourquoi est-ce que ça ne fonctionne pas, qu'est-ce que c'est que cette erreur de Cast ? J'ai bien cherché sur le net mais franchement, je ne trouve pas grand chose.

    Et si je fait bien hériter MyPortlet directement de GenericPortlet, ça fonctionne.

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 30
    Par défaut
    Bon j'ai fini par trouver...

    Il ne faut pas que le portlet-API<version>.jar soit ajouté au .war généré et déployé.

    Or j'avais oublié cette ligne dans le pom.xml :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <dependency>
    	<groupId>javax.portlet</groupId>
    	<artifactId>portlet-api</artifactId>
    	<version>${portlet-api.version}</version>
            <!-- la suivante, qui interdit l'ajout au WAR -->
    	<scope>provided</scope></dependency>
    </dependency>

    Et effectivement, sans le jar dedans, ça fonctionne très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment faire ma propre classe/template vecteur
    Par touftouf57 dans le forum Visual C++
    Réponses: 2
    Dernier message: 11/11/2010, 12h43
  2. [PHP-JS] Comment faire son propre BBcode
    Par Sniperman dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2006, 17h11
  3. Es ce possible de faire des inner class en C++?
    Par Eithelgul dans le forum C++
    Réponses: 5
    Dernier message: 14/02/2005, 14h27
  4. ClassWizard --> comment lui faire reconnaitre mes classes
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 06/05/2004, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo