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

Servlets/JSP Java Discussion :

Accéder à l'EJB depuis le servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut Accéder à l'EJB depuis le servlet
    Bonjour à tous,

    Voici la hiérarchie de mon application

    CompteServlet.java
    build.xml
    WEB-INF
    |
    -> web.xml, application.xml, ejb-bar.xml
    COMPTE
    |
    -> compte.java, comptebean.java, comptehome.java
    CLIENT
    |
    -> CompteClient.java, index.html

    A partir de ca je crée un war avec le build xml et un ant classique.
    Je déploie mon WAR sur un serveur Jonas.
    A partir de là quand je lance mon appli j'atteri bien sur ma page index.html.
    Mais quand je valide le formulaire je devrais appeler mon servlet qui devrait aller chercher l'EJB pour ouvrir le compte, et permettre ensuite l'ajout.

    Hors là voici l'erreur enfin les erreurs :d:
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Erreur javax.naming.NameNotFoundException
    javax.naming.NameNotFoundException
    	at org.objectweb.jonas.naming.CompNamingContext.lookupCtx(CompNamingContext.java:766)
    	at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:197)
    	at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:198)
    	at org.objectweb.jonas.naming.CompNamingContext.lookup(CompNamingContext.java:198)
    	at org.objectweb.jonas.naming.java.javaURLContext.lookup(javaURLContext.java:176)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at CompteServlet.init(Unknown Source)
    	at javax.servlet.GenericServlet.init(GenericServlet.java:256)
    	at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
    	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
    	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:114)
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    	at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Thread.java:662)
    ENTRE DANS POST
    Erreur java.lang.NullPointerException
    java.lang.NullPointerException
    	at CompteServlet.getConfigRef(Unknown Source)
    	at CompteServlet.doPost(Unknown Source)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
    	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245)
    	at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
    	at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Thread.java:662)
    2012-03-06 16:56:49,890 : StandardWrapperValve.invoke : Servlet.service() for servlet CompteServlet threw exception
    java.lang.NullPointerException
    	at CompteServlet.doPost(Unknown Source)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    	at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    	at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
    	at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245)
    	at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
    	at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.objectweb.jonas.web.catalina55.ResetAuthenticationValve.invoke(ResetAuthenticationValve.java:62)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Thread.java:662)
    Donc je repère que ca doit concerner mon Lookup a première vue, puis ma fonction getCompteRef et ensuite la dernière je ne vois pas trop.

    Je vous met les code des principaux fichiers si vous pouviez m'aider, je ne comprend pas quel chemin je dois mettre pour mon Lookup dans un premier temps.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.rmi.PortableRemoteObject;
    import javax.servlet.ServletException;
    import java.rmi.RemoteException;
    import javax.ejb.CreateException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.util.Properties;
     
    import CompteServlet.Compte;
    import CompteServlet.CompteHome;
     
    public class CompteServlet extends HttpServlet {
        private static final String CONTENT_TYPE = "text/html";
          private CompteHome compteHome;
          private Compte myCompte;
        // à l'initialisation de la servlet, on récupère la référence de
        // l’interface Home de Config
        public void init() throws ServletException {
    	Context initialContext = null;
            try {
                initialContext = new InitialContext();
                compteHome = (CompteHome) PortableRemoteObject.narrow(initialContext.lookup("java:comp/env/ejb/Compte"),CompteHome.class);
    	    myCompte = compteHome.create();
    	    myCompte.initCompte();
                System.out.println("La servlet s'est connecté au serveur JNDI local a récupéré la référence de l'interface Home distant de Config");
            } catch (NamingException e) {
                System.out.println("Erreur " + e);
                e.printStackTrace();
            }
    	catch (CreateException e) {
    	      System.out.println("Erreur " + e);
    	      e.printStackTrace();
    	}
    	catch (RemoteException e) {
    	      System.out.println("Erreur " + e);
    	      e.printStackTrace();
    	}
        }
        // cette méthode récupère de l'objet session la référence
        // d'un EJB Config; s’il n’en existe pas, l’EJB Config est créé
        // et stocké dans l’objet session pour un usage futur
        private Compte getCompteRef(HttpServletRequest req) {
            Object ac = null;
            try {
                HttpSession session = req.getSession(true);
                ac = session.getAttribute("ConfigREF");
                if (ac == null) {
                    ac = compteHome.create();
                    session.setAttribute("ConfigREF", ac);
                }
            } catch (Exception e) {
                System.out.println("Erreur " + e);
                e.printStackTrace();
            }
            return (Compte) ac;
        }
     
       /*public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                      System.out.println ("ENTRE DANS GET") ;
    		  response.setContentType(CONTENT_TYPE);
    		  PrintWriter out = response.getWriter();
    		  Compte compte = getCompteRef(request);
        }*/
        public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
            System.out.println ("ENTRE DANS POST") ;
            response.setContentType(CONTENT_TYPE);
            PrintWriter out = response.getWriter();
            myCompte = getCompteRef(request);
     
    	if(!request.getParameter("ajout").equals("")){
    	  int ajout=Integer.parseInt(request.getParameter("ajout"));
    	  myCompte.setDepot(ajout);
    	}
    	if(!request.getParameter("retrait").equals("")){
    	  int retrait=Integer.parseInt(request.getParameter("retrait"));
    	  myCompte.setRetrait(retrait);
    	}
    	out.println("<html><head><title>Gestion de compte</title></head><body><form method=\"POST\" action=\"http://localhost:9000/CompteServlet\"><center>Tapez le montant que vous voulez ajouter à votre compte : <input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à votre compte : <input name=retrait type=text><br><br><br><input type=submit value=Validez></form></body></html>");
            out.flush() ;
    	out.close() ;
        }
     
    }
    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
    <?xml version='1.0' encoding='UTF-8'?>
    <application xmlns=" http://java.sun.com/xml/ns/j2ee" version=" 1.4" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" >
       <description xml:lang=" fr"> Application description</description>
       <display-name xml:lang=" fr"> ConfigApp.ear</display-name>
       <module>
          <ejb> ejb-jar-ic.jar</ejb>
       </module>
       <module>
          <web>
             <web-uri> war-ic.war</web-uri>
             <context-root> /compte</context-root>
          </web>
       </module>
    </application>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version='1.0' encoding='UTF-8'?>
    <ejb-jar xmlns=" http://java.sun.com/xml/ns/j2ee" version=" 2.1" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd ">
       <display-name xml:lang=" fr" > CompteServlet </display-name>
       <enterprise-beans>
          <session>
             <ejb-name> CompteBean</ejb-name>
             <home> CompteHome</home>
             <remote> Compte</remote>
             <ejb-class> CompteBean</ejb-class>
             <session-type> Stateful</session-type>
             <transaction-type> Bean</transaction-type>
          </session>
       </enterprise-beans>
    </ejb-jar>
    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
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
       <display-name> WebApp </display-name>
       <servlet>
          <servlet-name> CompteServlet</servlet-name>
          <display-name> CompteServlet</display-name>
          <servlet-class> CompteServlet</servlet-class>
       </servlet>
       <servlet-mapping>
          <servlet-name> CompteServlet</servlet-name>
          <url-pattern> /CompteServlet</url-pattern>
       </servlet-mapping>
     
    </web-app>
    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
    48
    49
    50
    51
    52
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <project name="FirstCompte" basedir="." default="deploy">
     
     <property name="project.libs" value="/home1/sl771476/Jonas4.8/JONAS_4_8_2/lib/" />
     <property name="classes.dir" value="./classes" />
     <property name="deploy.dir" value="/home1/sl771476/Jonas4.8/JONAS_4_8_2/deploy" />
     <property name="src.dir" value="."></property>
     
     
     <path id="base.path">
     <fileset dir="${project.libs}">
     <include name="**/*.jar" />
     </fileset>
     </path>
     
     <target name="clean" description="Delete all generated files">
     <delete dir="${classes.dir}" />
     </target>
     
     <target name="compile" description="Compiles the Task">
     <mkdir dir="${classes.dir}" />
     <javac srcdir="${src.dir}" destdir="${classes.dir}">
     <classpath>
     <path refid="base.path" />
     </classpath>
     </javac>
     </target>
     
     <!--<target name="deploy" description="JARs the Task" depends="compile">
     <jar destfile="${ant.project.name}.jar">
     <metainf dir="${src.dir}/META-INF" />
     <fileset dir="${classes.dir}">
     <include name="**/*.class" />
     </fileset>
     </jar>
     </target>
    -->
     <target name="undeploy" description="Undeploy jar from server">
      <delete file="${deploy.dir}/${ant.project.name}.jar" />
     </target>
     
     <target name="deploy" description="WARs the Task" depends="compile">
      <war destfile="${ant.project.name}.war">
      <webinf dir="${src.dir}/WEB-INF" />
      <fileset dir="${src.dir}/Client"/>
      <fileset dir="${classes.dir}">
        <exclude name="**/web.xml" />
      </fileset>
      </war>
     </target>
     
    </project>
    Merci d'avance!

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Un hello world couplant EJB aux servlets ici

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    Oui d'accord, mais parce qu'il y a des mais...

    Je code sans IDE.

    La, le fichier de déploiement est pour geronimo mais pour Jonas...

    Ensuite dans le tuto, je ne vois pas de lookup pour coupler le bean et je pense que c'est là mon problème...

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    Primo, la hiérarchie de ton projet est particulierement louche et je me dis que:

    A partir de ca je crée un war avec le build xml et un ant classique.
    ne dois rien avoir de clasique.

    Deuxio, pourquoi bosses-tu sur du J2EE 1.4? Est-ce un projet existant ou fais-tu un tuto totalement périmé?

    Tercio, tu parles de war mais tu as un application.xml bien foutu qui laisse supposer que tu déploies plutot un ear contenant ton jar ejb et ton war.? What's up?

    Dans tous les cas ce que je peux dire c'est qu'il manque la resource-ref de ton EJB dans ton web.xml.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    Pour le 1.4 c'est une erreur merci de l'avoir remarqué.

    Concrètement j'ai essayer un truc que j'ai trouver sur internet donc je me base la dessus mais je ne maîtrise pas sur le bout des doigts.

    Donc l'objectif c'est que je parte d'une page html ou je rentre un montant par exemple et que quand je valide le formulaire il appelle le servlet par la méthode doPost qui fait appel à mon ejb pour faire évoluer le solde.

    Alors je supposais qu'un WAR suffisait non? Du coup j'ai peut être pas besoin du application.xml?

    Enfin par rapport à ma hiérarchie, j'avoue que j'ai un peu improviser pour pouvoir déployer mon WAR, mais que proposeriez vous?

    Merci de votre aide.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par Leda25 Voir le message
    Pour le 1.4 c'est une erreur merci de l'avoir remarqué.

    Concrètement j'ai essayer un truc que j'ai trouver sur internet donc je me base la dessus mais je ne maîtrise pas sur le bout des doigts.

    Donc l'objectif c'est que je parte d'une page html ou je rentre un montant par exemple et que quand je valide le formulaire il appelle le servlet par la méthode doPost qui fait appel à mon ejb pour faire évoluer le solde.

    Alors je supposais qu'un WAR suffisait non? Du coup j'ai peut être pas besoin du application.xml?

    Enfin par rapport à ma hiérarchie, j'avoue que j'ai un peu improviser pour pouvoir déployer mon WAR, mais que proposeriez vous?

    Merci de votre aide.
    Bonjour,
    Indépendamment du serveur d'application utilisé je pense qu'il te manque des bases sur l'architecture incluant les composants EJB. Le mieux c'est vraiment de suivre un tutoriel bout à bout jusqu'à affichage complet. Une fois que c'est maitrisé, tu prendras la main plus facilement sur ton projet à toi même. Prends le temps de suivre ce tutoriel ici, ils utilisent glassfich sous Netbeans. Mais tu trouverais l'équivalent sous eclipse/tomcat aussi. Puisque tu débutes, autant partir sur de bonnes bases, à savoir un éditeur (eclipse/netbeans,etc...)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    Voilà j'ai suivi le tutoriel et du coup j'accède à mon EJB. Sur le serveur Jonas, pour déployer, me suffira-t-il de déployer l'ear? en modifiant le localhost adapté?

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package compte;
     
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     *
     * @author David
     */
    @WebServlet(name = "CompteServlet", urlPatterns = {"/CompteServlet"})
    public class CompteServlet extends HttpServlet {
        CompteBeanLocal compteBean = lookupCompteBeanLocal();
     
        /** 
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
                //TODO output your page here
                compteBean.initCompte();
                out.println("<html><head><title>Gestion de compte</title></head><body><form method=\"POST\" "
                + "action=\"http://localhost:8080/compte-war/CompteServlet\"><center><h1>Gestion de compte</h1>Tapez le montant que vous "
                + "voulez ajouter à votre compte : <input name=ajout type=text> <br><br>Tapez le montant que vous "
                + "voulez retirer à votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit value=Validez>"
                + "</form></body></html>");
     
            } finally {            
                out.close() ;
     
            }
        }
     
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** 
         * Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            processRequest(request, response);
        }
     
        /** 
         * Handles the HTTP <code>POST</code> method.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            String ajout=request.getParameter("ajout");
            String retrait=request.getParameter("retrait");
            String afficheroperation=null;
            if(request.getParameter("afficheroperation")!=null)
            {
                afficheroperation=request.getParameter("afficheroperation");
            }
            String affichersolde=null;
            if(request.getParameter("affichersolde")!=null)
            {
                affichersolde=request.getParameter("affichersolde");
            }
            if(!ajout.equals("")&&!retrait.equals("")){
                out.println("<html><head><title>Gestion de compte</title></head><body><form "
                + "method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\"><center><h1>Gestion de compte</h1>"
                + "Tapez le montant que vous voulez ajouter à votre compte : <input name=ajout type=text> "
                + "<br><br>Tapez le montant que vous voulez retirer à votre compte : <input name=retrait type=text>"
                + "<br><br><br><font color='red'>Vous ne pouvez pas faire un dépot et un solde en même temps</font>"
                + "<br><input type='checkbox' name='affichersolde' value=\"truesolde\">Afficher le solde<br><input "
                + "type='checkbox' name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                + "value=Validez></form></body></html>");
            }
            else{
                if(!ajout.equals("")){
                      int ajoutInt=Integer.parseInt(request.getParameter("ajout"));
                      compteBean.setDepot(ajoutInt);
                      if(afficheroperation!=null&&affichersolde!=null){
                          out.println("<html><head><title>Gestion de compte</title></head><body>"
                          + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                          + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                          + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                          + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                          + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                          + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                          + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()+"<br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                          + "</center></body></html>");
                      }
                      else{
                          if(affichersolde!=null){
                              out.println("<html><head><title>Gestion de compte</title></head><body>"
                              + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                              + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                              + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                              + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                              + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                              + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                              + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()
                              + "</center></body></html>");
                          }else{
                              if(afficheroperation!=null){
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form><br><br><br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                                  + "</center></body></html>");
                              }
                              else{
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form>"
                                  + "</center></body></html>");
                              }
                          }
                      }
                }else{
                    if(!retrait.equals("")){
                        int retraitInt=Integer.parseInt(request.getParameter("retrait"));
                        compteBean.setRetrait(retraitInt);
                        if(afficheroperation!=null&&affichersolde!=null){
                            out.println("<html><head><title>Gestion de compte</title></head><body>"
                            + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                            + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                            + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                            + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                            + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                            + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                            + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()+"<br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                            + "</center></body></html>");
                        }
                        else{
                            if(affichersolde!=null){
                              out.println("<html><head><title>Gestion de compte</title></head><body>"
                              + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                              + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                              + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                              + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                              + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                              + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                              + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()
                              + "</center></body></html>");
                            }else{
                                if(afficheroperation!=null){
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form><br><br><br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                                  + "</center></body></html>");
                                }
                                else{
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form>"
                                  + "</center></body></html>");
                                }
                            }
                        } 
                    }
                    else{
                        if(afficheroperation!=null&&affichersolde!=null){
                            out.println("<html><head><title>Gestion de compte</title></head><body>"
                            + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                            + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                            + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                            + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                            + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                            + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                            + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()+"<br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                            + "</center></body></html>");
                        }
                        else{
                            if(affichersolde!=null){
                              out.println("<html><head><title>Gestion de compte</title></head><body>"
                              + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                              + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                              + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                              + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                              + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                              + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                              + "value=Validez></form><br><br><br>Votre solde est de:<br>"+compteBean.getSolde()
                              + "</center></body></html>");
                            }else{
                                if(afficheroperation!=null){
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form><br><br><br>Voici les dernières opérations:<br>"+compteBean.getOperation()
                                  + "</center></body></html>");
                                }
                                else{
                                  out.println("<html><head><title>Gestion de compte</title></head><body>"
                                  + "<form method=\"POST\" action=\"http://localhost:8080/compte-war/CompteServlet\">"
                                  + "<center><h1>Gestion de compte</h1>Tapez le montant que vous voulez ajouter à votre compte : "
                                  + "<input name=ajout type=text> <br><br>Tapez le montant que vous voulez retirer à "
                                  + "votre compte : <input name=retrait type=text><br><br><br><input type='checkbox' "
                                  + "name='affichersolde' value=\"truesolde\">Afficher le solde<br><input type='checkbox' "
                                  + "name='afficheroperation' value=\"trueoperation\">Afficher les opérations<br><input type=submit "
                                  + "value=Validez></form>"
                                  + "</center></body></html>");
                                }
                            }
                        } 
                    }
                }
            }
    	out.flush() ;
    	out.close() ;
        }
     
        /** 
         * Returns a short description of the servlet.
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
        private CompteBeanLocal lookupCompteBeanLocal() {
            try {
                Context c = new InitialContext();
                return (CompteBeanLocal) c.lookup("java:global/compte/compte-ejb/CompteBean!compte.CompteBeanLocal");
            } catch (NamingException ne) {
                Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
                throw new RuntimeException(ne);
            }
        }
    }
    EDIT: En fait il semble que ca ne met pas générer de EAR, comment je fais

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Je ne connais pas bien NetBeans, mais il doit forcément te permettre d'exporter ton ear que tu déploieras dans le conteneur ejb que tu veux.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Par défaut
    J'ai réussi à créer mon EAR mais du coup ca ne veut pas se déployer sous jonas.....

    Je vois pas ce que je peux faire...

  10. #10
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    je vois que tu as fait un grand pas en avant au niveau version.
    Avec JEE6 tu peux deployer tes EJBs depuis le conteneur web. Libre à toi de faire un simple war pour faire plus simple.
    De plus tu peux injecter ton EJB de facon standard au lieu de faire un lookup.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @EJB private MonEjbLocal monEjbLocal
    Je ne connais pas du tout Jonas mais je sais qu'il n'est pas 100% compliant avec la spec. Il convient de déterminer ce qu'il respecte et ce qu'il ne respecte pas.

    Sinon concernant ton erreur de déploiement. Sans la stacktrace de l'erreur personne ne pourra t'aider

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2010, 10h58
  2. Accéder à un ejb déployé sous weblogic depuis JBOSS
    Par TiEuM dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 12/01/2009, 16h37
  3. Réponses: 2
    Dernier message: 11/12/2008, 17h31
  4. [EJB] Accéder aux EJB par une Applet,servlet et jsp
    Par hterrolle dans le forum Java EE
    Réponses: 18
    Dernier message: 27/02/2007, 08h23
  5. [debutant]renvoyer sur une jsp depuis une servlet
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/03/2004, 11h55

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