2010-09-30 6 views
2

j'ai suivi le « Netbeans tutoriel E-Commerce », et je suis actuellement à avoir cette étape: http://netbeans.org/kb/docs/javaee/ecommerce/entity-session.htmlerreur Java Netbeans

J'ai entièrement configuré mon compte Windows 7 selon cette page, avec NetBeans 6.9 .1, serveur Glassfish et MySQL.

Je reçois une erreur 500 lors de l'exécution de la page 'Catégorie' (extrait de journal ci-dessous). L'erreur se manifeste lorsque je termine l'étape 3 dans la sous-section «catégorie sélectionnée» de la section «Accès aux données avec EJB» de cette page. La ligne en question est:

// get selected category 
selectedCategory = categoryFacade.find(Short.parseShort(categoryId)); 

Si je commente cette ligne, le bogue disparaît.

L'extrait de fichier journal est ici:

[#|2010-09-29T18:32:32.570+0100|WARNING|glassfish3.0.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=30;_ThreadName=http-thread-pool-8080-(2);|StandardWrapperValve[Controller]: PWC1406: Servlet.service() for servlet Controller threw exception 
javax.ejb.EJBException 
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119) 
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5017) 
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004) 
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198) 
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84) 
at $Proxy355.find(Unknown Source) 
at session.__EJB31_Generated__CategoryFacade__Intf____Bean__.find(Unknown Source) 
at controller.ControllerServlet.doGet(ControllerServlet.java:68) 

ligne 68 dans le code ControllerServlet est celui identifié ci-dessus. Mon expérience avec Java et NetBeans est suffisamment légère pour que je ne sois même pas sûr de commencer à déboguer cela. J'ai suivi le tutoriel de très près, donc ce ne devrait pas être quelque chose que j'ai manqué - mais des erreurs se produisent.

Je comprends qu'une solution pure et simple basée sur l'information contenue serait difficile. S'il y a d'autres informations requises, veuillez demander. A défaut, si quelqu'un a des suggestions sur la façon dont je peux enquêter plus en détail sur ce sujet, je serais très reconnaissant. Je pense toujours que les problèmes de fissuration sont la meilleure façon d'apprendre, mais c'est aussi très frustrant.

Mise à jour: J'ai parcouru le débogueur NetBeans. Il semble que le problème soit avec le code cast (Short.parseShort (categoryId)). Lorsque je remplace cela par un simple chiffre cela fonctionne. par exemple. ce code fonctionne // obtenir la catégorie sélectionnée selectedCategory = categoryFacade.find (1);

Est-ce que quelqu'un a des idées pour expliquer pourquoi la distribution échoue? categoryId est confirmé comme une chaîne avec une valeur de "1" dans le débogueur ...

+0

Vous voulez dire Netbeans 6.9.1? – Bobby

+0

Oui, je pensais que j'avais corrigé cela dans mon dernier post éditer. J'ai maintenant: D – JonRed

+0

Qu'est-ce que vous avez dans la méthode 'find()' de votre EJB? Cela pourrait être utile. –

Répondre

2

Bon, j'ai craqué ça. C'était de toute évidence ma faute ...

L'identité de la table aurait dû être configurée comme un raccourci, à la place je l'ai définie comme un entier. Par conséquent, en transposant la chaîne 'categoryId' et en la passant dans la méthode find, je transmettais le mauvais type de données.

Le remplacement de l'argument 'Short.parseShort (categoryId)' par un 'Integer.parseInt (categoryId)' a résolu le problème.

Pour ceux qui ont pris le temps de lire ceci; Je vous remercie.

+0

Content que vous ayez réussi à le résoudre. :) –

Questions connexes