Pages enfant
  • FAQ (French)

The requested resource (/foo/*) is not available

La définition du context esup-lecture doit être fait dans le server.xml de tomcat et pas dans un fichier tomcat/conf/Catalina/localhost/LecturePortlet.xml

ClassCastException

Si vous obtener ce message en mode portlet : java.lang.ClassCastException: org.esupportail.lecture.portlet.FacesPortlet cannot be cast to javax.portlet.Portlet

C'est vraisemblablement parce que vous avez fait un déploiement en mode servlet avant sans avoir fait un clean avant de redéployer en mode portlet.

Pour résoudre ce problème très rapidement il suffit de :

  • Supprimer le fichier portlet-api-1.0.jar du répertoire WEB-INF\lib de l'application esup-lecture déployée
  • Relancer le serveur d'applications

Comprendre le fonctionnement du fichier mapping.xml

Le but du fichier mapping.xml est double :

  1. Permettre de sélectionner une feuille de transformation XSL en fonction de la source à afficher
  2. Permettre de sélectionner dans la source l'élément répétable (annonce ou item pour utiliser un terme plus générique) sur lequel sera appliqué la feuille de transformation XSL précédemment citée

Sélection de la feuille de transformation XSL

Pour chaque entrée de <mapping> du fichier mapping.xml on va trouver un attribut qui va nous permettre de sélectionner une feuille de transformation XSL. Ce sera sourceURL, DTD, xmlType, xmlns ou rootElement (dans cet ordre de priorité).

Signification

ourceURL --> Si la source correspond à cette url ou dont l'url commence par cette valeur alors c'est ce mapping qui est pris en compte
dtd --> Si la source a une dtd et que cette dtd correspond à cet attribut dtd alors c'est ce mapping qui est pris en compte
xmlType --> Si la source a un xsd et que ce xsd correspond à cet attribut xmlType alors c'est ce mapping qui est pris en compte
xmlns --> Si l'élément root du XML de ta source est dans un espace de nom qui correspond à cet attribut xmlns alors c'est ce mapping qui est pris en compte
rootElement --> Si l'élément root du XML de ta source correspond à cet attribut rootElement alors c'est ce mapping qui est pris en compte

Sélectionner dans la source de l'élément répétable

Dans une source de données on a plusieurs items que l'on veut faire apparaitre de façon distincte dans esup-lecture.

Pour cela on dispose de l'attribut itemXPath. Il sert comme XPath pour définir quels éléments répétables dans le XML de la source vont former les Items à afficher.

Mais cette information ne suffit pas si la source contient des espaces de noms différents pour les différentes balises XML la constituant. Ces espace de noms, s'il sont utilisés dans itemXPath, doivent être définis dans une ou n balise <XPathNameSpace>.

Exemple

itemXPath="/rdf:RDF/default:item"

Dans ce cas il faut préciser à quoi correspondent les espaces de noms rdf: et default: pour que le moteur XPath fonctionne sur le XML de ta source :

<XPathNameSpace prefix="rdf" uri="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>

<XPathNameSpace prefix="default" uri="http://purl.org/rss/1.0/" />


  • Aucune étiquette

Commentaire

  1. *Message d'erreur :*Name jdbc is not bound in this Context

    Solution :

    1. dans le contexte tomcat de la portlet
      <Context path="/esup-lecture" ... >
         <Resource name="jdbc/esup-lecture" ... />
      </Context>
      Maintenant par défaut c'est un pool de cnx tomcat qui est utilisé :
      Voir paramètre hibernate.useJndi dans defaults.properties
      Si tu veux continuer à utiliser une cnx directe depuis l'application, met
      hibernate.useJndi=false dans config.properties (et ce seront les paramètres hibernate...jdbc qui seront utilisés)
    2. Autre solution
      Une suggestion serait de placer ce contexte dans le répertoire webapps/META-INF/context.xml afin que ce soit moins intrusif côté serveur Tomcat (possibilité existant depuis Tomcat 5), et que cela reste dans le giron du repertoire  contenant les confs personnalisées (plus facile à maintenir/redéployer).