Sorry, here:

http://www.pastey.net/117046

On Jul 3, 6:21 pm, Mark Mandel <mark.man...@gmail.com> wrote:
> I tried accessing the link.. it's timing out.
>
> I will try it again later.
>
> Mark
>
> On Fri, Jul 3, 2009 at 7:59 PM, whostheJBoss 
> <dotfus...@changethings.org>wrote:
>
>
>
> > Ok Mark, I've made a detailed, clear and rich example for you. I
> > didn't want to lose formatting, so I posted it here:
>
> >http://www.oneclickpost.com/post/2OJ7dD0xtN/
>
> > This explains the exact behavior I am seeing and my configuration
> > attempts that are producing it.
>
> > If I made any typos, I apologize, you should be able to get the gist
> > of what I'm doing though.
>
> > I had gone to the trouble of writing a separate interceptor that would
> > use execute() from Transfer's transaction to execute the handler
> > method, but I saw the same results as I saw in the post I've just
> > linked to. I also used this interceptor to apply AOP advice, but
> > again, saw the same behavior that the post describes. Something about
> > advising handler methods or executing them within a transaction with
> > execute() is funky.
>
> > On Jul 2, 2:30 pm, Mark Mandel <mark.man...@gmail.com> wrote:
> > > The code for AOP transactions would be exactly the same for a ColdBox
> > > handler as it would be for any other CFC, it's just a CFC.
>
> > > Can you send me a reproducible test case, with the DB you are using?
>
> > > Mark
>
> > > On Fri, Jul 3, 2009 at 3:36 AM, whostheJBoss <dotfus...@changethings.org
> > >wrote:
>
> > > > Oh, and this behavior is on both CF8 and Railo. I have tested for 10
> > > > hours, worked with multiple people on this and I am certain this is
> > > > what is happening.
>
> > > > On Jul 2, 10:10 am, whostheJBoss <dotfus...@changethings.org> wrote:
> > > > > Ok, so I have worked with Micha to resolve this and it looks like
> > this
> > > > > issue is taken care of. I can now successfully advise my beans such
> > as
> > > > > service layers, etc.
>
> > > > > So, AOP now works on Railo with Transfer when doing this.
>
> > > > > My issue (which has been the issue all along) is still that I can't
> > > > > advise an entire handler method in ColdBox.
>
> > > > > My scenario is that I have multiple service layer calls inside my
> > > > > handler and I want the ENTIRE handler method wrapped in a transaction
> > > > > so in case any of the service layer calls fail they will all be
> > rolled
> > > > > back.
>
> > > > > I have applied the advice using this:
>
> > > > > <cfset instance.TransferTransaction.advise(this,"createUser", true)>
>
> > > > > In my onDIComplete method of the handler and I see the trace that
> > > > > advice has been weaved for createUser, but the transaction simply
> > > > > doesn't work. When I run multiple Transfer actions where one of them
> > > > > is set up to fail, the others that were called first are not rolled
> > > > > back, even though they are all wrapped in the advice since they are
> > > > > all in the handler method and the method has been advised. Like I
> > > > > said, I see the trace that the advice has been applied to the method,
> > > > > but for whatever reason it doesn't do anything.
>
> > > > > I have also tried using this:
>
> > > > > <cfset transaction.execute(this, "createUser", arguments)>
>
> > > > > Inside of a proxy method on my handler (doCreateUser). So, when I
> > call
> > > > > doCreateUser() it executes createUser fine, I see database inserts
> > and
> > > > > it works. However, if one of the inserts inside createUser() is set
> > up
> > > > > to fail (I call it with bad data from a form, string where it should
> > > > > be a number), the others are not rolled back even though the entire
> > > > > method was called using the execute method of the transaction.
>
> > > > > So, my issue is that I need to be able to advise an entire handler
> > > > > method in ColdBox with Transfer, but when I try this with multiple
> > > > > methods, it doesn't causes any errors, but it doesn't actually advise
> > > > > the method with a transaction.
>
> > > > > On Jul 2, 1:22 am, Mark Mandel <mark.man...@gmail.com> wrote:
>
> > > > > > aha, there you go! :)
>
> > > > > > Mark
>
> > > > > > On Thu, Jul 2, 2009 at 6:13 PM, whostheJBoss <
> > > > dotfus...@changethings.org>wrote:
>
> > > > > > > From Micha:
>
> > > > > > > "this was a failure (only in version 3.1.0.015 to 3.1.019) we
> > have
> > > > > > > already fixed, please update to newest release 3.1.0.020 on
> > > > > > > dev.railo.ch
> > > > > > > or wait for release coming today/tomorrow on www. "
>
> > > > > > > Go figure!
>
> > > > > > > On Jul 2, 12:53 am, whostheJBoss <dotfus...@changethings.org>
> > wrote:
> > > > > > > > I was just coming here to update this thread...
>
> > > > > > > > I posted this to Railo's group:
>
> > > >http://groups.google.com/group/railo/browse_thread/thread/a34c465edcd.
> > ..
>
> > > > > > > > It seems that Railo is failing to rollback, not Transfer.
>
> > > > > > > > On Jul 2, 12:38 am, Mark Mandel <mark.man...@gmail.com> wrote:
>
> > > > > > > > > Does Railo not rollback transactions when an error is thrown
> > from
> > > > the
> > > > > > > code?
>
> > > > > > > > > Mark
>
> > > > > > > > > On Thu, Jul 2, 2009 at 5:35 PM, whostheJBoss <
> > > > > > > dotfus...@changethings.org>wrote:
>
> > > > > > > > > > Ok, I am seeing the advice work properly now. I have been
> > > > testing
> > > > > > > > > > vigorously on both CF8 and Railo 3.1.017
>
> > > > > > > > > > Here is what I have discovered:
>
> > > > > > > > > > Transaction advise on Railo traces this:
>
> > > > > > > > > > Weaving Transaction advice on
> > > > model.users.userservice::saveusers()
>
> > > > > > > > > > So it does fire the AOPAdvisor and modifies the method.
>
> > > > > > > > > > I can run my saveusers() method over and over, no problems,
> > no
> > > > stack
> > > > > > > > > > overflow.
>
> > > > > > > > > > Now, in the middle of doing this I wanted to test if
> > > > transactions
> > > > > > > were
> > > > > > > > > > actually working (if the database would rollback my insert
> > upon
> > > > > > > > > > failure of something happening inside the advised method),
> > so I
> > > > did
> > > > > > > > > > the following:
>
> > > > > > > > > > I created two user objects which I pass into
> > > > userService.saveusers()
> > > > > > > > > > from my handler with:
>
> > > > > > > > > > getBean("userService").saveusers(user1,user2);
>
> > > > > > > > > > The method looks like this:
>
> > > > > > > > > >        <cffunction name="saveusers" access="public"
> > > > output="false"
> > > > > > > > > > returntype="void">
> > > > > > > > > >                <cfargument name="user1" type="any"
> > > > required="true" />
> > > > > > > > > >                <cfargument name="user2" type="any"
> > > > required="true" />
>
> > > > > > > > > >                <cfset
> > variables.transfer.save(arguments.user1)
> > > > />
> > > > > > > > > >                <cfset
> > variables.transfer.save(arguments.user2)
> > > > />
> > > > > > > > > >        </cffunction>
>
> > > > > > > > > > I run this once and see that both are inserted properly.
>
> > > > > > > > > > Now, I want the next transaction to fail for my test, but
> > only
> > > > after
> > > > > > > > > > user1 has been inserted, so I need it to fail on user2.
> > This
> > > > way,
> > > > > > > > > > since save(arguments.user1) will add a record to the
> > database
> > > > and is
> > > > > > > > > > inside the same advised transaction as
> > save(arguments.user2),
> > > > then
> > > > > > > > > > when user2 fails the insert of user1 should be rolled back
> > as
> > > > well
> > > > > > > > > > since they are in the same transaction and neither should
> > show
> > > > up in
> > > > > > > > > > the database.
>
> > > > > > > > > > So, what I did was have user1.setPassword("test"); and
> > > > > > > > > > user2.setPassword("testtest");
>
> > > > > > > > > > My database field for password is VARCHAR(8) so both are
> > valid
> > > > the
> > > > > > > > > > first time I try to insert. So, after I do the first insert
> > and
> > > > both
> > > > > > > > > > user1 and user2 work properly and are inserted, I then
> > modified
> > > > my
> > > > > > > > > > database to be VARCHAR(4) for password. So now the next
> > time I
> > > > call
> > > > > > > > > > saveusers() the save(arguments.user1) should work and save
> > > > > > > > > > (arguments.user2) should fail since its password field is
> > too
> > > > long.
>
> > > > > > > > > > Both saves are advised in userService.saveUser() inside the
> > > > save
> > > > > > > > > > transaction, so neither should show up when user2 fails.
>
> > > > > > > > > > So, when I do this it does fail and say that the password
> > field
> > > > for
> > > > > > > > > > user2 is too long, but the insert of user1 stays in the
> > > > database.
>
> > > > > > > > > > So, again, when both users are valid objects, they both get
> > > > inserted.
> > > > > > > > > > When one of the users contains data that is too long for
> > the
> > > > database
> > > > > > > > > > field (both after modifying the field or if I try to insert
> > > > with
> > > > > > > > > > incorrect data initially) then the first user is inserted
> > and
> > > > stays
> > > > > > > in
> > > > > > > > > > the database when it should be rolled back while the second
> > > > fails.
>
> > > > > > > > > > On ColdFusion 8 the transaction advise works and user1 is
> > > > rolled back
> > > > > > > > > > and doesn't show up in the database when I use the exact
> > same
> > > > code.
>
> > > > > > > > > > I see on Railo the trace that userService.saveusers() has
> > been
> > > > > > > > > > advised, but the transaction just doesn't roll back.
>
> > > > > > > > > > Any idea what the caveat with this on Railo is? This is the
> > > > only
> > > > > > > thing
> > > > > > > > > > I believe that isn't working on Railo.
>
> > > > > > > > > > On Jul 1, 6:52 pm, Mark Mandel <mark.man...@gmail.com>
> > wrote:
> > > > > > > > > > > On Thu, Jul 2, 2009 at 10:43 AM, whostheJBoss <
> > > > > > > > > > dotfus...@changethings.org>wrote:
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

You received this message because you are subscribed to the Google Groups 
"transfer-dev" group.
To post to this group, send email to transfer-dev@googlegroups.com
To unsubscribe from this group, send email to 
transfer-dev-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/transfer-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to