[JBuilder][WebLogic][EJB] HELP Problème pour tester mon entity bean

HELP Problème pour tester mon entity bean [JBuilder][WebLogic][EJB] - Java - Programmation

Marsh Posté le 06-04-2005 à 10:13:47    

Bonjour a tous,
 
Voici les softs que j'utilise, JBuilder 2005,Weblogic 8.1 et Oracle 9i
 
J'ai suivi le tutorial suivant --> http://bdn.borland.com/article/images/32416/22123.pdf
j'ai suivit toutes la section de la page 20 à 31 pour créer un entity bean avec JBuilder et Weblogic, tout ce passe super bien jusqu'au moment de tester l'application module que j'ai crée. Lorsque que j'entre le login de mon user afin de les lister comme dans l'exemple(p30 figure 29) voici l'erreur qu'il m'affiche sous Jbuilder toujours!

Code :
  1. Error 500--Internal Server Errorjavax.servlet.jsp.JspException: No getter method for property nDpmt of bean users
  2. at org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:968)
  3. at org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:286)
  4. at jsp_servlet._usersdelegateclient.__usersfinderresultslist._jspService(__usersfinderresultslist.java:321)
  5. at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
  6. at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
  7. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
  8. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
  9. at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)
  10. at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
  11. at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
  12. at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
  13. at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
  14. at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
  15. at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
  16. at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  17. at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
  18. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
  19. at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
  20. at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6718)
  21. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
  22. at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
  23. at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
  24. at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
  25. at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
  26. at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)


 
Je ne comprends pas d'ou vient cette erreur là. J'ai bien charger tous les drivers Oracle pour weblogic en lieu et place de ceux de JDataStore de l'exemple(J'ai testé le meme exo avec l'exemple JDataStore donné dans le tuto et là sa fct nikel!!, c quand je passe a Oracle que sa foire!)
 
Comme nom de GNDI (p23 figure 19) j'ai donné celui que j'ai trouvé dans le fichier weblogic-ejb-jar.xml cad "UsersSessionFacade", j'ai également crée un pool de connection JDBC a Oracle sous Weblogic, et un datasource lié a ce pool et dont le JNDI name est "UsersSessionFacade".
 
J'ai refait plusieurs fois les étapes de l'exo pour etre sur de ne pas avoir fait d'erreurs, mais tout ce passe bien, il arrive bien à déployer tout, mais le test de l'application module ne fonctionne plus lorsque je lui passe le login du user comme paramètre. Je ne comprends pas ou est ma faute. :pt1cable:  
 
J'ai laissé exactement les mêmes noms que dans le tutos pour les différents éléménts crées, sa sera ptet plus facile si vous savez m'aider, et plus compréhensible lorsque l'on discutera d'un module bien précis. :)  
 
Meric d'avance pour votre aide, en cas de besoin je peux vous fournir plus d'information sur la configuration actuelle. :jap:


Message édité par Devil6662 le 06-04-2005 à 10:14:49
Reply

Marsh Posté le 06-04-2005 à 10:13:47   

Reply

Marsh Posté le 06-04-2005 à 11:56:36    

apparemment dans usersfinderresultslist.jsp tu fais appel au tag <bean:write> en récupérant une propriété "nDpmt" qui n'existe pas dans un objet "users" qui est censé être dans la requête
regarde un peu de ce coté là ce qu'il se passe

Reply

Marsh Posté le 06-04-2005 à 12:16:05    

Je ne vois pas ce qui cloche, de plus c'est JBuilder qui a généré ces fichiers, j'ai cependant vérifié mais nDpmt existe bien dans les différents fichiers. :pt1cable:  Voici quelques fichiers dont je dispose, et dont tu m'a parlé, peut etre que l'erreur vient de là, mais moi je ne la voie pas.  :??:  
Pour moi le méthode getter nDpmt est bien là, et tout est bien crée partout.
Voici le code des fochiers:
Users.java

Code :
  1. package weblogicentproject;
  2. import javax.ejb.EJBLocalObject;
  3. import java.math.BigDecimal;
  4. public interface Users
  5.     extends EJBLocalObject {
  6.   public BigDecimal getLogin();
  7.   public void setNDpmt(BigDecimal nDpmt);
  8.   public BigDecimal getNDpmt();
  9.   public void setNProfile(BigDecimal nProfile);
  10.   public BigDecimal getNProfile();
  11.   public void setFirstName(String firstName);
  12.   public String getFirstName();
  13.   public void setLastName(String lastName);
  14.   public String getLastName();
  15. }


UsersBean.java

Code :
  1. package weblogicentproject;
  2. import javax.ejb.EntityBean;
  3. import javax.ejb.EntityContext;
  4. import java.math.BigDecimal;
  5. import javax.ejb.CreateException;
  6. import javax.ejb.RemoveException;
  7. public abstract class UsersBean implements EntityBean {
  8.   EntityContext entityContext;
  9.   public BigDecimal ejbCreate(BigDecimal login) throws CreateException {
  10.     setLogin(login);
  11.     return null;
  12.   }
  13.   public void ejbPostCreate(BigDecimal login) throws CreateException {
  14.   }
  15. //EJB remove here
  16.  
  17.   public abstract void setLogin(BigDecimal login);
  18.   public abstract BigDecimal getLogin();
  19.   public abstract void setNDpmt(BigDecimal nDpmt);
  20.   public abstract BigDecimal getNDpmt(); //My getter method
  21.   public abstract void setNProfile(BigDecimal nProfile);
  22.   public abstract BigDecimal getNProfile();
  23.   public abstract void setFirstName(String firstName);
  24.   public abstract String getFirstName();
  25.   public abstract void setLastName(String lastName);
  26.   public abstract String getLastName();
  27.   public void ejbLoad() {
  28.   }
  29.   public void ejbStore() {
  30.   }
  31.   public void ejbRemove() throws RemoveException {
  32.   }
  33.   public void ejbActivate() {
  34.   }
  35.   public void ejbPassivate() {
  36.   }
  37.   public void setEntityContext(EntityContext entityContext) {
  38.     this.entityContext = entityContext;
  39.   }
  40.   public void unsetEntityContext() {
  41.     this.entityContext = null;
  42.   }
  43. }


UsersDto.java

Code :
  1. package weblogicentproject;
  2. import java.io.Serializable;
  3. import java.math.BigDecimal;
  4. public class UsersDto implements Serializable {
  5.   private BigDecimal login;
  6.   private BigDecimal nDpmt;
  7.   private BigDecimal nProfile;
  8.   private String firstName;
  9.   private String lastName;
  10.   public BigDecimal getLogin() {
  11.     return login;
  12.   }
  13.   public void setLogin(BigDecimal login) {
  14.     this.login = login;
  15.   }
  16.   public BigDecimal getNDpmt() {
  17.     return nDpmt;
  18.   }
  19.   public void setNDpmt(BigDecimal nDpmt) {
  20.     this.nDpmt = nDpmt;
  21.   }
  22.   public BigDecimal getNProfile() {
  23.     return nProfile;
  24.   }
  25.   public void setNProfile(BigDecimal nProfile) {
  26.     this.nProfile = nProfile;
  27.   }
  28.   public String getFirstName() {
  29.     return firstName;
  30.   }
  31.   public void setFirstName(String firstName) {
  32.     this.firstName = firstName;
  33.   }
  34.   public String getLastName() {
  35.     return lastName;
  36.   }
  37.   public void setLastName(String lastName) {
  38.     this.lastName = lastName;
  39.   }
  40.   public boolean equals(Object obj) {
  41.     if (this == obj) {
  42.       return true;
  43.     }
  44.     if (! (obj instanceof UsersDto)) {
  45.       return false;
  46.     }
  47.     UsersDto that = (UsersDto) obj;
  48.     if (! (that.login == null ? this.login == null :
  49.            that.login.equals(this.login))) {
  50.       return false;
  51.     }
  52.     if (! (that.nDpmt == null ? this.nDpmt == null :
  53.            that.nDpmt.equals(this.nDpmt))) {
  54.       return false;
  55.     }
  56.     if (! (that.nProfile == null ? this.nProfile == null :
  57.            that.nProfile.equals(this.nProfile))) {
  58.       return false;
  59.     }
  60.     if (! (that.firstName == null ? this.firstName == null :
  61.            that.firstName.equals(this.firstName))) {
  62.       return false;
  63.     }
  64.     if (! (that.lastName == null ? this.lastName == null :
  65.            that.lastName.equals(this.lastName))) {
  66.       return false;
  67.     }
  68.     return true;
  69.   }
  70.   public int hashCode() {
  71.     int result = 17;
  72.     result = 37 * result + this.login.hashCode();
  73.     result = 37 * result + this.nDpmt.hashCode();
  74.     result = 37 * result + this.nProfile.hashCode();
  75.     result = 37 * result + this.firstName.hashCode();
  76.     result = 37 * result + this.lastName.hashCode();
  77.     return result;
  78.   }
  79.   public String toString() {
  80.     String returnString = "";
  81.     returnString += login;
  82.     returnString += ", " + nDpmt;
  83.     returnString += ", " + nProfile;
  84.     returnString += ", " + firstName;
  85.     returnString += ", " + lastName;
  86.     return returnString;
  87.   }
  88. }


usersFinderReslultsDetail.jsp

Code :
  1. <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
  2. <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
  3. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  4. <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
  5. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  6. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  7. <html:html>
  8. <head>
  9. <title>Detail record</title>
  10. </head>
  11. <body>
  12. <h1>Detail record</h1>
  13. <p>
  14. <table border="1">
  15. <tr>
  16. <td><b>login:</b></td><td><bean:write name="usersDtoActionForm" property="login"/></td>
  17. </tr>
  18. <tr>
  19. <td><b>nDpmt:</b></td><td><bean:write name="usersDtoActionForm" property="nDpmt"/></td>
  20. </tr>
  21. <tr>
  22. <td><b>nProfile:</b></td><td><bean:write name="usersDtoActionForm" property="nProfile"/></td>
  23. </tr>
  24. <tr>
  25. <td><b>firstName:</b></td><td><bean:write name="usersDtoActionForm" property="firstName"/></td>
  26. </tr>
  27. <tr>
  28. <td><b>lastName:</b></td><td><bean:write name="usersDtoActionForm" property="lastName"/></td>
  29. </tr>
  30. </table>
  31. </p>
  32. </body>
  33. </html:html>


usersFinderReslultsList.jsp

Code :
  1. <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
  2. <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
  3. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  4. <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
  5. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  6. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  7. <html:html>
  8. <head>
  9. <title>Results list for <bean:write name="finderMethodName"/></title>
  10. </head>
  11. <body>
  12. <h1>Results list for <bean:write name="finderMethodName"/></h1>
  13. <p>
  14. <table border="1">
  15. <tr>
  16. <td><b>login</b></td>
  17. <td><b>nDpmt</b></td>
  18. <td><b>nProfile</b></td>
  19. <td><b>firstName</b></td>
  20. <td><b>lastName</b></td>
  21. </tr>
  22. <logic:iterate id="users" name="usersDtoActionForm" property="___detailListCollection">
  23. <logic:present name="users">
  24. <html:form action="doUsersFinderDetailAction.do" method="POST">
  25. <tr>
  26. <td><bean:write name="users" property="login"/><html:hidden name="users" property="login"/></td>
  27. <td><bean:write name="users" property="nDpmt"/></td>
  28. <td><bean:write name="users" property="nProfile"/></td>
  29. <td><bean:write name="users" property="firstName"/></td>
  30. <td><bean:write name="users" property="lastName"/></td>
  31. <td><html:submit property="detail" value="Detail"/></td></tr>
  32. </html:form>
  33. </logic:present>
  34. </logic:iterate>
  35. </table>
  36. </p>
  37. </body>
  38. </html:html>


 
Voilà peut etre qu'avec mes fichiers cela va te mettre sur une piste car moi je ne vois pas trop ou est cette erreur, de plus c'est lui qui génère ces fichiers en suivants les étapes du titorial du lien du dessus, il est possible qu'il se soit trompé.
 
Merci a toi pour ta réponse, et pour ton aide futur. :hello:

Reply

Marsh Posté le 06-04-2005 à 14:19:58    

J'ajouterai ceci, je n'ai pas crée de CMP, ni de BMP entity bean pour mes autres tables, ici j'en ai crée un pour la table USERS, mais 2 colonnes de celle ci dépendent de 2 autres tables:
nDpmt dépend de DEPARTMENTS
nProfile dépend de PROFILES.
 
Voilà donc je sais pas si c'est pour sa qu'il me fait ce genre d'erreurs ou pas ! :??:  
Et je ne sais pas si je dois crée un autre BMP pour ces 2 tables DEPARTMENTS et PROFILES, peut etre qu'il n'arrive pas a aller chercher les données de ces tables car il ne les a pas loadé ou que sais je ! :pt1cable:  

Reply

Marsh Posté le 06-04-2005 à 17:10:02    

c'est quoi le type de l'objet "usersDtoActionForm" ?

Reply

Marsh Posté le 06-04-2005 à 17:21:22    

Voici mon fichier UsersDtoActionForm.java, l'objet est de type public.
 

Code :
  1. package weblogic.struts;
  2. import org.apache.struts.action.ActionForm;
  3. import java.math.BigDecimal;
  4. import java.util.Collection;
  5. import org.apache.struts.action.ActionErrors;
  6. import org.apache.struts.action.ActionMapping;
  7. import javax.servlet.http.HttpServletRequest;
  8. public class UsersDtoActionForm
  9.     extends ActionForm {
  10.   private BigDecimal login;
  11.   private BigDecimal nDpmt;
  12.   private BigDecimal nProfile;
  13.   private String firstName;
  14.   private String lastName;
  15.   private Collection ___detailListCollection;
  16.   public BigDecimal getLogin() {
  17.     return login;
  18.   }
  19.   public void setLogin(BigDecimal login) {
  20.     this.login = login;
  21.   }
  22.   public BigDecimal getNDpmt() {
  23.     return nDpmt;
  24.   }
  25.   public void setNDpmt(BigDecimal nDpmt) {
  26.     this.nDpmt = nDpmt;
  27.   }
  28.   public BigDecimal getNProfile() {
  29.     return nProfile;
  30.   }
  31.   public void setNProfile(BigDecimal nProfile) {
  32.     this.nProfile = nProfile;
  33.   }
  34.   public String getFirstName() {
  35.     return firstName;
  36.   }
  37.   public void setFirstName(String firstName) {
  38.     this.firstName = firstName;
  39.   }
  40.   public String getLastName() {
  41.     return lastName;
  42.   }
  43.   public void setLastName(String lastName) {
  44.     this.lastName = lastName;
  45.   }
  46.   public Collection get___detailListCollection() {
  47.     return ___detailListCollection;
  48.   }
  49.   public void set___detailListCollection(Collection ___detailListCollection) {
  50.     this.___detailListCollection = ___detailListCollection;
  51.   }
  52.   public ActionErrors validate(ActionMapping actionMapping,
  53.                                HttpServletRequest httpServletRequest) {
  54.     return null;
  55.   }
  56.   public void reset(ActionMapping actionMapping,
  57.                     HttpServletRequest httpServletRequest) {
  58.   }
  59. }


 
Peut etre que sa t'en dira plus, merci a toi,  ;)

Reply

Marsh Posté le 06-04-2005 à 17:30:30    

faudrait regarder à quel moment on fait appel à set___detailListCollection() pour voir quel type d'objet on y met dans la collection, parce que tous les objets ont bien le bon getter là, donc ca doit etre autre chose encore

Reply

Marsh Posté le 07-04-2005 à 10:17:37    

OK, j'ai pas trouvé grand chose a ce sujet.
 
Mais sinon voilà les quelques fichiers qui porraient etre a la base de sa.
 
UsersDtoAssembler.javaOù on déclare pour la 1er fois Collection.

Code :
  1. package weblogic;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.Collection;
  5. import java.util.List;
  6. public class UsersDtoAssembler {
  7.   public static UsersDto createDto(Users users) {
  8.     UsersDto usersDto = new UsersDto();
  9.     if (users != null) {
  10.       usersDto.setLogin(users.getLogin());
  11.       usersDto.setNDpmt(users.getNDpmt());
  12.       usersDto.setNProfile(users.getNProfile());
  13.       usersDto.setFirstName(users.getFirstName());
  14.       usersDto.setLastName(users.getLastName());
  15.     }
  16.     return usersDto;
  17.   }
  18.   public static UsersDto[] createDtos(Collection userss) {
  19.     List list = new ArrayList();
  20.     if (userss != null) {
  21.       Iterator iterator = userss.iterator();
  22.       while (iterator.hasNext()) {
  23.         list.add(createDto( (Users) iterator.next()));
  24.       }
  25.     }
  26.     UsersDto[] returnArray = new UsersDto[list.size()];
  27.     return (UsersDto[]) list.toArray(returnArray);
  28.   }
  29. }


usersFinderResultsDetail.jspOù on fait appel àUsersDtoActionFormpour la 1er fois.

Code :
  1. <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
  2. <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
  3. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  4. <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
  5. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  6. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  7. <html:html>
  8. <head>
  9. <title>Detail record</title>
  10. </head>
  11. <body>
  12. <h1>Detail record</h1>
  13. <p>
  14. <table border="1">
  15. <tr>
  16. <td><b>login:</b></td><td><bean:write name="usersDtoActionForm" property="login"/></td>
  17. </tr>
  18. <tr>
  19. <td><b>nDpmt:</b></td><td><bean:write name="usersDtoActionForm" property="nDpmt"/></td>
  20. </tr>
  21. <tr>
  22. <td><b>nProfile:</b></td><td><bean:write name="usersDtoActionForm" property="nProfile"/></td>
  23. </tr>
  24. <tr>
  25. <td><b>firstName:</b></td><td><bean:write name="usersDtoActionForm" property="firstName"/></td>
  26. </tr>
  27. <tr>
  28. <td><b>lastName:</b></td><td><bean:write name="usersDtoActionForm" property="lastName"/></td>
  29. </tr>
  30. </table>
  31. </p>
  32. </body>
  33. </html:html>


usersFinderResultsList.jspOù on fait appel à ___detailListCollection

Code :
  1. <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
  2. <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
  3. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
  4. <%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
  5. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
  6. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
  7. <html:html>
  8. <head>
  9. <title>Results list for <bean:write name="finderMethodName"/></title>
  10. </head>
  11. <body>
  12. <h1>Results list for <bean:write name="finderMethodName"/></h1>
  13. <p>
  14. <table border="1">
  15. <tr>
  16. <td><b>login</b></td>
  17. <td><b>nDpmt</b></td>
  18. <td><b>nProfile</b></td>
  19. <td><b>firstName</b></td>
  20. <td><b>lastName</b></td>
  21. </tr>
  22. <logic:iterate id="users" name="usersDtoActionForm" property="___detailListCollection">
  23. <logic:present name="users">
  24. <html:form action="doUsersFinderDetailAction.do" method="POST">
  25. <tr>
  26. <td><bean:write name="users" property="login"/><html:hidden name="users" property="login"/></td>
  27. <td><bean:write name="users" property="nDpmt"/></td>
  28. <td><bean:write name="users" property="nProfile"/></td>
  29. <td><bean:write name="users" property="firstName"/></td>
  30. <td><bean:write name="users" property="lastName"/></td>
  31. <td><html:submit property="detail" value="Detail"/></td></tr>
  32. </html:form>
  33. </logic:present>
  34. </logic:iterate>
  35. </table>
  36. </p>
  37. </body>
  38. </html:html>


 
Voilà peut etre que sa t'en dira plus, sinon je veux bien te donner plus de détails, mais ce sont les seuls fichiers importants que j'ai pu trouver !
 
Et je me demande quand meme comme je l'avais déjà dis au dessus, est ce que le fait que cette colonne nDpmt fait partie d'un autre table, est ce que cela ne pose pas de problème? de meme pour la colonne nProfile, elles font toutes deux références à une autre table. Dans users il y à un numéro qui identifie une chaine de caractères dans les tables DEPARTMENTS et PROFILES.
Mais bon, je me demande aussi, si il n'arrive pas a joindre ces tables il devrai au moins m'afficher le contenu de la ligne, avec les numéros correspondants avec les colonnes nDpmt et nProfile. Enfin il me semble, mais je m'embrouille à chercher une solution à ce truc qui me semble bon :pt1cable:  
 
Merci à toi pour ton aide :jap:


Message édité par Devil6662 le 07-04-2005 à 10:26:13
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed