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

Développement Web en Java Discussion :

Quel outil utiliser pour consommer des classes métier JEE5 sur une application mobile en HTML5/Javascript ?


Sujet :

Développement Web en Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Quel outil utiliser pour consommer des classes métier JEE5 sur une application mobile en HTML5/Javascript ?
    Bonjour,

    Pour commencer je suis un novice dans le dev web jee.

    J'aurais besoin de quelques conseil à propos d'un projet qui consiste en la mise en place d'un serveur métier en JEE5 et de le consommer avec une application mobile faite en HTML5.

    L'application tournera sous différentes architecture (iPhone/Android).

    Pour mon serveur dois je travailler avec Spring ou EJB ou est ce que c'est indépendant?

    J'ai lu un peu partout que je dois travailler avec des servlets puis les consommer en utilisant de l'AJAX sur mon application mobile? est ce vraiment le cas? si oui, pouvez vous me donner un lien, guide, un chemin à suivre...

    Je peux mettre en place mes classes métier (EJB par exp) faire une couche JSP puis utiliser AJAX sur mon app mobile pour les consommer? ou j'utilise simplement des servlets?

    Je dois éviter les webservice vu que j'ai du code html/javascript coté client.

    Merci d'avance pour votre aide et vos conseils.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 29
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    L'idée c'est que (si j'ai bien compris), c'est une appli web qui sera consultables sur des browser normaux mais aussi sur des browser iphone ou android. L'essentiel est que ta page web est en html.

    Donc tu dois avoir un serveur qui communiquera en http avec ton browser. à chaque fois que tu demande une page donnée le serveur reçoit dans sa Servlet ce "request http" et tente de te faire une "réponse http". Une Servlet c'est le point d'entrée en Java pour recevoir les requetes http et les traiter.

    Les JSP sont une technologie qui permet de mélanger du html et du code pseudo-java qui va permettre de rendre les pages dynamiques.

    Par contre il existe des frameworks (api, ou aussi ensemble de composants qui nous facilitent la vie) qui permttent d'englober les Servlet, de présenter des composants IHM plus puissants, de gérer la navigation entre les pages etc... : Exemple JSF, Struts, Tapestry... Perso je t'oriente vers JSF 2..

    Concernant les EJB est Spring il faut dire que ça n'a rien à avoir. Spring est une technologie à la base qui permet de gérer l'injection de dépendance. Maintenant il existe plusieurs franworks Spring. Donc tu pourra utiliser le Spring "simple" pour injecter les dépendances des tes objets. et pkoi pas quelques autres framworks Spring qui te semblent utiles dans ton cas (il faut aller jeter un oeil sur springsource.com)

    Par contre EJB c'est protocle de communication comme http sauf que lui il est utilisé entre deux applications Java. Donc tu pourras le mettre en place si t'as deux applications java. son gros désavantage c'est que si tu communique avec une appli non java c'est plus réutilisable.

    Concernant Ajax tu peux l'utiliser pour n'envoyer au serveur qu'une "petite requete" pour une partie de ta page qui doit être mise à jour. il est dispo dans des frameworks comme richefaces ou aussi icefaces et tu peux l'utiliser avec par exemple JSF 2. Ces frameworks J2E contiennt des composants web plus poussés..

    J'espère que je t'aide avec cette réponse rapide :-)

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par khoufouq Voir le message
    Par contre EJB c'est protocle de communication comme http sauf que lui il est utilisé entre deux applications Java. Donc tu pourras le mettre en place si t'as deux applications java. son gros désavantage c'est que si tu communique avec une appli non java c'est plus réutilisable.
    Il est très facile d'englober un EJB dans un web service si on a besoin de communiquer en dehors du monde java.
    Spring n'est pas plus conçu pour des appels en dehors de java.
    D'ailleurs, d'un point de vue général, les différences entre Spring et le monde JEE est plutôt mince... L'un est un standard EE, l'autre pas...
    Moi, je préfère les EJB, mais ça ne veut pas dire qu'ils sont meilleurs ou moins bien que Spring

    Pour en revenir à la question de base, si ton application est plutôt html/javascript (à base d'ajax), l'intérêt d'un framework comme struts est réduit, un contrôleur à base de servlet est largement suffisant.
    Une JSP est également une servlet, par convention, on l'utilise pour générer les sorties.
    Pour les appels, une bibliothèque comme jQuery pourra t'aider.

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Tout d'abord, je vous remercies pour vos réponses.

    Citation Envoyé par khoufouq Voir le message

    L'idée c'est que (si j'ai bien compris), c'est une appli web qui sera consultables sur des browser normaux mais aussi sur des browser iphone ou android. L'essentiel est que ta page web est en html.
    Enfait, l'application web sera uniquement consultable sur des browser iphone / android

    et si j'ai bien compris, je n'aurais plus besoin de JSP, JSF etc.. l'utilisation simple de servlet fera l'affaire.

    Pour vous détailler ma partie cliente, je vais travailler avec le framework Phonegap qui me permet d'avoir une application hybride native sur iPhone et android en HTML5/JS sans passer par un browser.

    J'ai déjà commencé la mise en place de ma partie server avec EJB.

    Donc mnt il me reste qu'à trouver des ressources pour deux petit truc :
    1. Servlets et leur utilisation avec les EJB
    2. JQuery / JQuery Mobile pour la communication avec les servlet


    Donc ça serai super de m'éclaircir sur ces deux sujets, afin que je puisse faire mes premier test.

    Merci.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Pour accéder aux EJB, j'utilise un "locator", voici un exemple
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public class EJBLocator
    {
        private static Context ctx;
        private static EJBLocator instance = new EJBLocator();
        private static String earName = "MonEAR/";
     
        private EJBLocator()
        {
            try
            {
                ctx = new InitialContext();
            }
            catch (NamingException e)
            {
                System.out.println(e.toString());
            }
        }
     
        public static EJBLocator getLocator()
        {
            return instance;
        }
     
        private Object getEjb(Class<?> ejbClass, String name)
        {
            try
            {
                name = earName + name;
                Object object = ctx.lookup(name);
                return object;
            }
            catch (NamingException e)
            {
                return null;
            }
        }
     
        /*
         * -------------------- Spécifique --------------------
         */
     
        public MaFacadeRemote getMaFacadeRemote()
        {
            return (MaFacadeRemote) getEjb(MaFacadeRemote.class, "MaFacade/remote");
        }
    }
    Côté servlet, l'utilisation est des plus simple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
       MaFacadeRemote facade = EJBLocator.getLocator().getMaFacadeRemote();
       facade.uneFonction(...);
       ...
    }
    Pour la servlet, la seule chose qu'il faut ne pas oublier c'est de l'enregistrer dans la web.xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
    <servlet>
        <servlet-name>MaServlet</servlet-name>
        <servlet-class>le.package.MaServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
      <servlet-name>MaServlet</servlet-name>
      <url-pattern>/maServlet</url-pattern>
    </servlet-mapping>
    ...
    Ensuite, côté javascript, il suffit de construire l'URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var url = "http://leServeur:port/MonApplication/maServlet";
    
    etc...

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    ah ça c'est super !

    Citation Envoyé par OButterlin Voir le message
    Pour accéder aux EJB, j'utilise un "locator", voici un exemple
    J'ai bien aimé votre code, ça ma permis de mettre quelques points sur mes "i" mais (il y a tjs un mais ) c'est la première fois que j'entend parler du Locator, si j'ai bien compris, ça me sert comme le Remote pour acceder à mon EJB? ou il a une autre utilité?

    Et pour la servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
       MaFacadeRemote facade = EJBLocator.getLocator().getMaFacadeRemote();
       facade.uneFonction(...);
       ...
    }
    est ce que "uneFonction(...)" c'est une des fonction que j'ai décris dans l'interface Remote de mon EJB c'est ça?

    Je vais essayer de tester ce bout de code et je vous tiens au courant.

    Juste une remarque, l'implementation du singleton dans le Locator, ça n'aurait pas du être comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public static EJBLocator getLocator()
        {
            if (instance == null) instance = new EJBLocator();
            return instance;
        }
    Merci

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par TheCyberXP Voir le message
    J'ai bien aimé votre code, ça ma permis de mettre quelques points sur mes "i" mais (il y a tjs un mais ) c'est la première fois que j'entend parler du Locator, si j'ai bien compris, ça me sert comme le Remote pour acceder à mon EJB? ou il a une autre utilité?
    C'est ça, il sert à "localiser" un EJB (sans se poser de question)

    Citation Envoyé par TheCyberXP Voir le message
    Et pour la servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void service(HttpServletRequest request, HttpServletResponse response)
    {
       MaFacadeRemote facade = EJBLocator.getLocator().getMaFacadeRemote();
       facade.uneFonction(...);
       ...
    }
    est ce que "uneFonction(...)" c'est une des fonction que j'ai décris dans l'interface Remote de mon EJB c'est ça?
    Non, ça renvoie l'instance de l'objet facade implémentant l'interface.
    Le locator permet de "localiser" plusieurs EJB (s'il y en a plusieurs )

    Citation Envoyé par TheCyberXP Voir le message
    Juste une remarque, l'implementation du singleton dans le Locator, ça n'aurait pas du être comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public static EJBLocator getLocator()
        {
            if (instance == null) instance = new EJBLocator();
            return instance;
        }
    Merci
    Oui, c'est plus standard comme ça (même si en l'occurrence, ça ne change pas grand chose, au premier chargement de la classe, l'instance sera créée et comme le locator ne sert qu'à une chose...)

Discussions similaires

  1. [c#] Quel outil désomais pour faire des états
    Par appwnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/07/2011, 13h08
  2. Quels classes utiliser pour remplacer des classes qui sont propriété de Sun
    Par danyboy85 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 21/11/2007, 16h36
  3. Réponses: 3
    Dernier message: 05/04/2007, 11h56
  4. Réponses: 1
    Dernier message: 04/01/2006, 14h39
  5. quel outil utiliser pour defragmenter des TB ?
    Par falafel23 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 12/09/2005, 22h20

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