Hi Stefan

Some initial comments in line....

On Wed, May 12, 2010 at 8:57 AM,  <s.schadwin...@stud.uni-heidelberg.de> wrote:
> Hi!
>
> I'm relatively new to Tuscany and the JEE world, so I have a few questions
> on to correctly provide a service in a production environment.
>
> What I'm generally want to do is to provide the output of certain
> computational simulations stored in a database to a php-based web frontend,
> the output of my service is basically a (rather sophisticated) function of
> what the php frontend does to the database. I made a small dummy service in
> java along the sample shopping cart service included with the examples and
> connected it to php by jsonrpc. So far, it works great and provides exactly
> what I had in mind.
>
> However, I'm wondering if I could improve performance by using database
> connection pooling and what happens when the service is invoked. As it looks
> to me, when the service is invoked, a new instance of my ..Impl class is
> created, a database connection is created and afterwards destroyed together
> with the ..Impl instance. Is that correct?

That sounds correct if the scope of your service is stateless, which
it will be by default.

> What I'd prefer is just one
> instance for the whole time and one thread per user that can read all my
> private variables that are initialized when the service is started and that
> all the database connections are recycled. I'm not really sure if this is
> possible with the Tuscany distribution (currently using Tuscany 1.5.1 with
> Jetty, the current eclipse version doesn't install the Tuscany 1.6 plugin)

Try adding @Scope("COMPOSITE") to your component implementation, for example,

@Scope("COMPOSITE")
class MyComponentImplementation implements MyServiceInterface {
 ...

}

This means that only one instance of the component is created. From
that instance you can do what you need at init/destroy time by marking
operations with @Init and @Destroy. All other operations will be
re-entrant so it's up to you to implement your data access strategy
taking this into account.

> or whether I need a JEE application server to do this (i.e. Geronimo).

You could of course use a container to do connection pooling etc. but
I've not tried it and so not sure how to exploit the various
connection factories and the container context. I'd have to have a
play.

>
> If I do, how can I configure the eclipse Tuscany plugin, so that it runs the
> Geronimo version instead of the non-geronmio version that comes when the
> plugin is installed?

We have host extensions to fire up Jetty and Tomcat automatically. We
don't have a host-geronimo. There are two ways you could run Tuscany
in Geronimo. Firstly, and most straighforwardly, you could package
Tuscany inside a WAR and then install that. Secondly we have a Tuscany
plugin for Geronimo in development but it's not done yet. There is
code in the Geronimo code base so you could play with it but I
wouldn't suggest you start there.

>
> What would be the correct way of to provide connection pooling? As I've read
> somewhere, both Tomcat and Jetty provide a way to do this, then there's
> apache commons DBCP, and the javax.sql DataSource. I guess, I would prefer
> the javax.sql DataSource as it appears to me to provide the cleanest
> approach, extensibility and allows to configure details about the database
> driver outside of the code by JNDI, but I read that looking up a JNDI
> context can be slow and should be cached (i.e. I'd require that there's just
> one instance with worker threads) and I have no idea on where to configure
> that database resource so that my java service finds it.

I'm hoping someone who knows about connection pooling will pitch in here.

>
> I hope these questions are not too much newbie, I'd be really happy if you
> could give me some hints on how to configure my enviroment and if you might
> have a few pointers in which way to go.

All good questions Stefan and if we can come to some conclusions we
should add it to the web page/blog as it seems like a common enough
scenario.

>
> Thanks a lot,
>
> Stefan
>
>
>
>

Simon

-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to