TP12: AddItemToCartServlet not found?????

Modérateurs : graffion, jmdouin, agoncal, mlebihan

esev
Messages : 56
Inscription : 19 oct. 2008 15:56

TP12: AddItemToCartServlet not found?????

Message par esev » 19 janv. 2009 0:49

voici une failure bizarre:

junit.framework.AssertionFailedError: AddItemToCartServlet hasn't been found
at junit.framework.Assert.fail(Assert.java:47)
at com.yaps.petstore.web.WebTest.testWebShoppingCart(WebTest.java:134)

Pourquoi j'ai ça, c'est une servlet déjà fournie?


j'ai des failures sur des choses existantes, c'est chaud.
yaps-mark me dit la meme chose.

Si quelqu'un a une suggestion, merci.

Esev

esev
Messages : 56
Inscription : 19 oct. 2008 15:56

Re: TP12: AddItemToCartServlet not found?????

Message par esev » 19 janv. 2009 1:40

Sauf que cette servlet crée un objet ShoppingCartDelegate dont le constructeur prend un session id chais pas quoi qui d'après l'énoncé est supposé aider à retrouver le stateful session ejb bean ShoppingCart.

donc comme moi je retrouve ce fameux stateful session ejb bean ShoppingCart en n'utilisant pas cet id mais à la sauce qui ce trouve dans tout le code existant :

private static ShoppingCart getShoppingCart() throws RemoteException {
ShoppingCart shoppingCartRemote = null;
try {
// Looks up for the home interface
shoppingCartRemote = (ShoppingCart) ServiceLocator.getInstance().getHome(ShoppingCartHome.JNDI_NAME);
} catch (Exception e) {
throw new RemoteException("Lookup or Create exception", e);
}
return shoppingCartRemote;
}

ben je pense que ma failure vient de là.
Les cours mentionnent t'ils ce genre de manipe?

Merci

Esev

ressemble au mystere du creditcardservice de mon message precedent!

majed
Messages : 30
Inscription : 17 oct. 2008 12:15

Re: TP12: AddItemToCartServlet not found?????

Message par majed » 19 janv. 2009 16:37

j'ai pas bien compris moi aussi le fait d'instancier la classe shoppingcartdelegate avec le numero de sessionId , il faudrait utiliser le procédé le plus connu dans le monde open source qui d'ajouter le statefull dans HttpSession et ca marchera du tonnere
A+
PS: il faudra confirmer avec l'attribut SessionId mais c'est po vraiment la meilleure solution

clarisse
Messages : 36
Inscription : 19 oct. 2008 18:14

Re: TP12: AddItemToCartServlet not found?????

Message par clarisse » 19 janv. 2009 19:03

bonjour majed,
comment tu as fait pour ne pas avoir AddItemToCartServlet hasn't been found
tu peut expliquer un peut plus s'il te plait, parce que moi j'arrive pas à comprendre l'utilité de cette constructeur avec son paramere sessionId,

esev
Messages : 56
Inscription : 19 oct. 2008 15:56

Re: TP12: AddItemToCartServlet not found?????

Message par esev » 19 janv. 2009 22:03

J'ai le truc le plus fou de la terre!

si je fais un clean, build et deploy, que je lance le site petstore, tout fonctionne, les add to cart, les remove, les updates etc.

fier de n'avoir rien fait d'autre suite à mon probleme, je me dit que mes tests devraient enfin passer, ben non, toujours AddItemToCartServlet not found.

je repart sur le site petstore et la tous les add to cart, remove, update ne fonctionnent plus , bien sur car ils sont tous liés.

je refait un clean, build et deploy, je relance le site petstore, tout fonctionne à nouveau.

là va falloir du courage pour comprendre???
Esev

geoffroy_k
Messages : 30
Inscription : 19 oct. 2008 20:24

Re: TP12: AddItemToCartServlet not found?????

Message par geoffroy_k » 21 janv. 2009 0:15

Bonsoir,

Moi aussi j'obtiens toujours une failure :
AddItemToCartServletNotFound not found

Quelqu'un a t'il trouvé une solution ?

Merci.

Geoffroy

fdeweulf
Messages : 7
Inscription : 20 oct. 2008 23:11

Re: TP12: AddItemToCartServlet not found?????

Message par fdeweulf » 21 janv. 2009 4:10

Bonsoir Geoffroy,

On ne peut pas dire qu'il n'y ait qu'une seule solution pour fixer le plantage à ce test... en fait, tout bug dans la filière: "XXXXCartServlet"->"ShoppingCartDelegate"->"ShoppingCartBean"
peut faire échouer cette série de tests.

J'en ai personnellement pas mal bavé, je viens juste de terminer et il est 3h du mat'... j'ai perdu pas mal de temps avec le site Web qui fonctionnait bien mais avec des plantages dans les tests de testWebShoppingCart() pour finalement me rendre compte que les URLs appelées par ces tests n'ont pas de paramètres et donc mon Bean se vautrait lamentablement en NullPointerException...

m'enfin, heureusement qu'il n'y a pas de TP13 :-)

François

redsonic
Messages : 53
Inscription : 10 oct. 2008 0:13

Re: TP12: AddItemToCartServlet not found?????

Message par redsonic » 21 janv. 2009 15:07

Bonjour,

Comme Clarisse, moi non plus je n'arrive pas à comprendre à quoi il sert ce paramètre Id.

Code : Tout sélectionner

   	ShoppingCartDelegate delegate = new ShoppingCartDelegate(request.getSession().getId());
Mais ce n'est pas lui le problème.

De plus je ne comprends pas que les tests échouent pour AddItemToCartServlet et n'échouent pas pour RemoveItemFromCartServlet par exemple ..

Merci

clarisse
Messages : 36
Inscription : 19 oct. 2008 18:14

Re: TP12: AddItemToCartServlet not found?????

Message par clarisse » 21 janv. 2009 17:27

bonjour,
enfin j'ai compris, pourquoi le constructeur ShoppingCartDelegate(sessionId) a été utilisé,
dans une EJB stateful Une instance particulière est dédiée à chaque client qui sollicite les services de l'ejb tout au long de son dialogue , mais quand le même client ouvre une autre session comme l'a dit le prof, il peut avoir accès à la meme cady dans deux session differentes, donc pour eviter çela chaque session de client doit avoir son propre ejb, ...
mais comme redsonic vient de dire le problème n'est pas la.

redsonic
Messages : 53
Inscription : 10 oct. 2008 0:13

Re: TP12: AddItemToCartServlet not found?????

Message par redsonic » 21 janv. 2009 17:54

Merci Clarisse pour l'explication.

Encore un détail :

Quand je sollicite la servlet avec le lien suivant sur mon browser :

Code : Tout sélectionner

http://localhost:8080/petstore/addtocart
J'ai une HTTP error 500 et j'ai cette exception sur la console jboss:

Code : Tout sélectionner

17:00:42,664 ERROR [[AddItemToCart]] "Servlet.service()" pour la servlet AddItemToCart a gᅵnᅵrᅵ une exception
javax.ejb.EJBException: java.lang.NullPointerException
        at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:77)
        at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
        at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:159)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:65)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:660)
        at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:97)
        at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
        at $Proxy131.invoke(Unknown Source)
        at org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261)
        at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101)
        at $Proxy333.addItem(Unknown Source)
        at com.yaps.petstore.common.delegate.ShoppingCartDelegate.addItem(Unknown Source)
        at com.yaps.petstore.web.servlet.cart.AddItemToCartServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
        at com.yaps.petstore.server.cart.ShoppingCartBean.addItem(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
        at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
        at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
        at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
        at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_712593.invoke(InvocationContextInterceptor_z_fillMethod_712593.java)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
        at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_712593.invoke(InvocationContextInterceptor_z_setup_712593.java)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:60)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:81)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
        ... 48 more
et ensuite quand je rafraichis la page j'ai cette exception :

Code : Tout sélectionner

17:00:50,912 ERROR [[AddItemToCart]] "Servlet.service()" pour la servlet AddItemToCart a gᅵnᅵrᅵ une exception
javax.ejb.NoSuchEJBException: Could not find stateful bean: 3j001-7gisiy-fq7zrf2s-1-fq86m594-ce
        at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:479)
        at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:430)
        at org.jboss.ejb3.stateful.StatefulContainer.dynamicInvoke(StatefulContainer.java:645)
        at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:97)
        at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
        at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
        at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
        at $Proxy131.invoke(Unknown Source)
        at org.jboss.ejb3.proxy.handler.ProxyInvocationHandlerBase.invoke(ProxyInvocationHandlerBase.java:261)
        at org.jboss.ejb3.proxy.handler.session.SessionSpecProxyInvocationHandlerBase.invoke(SessionSpecProxyInvocationHandlerBase.java:101)
        at $Proxy333.addItem(Unknown Source)
        at com.yaps.petstore.common.delegate.ShoppingCartDelegate.addItem(Unknown Source)
        at com.yaps.petstore.web.servlet.cart.AddItemToCartServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
        at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
        at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)


Quelqu'un a une piste ?

clarisse
Messages : 36
Inscription : 19 oct. 2008 18:14

Re: TP12: AddItemToCartServlet not found?????

Message par clarisse » 21 janv. 2009 18:22

oui redsonic, moi aussi j'ai le meme erreur quand je fait http://localhost:8080/petstore/addtocart,
je sais pas si quelqu'un a réussit de passer tous les tests,

geoffroy_k
Messages : 30
Inscription : 19 oct. 2008 20:24

Re: TP12: AddItemToCartServlet not found?????

Message par geoffroy_k » 21 janv. 2009 23:37

Merci François.

Effectivement il peut exister un problème dans mon ShoppingCartDelegate ou bien dans mon ShoppingCartBean.

Je vais essayer de trouver l'erreur ce soir...

Geoffroy

hhf
Messages : 56
Inscription : 24 oct. 2008 19:49

Re: TP12: AddItemToCartServlet not found?????

Message par hhf » 22 janv. 2009 0:05

clarisse a écrit :bonjour,
enfin j'ai compris, pourquoi le constructeur ShoppingCartDelegate(sessionId) a été utilisé,
dans une EJB stateful Une instance particulière est dédiée à chaque client qui sollicite les services de l'ejb tout au long de son dialogue , mais quand le même client ouvre une autre session comme l'a dit le prof, il peut avoir accès à la meme cady dans deux session differentes, donc pour eviter çela chaque session de client doit avoir son propre ejb, ...
Salut Clarisse, ben en meme temps ca me plais bien qu'un user, quelque soit ou il se connecte possede les memes objet non ?

Enfin, pour ma part, (et il ne me semble pas que se soit specifie dans l'EB) je n'est pas exploite l'idsession. Mais j'espere que le prof expliquera le pourkoi du comment jeudi.

hhf

fdeweulf
Messages : 7
Inscription : 20 oct. 2008 23:11

Re: TP12: AddItemToCartServlet not found?????

Message par fdeweulf » 22 janv. 2009 0:20

Personnellement, j'ai constaté que les tests peuvent passer sans gérer le sessionID. (C'est pas très beau, mais bon...)

Par contre, pour les "javax.ejb.EJBException: java.lang.NullPointerException" j'ai été obligé de blinder le code des ShoppingCartDelegate/Bean pour "supporter" le cas des tests JUnit qui appellent les servlets sans passer de paramètres "item" contrairement aux jsps.

Bon courage,
François

Jodouk
Messages : 36
Inscription : 29 oct. 2008 19:06

Re: TP12: AddItemToCartServlet not found?????

Message par Jodouk » 22 janv. 2009 1:18

Y a t-il un traitement à faire avec sessionId ShoppingCartDelegate.java
avoir construit le constructeur:
public ShoppingCartDelegate(String sessionId){
_sessionId=sessionId;
}


Merci.

Répondre