Hi Michael,

When doing hibernate transactions with web services, one way to do it is to
have the transaction boundary inside a method that the web service calls.
Spring does that automagically if you set it up right - but it certainly
isn't mandatory to use Spring to do hibernate transactions in a web
services.

What you describe by your servlet filter seems to be what spring does in its
Open Session In View pattern, so on the UI layer you could use the data
after the session would normally terminate. In this case you probably just
need a method that you call in a web service that opens and closes the
session - managed by yourself or spring - since the data would presumably be
in an OMElement or the chosen databinding, and not using attached hibernate
objects.

HTH,
Robert

On 5/7/07, [EMAIL PROTECTED] <
[EMAIL PROTECTED]> wrote:

Thanks, that's helpful. I'll look into Spring.

I will be adding operations that do inserts and updates soon.

Regards,
Michael

> -----Original Message-----
> From: Glen Mazza [mailto:[EMAIL PROTECTED]
> Sent: Thursday, May 03, 2007 8:53 PM
> To: axis-user@ws.apache.org
> Subject: Re: Appropriate place for transaction code?
>
>
> Reading the third sentence of your email, you said the service is just
> *retrieving* data from the database (i.e. SQL SELECT), is
> that correct?
> If so, commits would not be a concern for you--you may be able to keep
> your service in application scope[1] and just initialize an instance
> variable to hold the session factory.
>
> Otherwise, I don't know if you're using Spring but the Axis2 Spring
> guide[2] may give you some ideas until someone else can get
> you a better
> answer.
>
> [1] http://www.developer.com/java/web/article.php/10935_3620661_2
> [2] http://ws.apache.org/axis2/1_2/spring.html
>
> Glen
>
>
> Am Donnerstag, den 03.05.2007, 16:26 -0400 schrieb
> [EMAIL PROTECTED]:
> > Hi,
> >
> > I'm new to Axis. I'm using Axis2 1.1.1.
> >
> > I'm creating a service that retrieves data from a database.
> I'm using Hibernate. For those of you not familiar with it,
> the basic pattern of usage is that you create something
> called a SessionFactory once when the application starts, and
> then for each request/response cycle you create a Session.
> When the response finishes, you commit the session.
> >
> > In regular web applications I create the session factory in
> the ApplicationContext. Then I make a servlet filter that
> creates the session and starts a transaction on the way in,
> and then commits the transaction and closes the session on
> the way out.
> >
> > I'm trying to figure out how to do this in Axis. I created
> a module called hibernateTransactionModule. I've got two
> handlers, one for the way in and one for the way out, each
> attached to a new phase. Right now they're just saying 'hello
> world' and it works, they do execute when I expect them to.
> >
> > So I've got three classes:
> >
> > HibernateTransactionModule implements
> org.apache.axis2.modules.Module
> > HibernateTransactionHandlerBegin extends AbstractHandler
> implements Handler
> > HibernateTransactionHandlerEnd extends AbstractHandler
> implements Handler
> >
> > My intuition tells me that
> HibernateTransactionModule.init() would be the appropriate
> place to create the hibernate session factory,
> HibernateTransactionHandlerBegin.invoke() could create a
> session for a request and put it into the messageContext, and
> HibernateTransactionHandlerEnd.invoke() could commit the
> transaction and close the session.
> >
> > But I can't see a place where I can store the session
> factory where it can be accessible to the handlers.
> >
> > One possibility would be to use a static field in
> HibernateTransactionHandlerBegin but that would be an ugly
> hack. Any suggestions?
> >
> > Thanks
> > Michael Davis
> > www.damaru.com
> >
> >
> ---------------------------------------------------------------------
> > 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