Thank you James.

I am still not sure where to put saveToken(request) and
isTokenValid(request, true) is not taking. It is not accepting as valid
method. 

I am hoping that you will give me some clue for that.

Thank you,
Nilan

-----Original Message-----
From: James Mitchell [mailto:[EMAIL PROTECTED]] 
Sent: Wednesday, July 10, 2002 12:58 AM
To: Struts Users Mailing List
Subject: RE: Problem with form submission,

I saved the below msg because this is a very common question:

> -----Original Message-----
> From: Craig R. McClanahan [mailto:[EMAIL PROTECTED]]
> Sent: Friday, June 28, 2002 3:10 PM
> To: Struts Users Mailing List
> Cc: Ivan D. Sager
> Subject: Re: mapping
>

<snip/>

>
> To deal with resubmits, the most important issue is to avoid updating the
> database twice when the user accidentally resubmits the same form.  Struts
> has a feature called "transaction control tokens" that help you avoid
> this, which is very simply used as follows:
>
> * In the Action that sets up your input form (i.e. before you forward
>   to it), execute the following
>
>     saveToken(request)
>
>   to save a special value in the user's session that will be used in
>   the next step.
>
> * In the Action that receives the form and updates the database, add
>   the following logic before you do the update:
>
>     if (isTokenValid(request, true)) {
>       ... this is a resubmit, so go display an error ...
>     }
>
>   The "true" parameter causes the token to be removed from the session
>   so that it doesn't interfere with subsequent form submits.
>
> This way, the submit will work the first time, but fail on any accidental
> or on-purpose resubmit, and you avoid adding the information to the
> database twice.  It also prevents the user from navigating directly to the
> "myDB.do" URL without going through your normal setup actions -- because
> the transaction token would not have been placed in the session, so the
> isTokenValid() test would fail.
>
> Craig
>
>



James Mitchell
Software Engineer\Struts Evangelist
Struts-Atlanta, the "Open Minded Developer Network"
http://www.open-tools.org/struts-atlanta




> -----Original Message-----
> From: Nilan Shakya [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, July 09, 2002 6:59 PM
> To: 'Struts Users Mailing List'
> Subject: Problem with form submission
>
>
> Hi All!
>
> I am having a problem while submitting a form. My form submission
> sometimes
> takes delay because it has to do lots of validation before updating the
> information in database. While the form is on the process of submission of
> data if I click the same submit button once again it is
> submitting the data
> once again. This means that, now my output listing of items from db shows
> repeated data set submitted (same data set submitted twice). I want to
> prevent the form be submitted once it is on the process of submission of
> data (disable the submission of form if it is already on the way to submit
> something).
>
> Does anyone have any idea to solve my problem?
>
> Your help will be greatly appreciated.
>
> Nilan
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, July 09, 2002 11:39 AM
> To: Struts Users Mailing List
> Subject: Re: Off-Topic: JMS Design Question...
>
>
>
> To begin with, I'd recommend using a web service instead of  just
> JMS. It's
> more reusable, has the ability for a variety of clients to access it and
> comes with fewer networking headaches. Plus they are especially good for
> sending XML. Given the fact that you are simply sending messages and
> getting responses, this may be better.
>
> But I've also built JMS apps as well. JMS is extremely cool and
> has a whole
> bunch of functionality that might be useful.  In fact, this is
> how Weblogic
> implements message-oriented web services (see - "Message-Style
> Web Services
> and JMS" at
> http://edocs.bea.com/wls/docs61/webServices/develop.html#1031913 ).
>
> Using JMS within your container with SOAP as the transport protocol as
> outlined in the weblogic links above would be a great solution. It gives
> you persistence within your container and theirs, while exposing
> the app as
> a web service.
>
> I believe this simplifies your solution:
>
>  - Your web app either:
>       1.          - Puts the transaction into a JMS queue (topic or
> point-to-point) on your machine
>             - Another process on your machine gets  the message and then
> makes a message-based web service call to their app server
>             - Their app server (which is exposed as a web
> service) gets the
> message, processes it and places the result on an outoging queue
>             - Your web sevice call then retrieves the results.
>       or, 2.      - Your web app simply acts as a client to their web
> service and sends the message/retrieves the results by itself.
>             - In this case you may be able to use the simpler, RPC-style
> web service.
>             - In this case you also lose the ability to easily persist the
> transaction for sending later it their service is unavailable.
>
>
> Let's assume you choose option #1 above -  to answer your questions:
>
> 1)  If Client's App Server is down, then our MDB should keep resending
> till the message is sent successfully.  How can I do this in JMS?
>
>  - roll-back your read of your internal JMS queue. The message will be
> there when you retry at some later time. The normal transaction management
> stuff in your app server should handle all this.
>
>
> 2)  If our JMS Server is down (shouldn't happen, but let's say it does)
> what should the Web App do?  Would "Durable Subscriptions" help in this
> case?
>
>  - Log the information you captured in a database and/or via an e-mail
> message to someone who cares and intervene manually (uless you want to
> write some fail-safe backup delivery - but then how do you provide back-up
> in case the back-up fails?). "Durable Subscriptions" would allow
> you to not
> lose any messages already on the queue, but wouldn't help you add new
> transactions if they came along while JMS was down.
>
> Since this is off-topid. feel free to respond to me directly if
> you want to
> follow up.
>
> Kevin
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Hello,
>
> This is kind of off-topic, so I apologize in advance.  We do have some
> J2EE gurus on this mailing list so I decided to ask it here.  (Is there
> any other *active* mailing list where I can post JMS related questions?)
>
> Anyway, I need some help to develop a JMS based solution. Here's what we
> are trying to accomplish;
>
> We need to send XML messages (as well as other types of messages) back &
> forth between two Application Servers. In other words, a Web Application
> created by us will send a message to the application server of our
> client and vice versa.
>
> This is what I was thinking of doing;
>
> 1) When it's time to send a message on our side, we will write it to a
> Topic in our App Server.
> 2) A MDB on our side will retrieve the message and send it to the Topic
> of our client.
>
> The same logic will apply for incoming messages;
> 1) Client will write a message to our Topic.
> 2) A MDB on our side will then pick up this message and process it.
>
> If this sounds okay, then I am wondering how I can handle Exception
> conditions.  For example;
>
> 1)  If Client's App Server is down, then our MDB should keep resending
> till the message is sent successfully.  How can I do this in JMS?
> 2)  If our JMS Server is down (shouldn't happen, but let's say it does)
> what should the Web App do?  Would "Durable Subscriptions" help in this
> case?
>
> I would greatly appreciate any input in this matter. Thanks (a lot) for
> your time.
>
> - Ajay
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>



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

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

Reply via email to