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

REST Discussion :

web service CRUD restful +ejb


Sujet :

REST

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut web service CRUD restful +ejb
    Salut,

    J'ai commencé à créer un projet maven de type ear sous netbeans 6.9 Le projet contient un module EJB,un module web, un projet Assembly, et un projet "Enterprise Application".
    Le but principal de mon projet est d'envoyer une requete POST vers une service REST(une resource qui existe sour le module web) . Ce dernier dépend du module ejb et il doit creer une ligne dans une table à travers la ressource Rest.

    Mon module ejb contient une interface Remote ISessionFacade et un Stateless session Bean SessionFacade.

    Mon pom.xml du projet web contient les dependances suivantes:
    <!-- appserv-rt.jar -->
    <dependency>
    <groupId>org.glassfish.extras</groupId>
    <artifactId>appserv-rt.jar</artifactId>
    <version>LATEST</version>
    <scope>system</scope>
    <systemPath>${glassfish.home}/lib/appserv-rt.jar</systemPath>
    </dependency>
    <!-- Javaee API -->
    <dependency>
    <groupId>org.glassfish.extras</groupId>
    <artifactId>javaee</artifactId>
    <version>LATEST</version>
    <scope>system</scope>
    <systemPath>${glassfish.home}/lib/javaee.jar</systemPath>
    </dependency>
    <!-- Jndi properties -->
    <dependency>
    <groupId>jndi</groupId>
    <artifactId>jndi-properties.jar</artifactId>
    <version>LATEST</version>
    <scope>system</scope>
    <systemPath>${glassfish.home}/lib/jndi-properties.jar</systemPath>
    </dependency>
    <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>${javax.javaee.version}</version>
    <scope>provided</scope>
    </dependency>






    La classe Resource Rest SessionsResource est sous la forme

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package resource;

    import facade.remote.IArmariusWordspottingSessionFacade;
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.ejb.EJB;

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import org.restlet.data.Status;
    import org.restlet.representation.Representation;
    import org.restlet.resource.Post;
    import org.restlet.resource.Get;

    import org.restlet.resource.ServerResource;

    /**
    *
    * @author Administrateur
    */
    //@Stateless
    public class SessionsResource extends ServerResource {



    /**
    * cq: create a new item.
    */
    @Post
    public Representation acceptItem(Representation entity) throws NamingException {
    Representation result = null;

    ISessionFacade ejbFaçade = lookupFacadeRemote1();
    System.out.println("sessionFacade =" + sessionFacade.getOkString());
    return result;
    }
    private ISessionFacade lookupFacadeRemote1() {
    try {
    // Properties properties = new Properties();
    // properties.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
    // properties.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
    // properties.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
    // properties.setProperty("java.naming.provider.url", "localhost:1099");
    // properties.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
    Context c = new InitialContext();
    //Context c = new InitialContext(properties);

    return (ISessionFacade) c.lookup("java:global/webService-ejb_ejb_1.0-SNAPSHOT/SessionFacade!facade.remote.ISessionFacade");
    } catch (NamingException ne) {
    Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
    throw new RuntimeException(ne);
    }
    }
    }
    Mais le problème c'est qu'en exécutant mon code sous glassFish 3.0.1 une exception est générée
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)

    Meme si je définie les propriétés pour initialiser le context je me trouve avec l'exception suivante :
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property,
    or as an applet parameter, or in an application resource file: java.naming.factory.initial


    Je suis reconnaissante a tout ce qui peut m'aider à résoudre mon problème.
    Merci d'avance

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Ton problème n'est pas lié à REST mais plutôt JNDI.

    Je peux juste te dire que ces modules EJB me semblent une énorme artillerie pour faire un POST.

  3. #3
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Essaye avec cette dépendance :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
    	<groupId>org.glassfish.appclient</groupId>
    	<artifactId>gf-client</artifactId>
    	<version>3.1-b14</version>
    </dependency>
    au lieu de appserv-rt. Peut-être que tu pourras ajouter des exclusions, car tous les modules de glassfish sont liés (sans intérêt mais bon).

    Il faut utiliser ces propriétés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.naming.factory.initial=com.sun.enterprise.naming.SerialInitContextFactory
    org.omg.CORBA.ORBInitialHost=tonserveur.domaine
    Quant au lookup, cela devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ctx.lookup("java:global/nomappli/nommoduleejb/NomDuBean");
    .
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

Discussions similaires

  1. Exposer un Service CRUD RestFul avec JBoss RestEasy
    Par dgouyette dans le forum REST
    Réponses: 11
    Dernier message: 23/09/2014, 22h47
  2. [PHP 5.3] Amazon Web Services et REST
    Par hervelyon dans le forum Langage
    Réponses: 0
    Dernier message: 23/09/2010, 16h17
  3. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Services Web
    Réponses: 4
    Dernier message: 25/05/2009, 08h26
  4. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Services Web
    Réponses: 0
    Dernier message: 20/05/2009, 00h15
  5. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 20/05/2009, 00h15

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