I don't think ThreadHandler represents a java.lang.Thread handler.
I think it more or less is a business object to facilitate persistance.
I think the use of the word "Thread" here is more representative of a
forum discussion thread.

I could be wrong though.

robert


> -----Original Message-----
> From: Yee, Richard K,,DMDCWEST [mailto:[EMAIL PROTECTED]
> Sent: Thursday, January 08, 2004 12:00 PM
> To: 'Struts Users Mailing List'
> Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
> (Used BeanUtils to Convert DynaValidatorForm)
>
>
> Caroline,
> May I ask why you are performing your database updates through a separate
> thread? It seems to be complicating your code. Creating lots of
> threads from
> within your web application is not a good practice if you want your app to
> scale well. Also, what happens if the update doesn't succeed? You have no
> way of notifying the user.
>
> The code:
> <snip>
>    ThreadBean threadBean = new ThreadBean();
>
>    String receiver = threadBean.getReceiver();
>    String sender = threadBean.getSender();
> </snip>
>
> is your problem unless your ThreadBean constructor can populate itself
> correctly with the desired values.
> If you must use threads, then you should be able to create a
> ThreadHandler,
> call a setter method on it and set you ThreadBean instance variable, and
> then call the run method on the ThreadHandler to start the thread.
>
> Regards,
>
> Richard
>
> -----Original Message-----
> From: Caroline Jen [mailto:[EMAIL PROTECTED]
> Sent: Thursday, January 08, 2004 8:48 AM
> To: Struts Users Mailing List
> Subject: RE: All The Bean Properties Are Null in the Business
> Tier!!! (Used
> BeanUtils to Convert DynaValidatorForm)
>
>
> Thank you for your comment, which is very helpful.
>
> Instead of extends ThreadBean, I now import the
> ThreadBean into my ThreadHandler class (see the code
> below). I am still getting all null or zero values
> from the bean.
>
> What is the proper way to do it?  I simply want to
> insert the value of all the properties into the
> database.  Most of the fields in my database require
> NOT NULL.
>
> code:
> ==================================================
> import org.apache.artimus.message.ThreadBean;
>
> class ThreadHandler
> {
>    ThreadBean threadBean = new ThreadBean();
>
>    String receiver = threadBean.getReceiver();
>    String sender = threadBean.getSender();
>    String threadTopic = threadBean.getPostTopic();
>    String threadBody = threadBean.getPostBody();
>    Timestamp threadCreationDate = threadBean.getThreadCreationDate();
>    int threadViewCount =
> threadBean.getThreadViewCount();
>    int threadReplyCount =
> threadBean.getThreadReplyCount();
>
>    MessageDAO md = new MySQLMessageDAO();
>    public int insertThread( ThreadBean threadBean )
>                         throws MessageDAOSysException,
>
>                                ObjectNotFoundException
>
>    {
>       System.out.println( "The sender is " + sender +
> "." );
>       System.out.println( "The subject is " +
> threadTopic + "." );
>       System.out.println( "The creation date is " + threadCreationDate );
>       System.out.println( "The number of replies are "
> + threadReplyCount );
>
>       md.createThread( receiver, sender, threadTopic,
>                        threadBody, threadCreationDate,
>
>                        threadViewCount,
>                        threadReplyCount );
>
>       int threadID = 0;
>       .....
>       .....
>       return threadID;
>    }
> }
>
>
> --- Robert Taylor <[EMAIL PROTECTED]> wrote:
> > Your code seems a bit confusing based upon what you
> > want to
> > achieve.
> >
> > If indeed you want ThreadHandler to inherit from
> > ThreadBean,
> > you should be able to do something like this:
> >
> > DynaActionForm postForm = ( DynaActionForm )form; ThreadHander = new
> > ThreadHandler(); BeanUtils.copyProperties( threadHandler, postForm );
> >
> > threadHandler.insertThread();
> >
> >
> > The reason you are getting null and zero values in ThreadHandler
> > is that you are populating a new instance of
> > ThreadBean  here:
> >
> > > > > DynaActionForm postForm = ( DynaActionForm
> > )form;
> > > > > ThreadBean threadBean = new ThreadBean();
> > > > > BeanUtils.copyProperties( threadBean, postForm
> > );
> >
> > ... and then you get a new instance of ThreadHandler
> > here:
> >
> > > > > ThreadHandler thandler = new ThreadHandler();
> >
> > At this point, ThreadHandler knows nothing of your
> > populated
> > instance of ThreadBean. Instead it is getting values
> > from
> > its own "empty" ThreadBean parent here:
> >
> > > class ThreadHandler extends ThreadBean
> > > {
> > >    String receiver = getReceiver();
> > >    String sender = getSender();
> > >    String threadTopic = getPostTopic();
> > >    String threadBody = getPostBody();
> > >    Timestamp threadCreationDate =
> > > getThreadCreationDate();
> > >    int threadViewCount = getThreadViewCount();
> > >    int threadReplyCount = getThreadReplyCount();
> > >
> > >    .....
> > >    .....
> > > }
> >
> >
> > ...unless you do something like the following in
> > ThreadHandler.insertThread():
> >
> > public int insertThread(ThreadBean bean) throws
> > SomeException {
> >
> >       this.receiver = bean.getReceiver();
> >       this.sender = bean.getSender();
> >       ....
> >
> >       // insert code here
> >
> >
> >
> > }
> >
> > which from a design perspective, I'm not sure why
> > you would want to do it
> > this way.
> >
> >
> > hth,
> >
> > robert
> >
> >
> > > -----Original Message-----
> > > From: Caroline Jen [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, January 07, 2004 10:27 PM
> > > To: Struts Users Mailing List
> > > Subject: RE: All The Bean Properties Are Null in
> > the Business Tier!!!
> > > (Used BeanUtils to Convert DynaValidatorForm)
> > >
> > >
> > > I have narrowed down the problem.  Something went
> > > wrong in my business tier class
> > (ThreadHandler.java).
> > > All the properties in the JavaBean are populated
> > > properly (I have checked).  The way I coded in the ThreadHandler
> > > class failed to retrieve the value
> > of
> > > all the properties in the JavaBean
> > (ThreadBean.java).
> > > All the values turned out to be null or 0.  Now,
> > what
> > > is wrong with the code?
> > >
> > > class ThreadHandler extends ThreadBean
> > > {
> > >    String receiver = getReceiver();
> > >    String sender = getSender();
> > >    String threadTopic = getPostTopic();
> > >    String threadBody = getPostBody();
> > >    Timestamp threadCreationDate =
> > > getThreadCreationDate();
> > >    int threadViewCount = getThreadViewCount();
> > >    int threadReplyCount = getThreadReplyCount();
> > >
> > >    .....
> > >    .....
> > > }
> > >
> > > To answer your question:
> > >
> > > 1. Have you checked to make sure that the fields
> > you
> > > expect actually exist in the form before calling
> > > BeanUtils.copyProperties()?
> > >
> > > Yes, I have printed out the contents of the JSP
> > text
> > > fields in my action class, which is a servlet.
> > For
> > > example: System.out.println( "the sender is " + postForm.get(
> > > "sender" ) );
> > >
> > > 2. If so, have you checked to see if the data was
> > > copied properly just after
> > BeanUtils.copyProperties()?
> > >
> > > Yes, I have also printed out the value of the bean properties.  For
> > > example: System.out.println( "the sender is " +
> > > threadBean.getSender() );
> > >
> > > 3. BeanUtils.copyProperties() uses reflection to
> > copy
> > > properties.  Are you using proper JavaBeans naming convention?
> > >
> > > Yes, I used a pair of get and set methods for each properties in the
> > > JavaBean (ThreadBean.java).  And
> > in
> > > my action class, I could print out the value of
> > those
> > > properties.
> > >
> > > --- Robert Taylor <[EMAIL PROTECTED]> wrote:
> > > > Have you checked to make sure that the fields
> > you
> > > > expect
> > > > actually exist in the form before calling BeanUtils.populate()?
> > > >
> > > > If so, have you checked to see if the data was
> > > > copied properly
> > > > just after BeanUtils.populate()?
> > > >
> > > > BeanUtils.populate() uses reflection to copy
> > > > properties.
> > > > Are you usingproper JavaBeans naming convention?
> > > >
> > > > Try and isolate exactly where the data is
> > getting
> > > > "lost".
> > > >
> > > > I use BeanUtils.populate() all the time with DynaXXXXForms and
> > > > have no problems. Usually when I do, I find that
> > my
> > > > data member
> > > > names don't correspond.
> > > >
> > > > robert
> > > >
> > > > > -----Original Message-----
> > > > > From: Caroline Jen
> > [mailto:[EMAIL PROTECTED]
> > > > > Sent: Wednesday, January 07, 2004 1:42 PM
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: All The Bean Properties Are Null in
> > the
> > > > Business Tier!!! (Used
> > > > > BeanUtils to Convert DynaValidatorForm)
> > > > >
> > > > >
> > > > > Hi, my program compiled OKay.  When I ran the application,
> > > > > somehow, the properties of my DynaValidatorForm are not passed
> > > > > from the
> > action
> > > > class
> > > > > to the business tier and then to the data
> > access
> > > > tier.
> > > > >  Please help me taking a look at what went
> > wrong.
> > > >
> > > > >
> >
> === message truncated ===
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
> http://hotjobs.sweepstakes.yahoo.com/signingbonus
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to