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

JSF Java Discussion :

Comment utiliser JSF avec MongoDB ?


Sujet :

JSF Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant SI
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant SI
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Comment utiliser JSF avec MongoDB ?
    Bonjour,

    Débutant dans les framework Java je viens de faire le choix de JSF. Je souhaite utiliser JSF pour ajouter une interface graphique à un système reposant sur mongoDB et MapReduce. Mon besoin est essentiellement de l'affichage + des formulaires pour intervenir sur les paramètres du système et interragir avec l'utilisateur. Ensuite beaucoup de traitement s'effectuent en tache de fond sans liens avec l'interface.
    Au regard de tous ce que j'ai pu lire jusqu'ici sur JSF, on l'associe souvent à d'autre framwork comme jpa et hibernate pour le mapping relationnel. Dans mon cas point de relationnel, et manifestement il n'existe pas encore de mapping pour mongo prenant en charge MapReduce. Bref, je souhaiterais m'épargner de l'utilisation d'autres framework et me limiter à jsf + les lib JavaMongo (pour les interactions avec la base de données). Sinon souhaitant quelque chose de léger et pratique j'utilise Jetty comme serveur d'application pour mes tests, d'où manifestement l'obligation de déclarer les beans dans faces-config.xml. C'est peut-être un pb ? Voilà pour la présentation rapide.

    Mon problème actuel est qu'une erreur est générée à chaque fois que je souhaite afficher le résultat d'une requête provenant de mongoDB dans ma page web (jsf). J'ai créé une classe SubscriptionDao.java pour les accès à la base, puis une classe SubscriptionBean pour l’interaction avec les pages jsf.

    SubscriptionDao.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import sys.util.Config;
    import sys.util.DBConnector;
     
    public class SubscriptionDao {
     
    	long nbsub;
     
    	public SubscriptionDao(){
    		Config.getInstance().loadProperties();
    	}
     
    /* un main pour les test ... */
    	public static void main(String[] args){
    		SubscriptionDao subDao = new SubscriptionDao();
    		System.out.println("count sub : "+  subDao.countSubscription());
    	}
     
    	//nb de document dans la collection
    	public void countSubscription(){
    		DBCollection collection_sub = DBConnector.getInstance().getCollection();
    		nbsub = collection_sub.count();
    		DBConnector.getInstance().close();
    		return nbsub;
    	}//	
    }
    Résultat du main => count sub : 100

    La classe SubscriptionBean.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    import java.io.Serializable;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import sys.dao.SubscriptionDao;
     
    @ManagedBean
    @SessionScoped
    public class Subsbean implements Serializable{
     
      private long nbSubscription;
      private SubscriptionDao subscriptionDao;
     
      public Subsbean() {
    	  subscriptionDao = new SubscriptionDao();
      }
     
    /* un main pour les tests */
      public static void main(String[] args){
    	  Subsbean subsbean = new Subsbean();
    	  System.out.println("nb sub : "+  subsbean.getNbSubscription());
      } 
      public long getNbSubscription(){
            //Résultat identique en déclarant l'objet dans la méthode 
    	// SubscriptionDao  subscriptionDao = new SubscriptionDao();
    	return nbSubscription = subscriptionDao.countSubscription();
      }//
    }
    Résultat du main => nb sub : 100

    Page web : matching.xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core">
      <f:view> 
        <h:head>
          <title>Matching</title>
          <h:outputStylesheet library="css" name="styles.css"/>
        </h:head>   
      	<h:body>
        <h:form id="formulaire">
            <h:panelGrid columnClasses="col1,col2" columns="2" border="1">
              <h:outputText value="#{subsbean.inputNbMatching}"  styleClass="info"/>
              <h:panelGroup>
                <h:outputText value="#{subsbean.nbSubscription}"/>
              </h:panelGroup>
            </h:panelGrid>       
          </h:form>
          </h:body>
          </f:view>
    </html>
    Quand j'exécute cette page j'ai le msg d'erreur suivant (qui ne me parle pas beacoup !):

    Erreur d'analyse XML : aucun élément trouvé Emplacement : http://localhost:8080/pubsub-jsf-01/matching.xhtml Numéro de ligne 1, Colonne 1 :

    Je précise que si je modifie la méthode countSubscription pour obtenir un "long" lambda (histoire de vérifier que le pb est bien la connexion avec la bdd) j'obtiens l'affichage voulu soit par ex :

    extrait de : SubscriptionDao.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public long countSubscription(){
    		nbsub = (int)Math.pow(5,2);		
    		return nbsub;
    	}//
    Résultat de ma page web:
    nb subscription 25

    Voilà j'espère être assez précis pour exposer mon soucis.
    Dans l'attente de vos précieuses réponses, merci
    Sylvain

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    essaies de ne pas mettre l´espace au debut de ton fichier (pas d´espace entre le debut du fichier et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version='1.0' encoding='UTF-8' ?>
    ,
    en quelque sorte ton fichier xml doit commencer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core">
      <f:view> 
        <h:head>
          <title>Matching</title>
          <h:outputStylesheet library="css" name="styles.css"/>
        </h:head>
    eric

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant SI
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant SI
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci pour ton retour.

    A moins de ne pas avoir très bien compris ce que tu voulais dire, mais ma balise xml <?xml version='1.0' encoding='UTF-8' ?> commence bien au bord du fichier, ainsi que la suivante. C'est le copier/coller dans le post qui donne cette impression d'espace.

    Tu vois pas autre chose sinon
    Merci

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    as-tu essayé avec d´autres navigateurs?

    Eric

  5. #5
    Candidat au Club
    Homme Profil pro
    Etudiant SI
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant SI
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    hmm, c'est bien ce que je pensais, c'est pas le navigateur qui est en cause.

    Pour l'instant j'en arrive à 2 hypotheses :
    - le serveur d'application ne correspond pas à ce que je veux faire. Va falloir que je transfère tout vers un tomcat, encore et encore de la config, on ne fait que ça en jee, en fait !?
    - D'après ce que je trouve sur la toile, il faudrait peut-être que je passe par Spring pour l'utilisation de Mongo et pouvoir ensuite l'intégrer à JSF! Ben oui pourquoi vouloir faire simple...

    En tous cas merci pour tes suggestions, si d'autres en ont n'hésitez pas.

  6. #6
    Candidat au Club
    Homme Profil pro
    Etudiant SI
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Etudiant SI
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bon j'ai résolu le probleme en utilisant l'implémentation JSF "Myfaces" plutot que celle de sun "mojarra".
    Ben ouais c'était évident...
    Bref je suis un peu soulagé de pouvoir poursuivre mon exploration de jsf !

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

Discussions similaires

  1. [VBA] Comment utiliser Access avec Excel
    Par MxPx_23 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/02/2006, 12h00
  2. Comment utiliser Word avec Delphi 7 ?
    Par muquet dans le forum Débuter
    Réponses: 9
    Dernier message: 06/12/2005, 18h52
  3. Comment utiliser ShellExecute avec un programme DOS ?
    Par RC10GT_MGT dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 22/09/2005, 14h23
  4. Comment utiliser AddItem avec un TComboBox ?
    Par richard038 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 01/08/2005, 17h58
  5. Réponses: 12
    Dernier message: 02/02/2004, 13h41

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