Nice explaination....This seems to be a pretty good start to a how-to or an
extension of the services section of the documentation, can you submit it?
Would you want to add more? Should I do it?

Matt

----- Original Message -----
From: "Henning P. Schmiedehausen" <[EMAIL PROTECTED]>
Newsgroups: hometree.jakarta.turbine.users
To: <[EMAIL PROTECTED]>
Sent: Tuesday, December 10, 2002 11:37 AM
Subject: Re: changing the default html tags


> ramadevi <[EMAIL PROTECTED]> writes:
>
> >Hi,
> >Is it possible to create a new service apart from the services  provided
> >by the turbine.
>
> Yes, sure. Simply extend TurbineBaseService. You must then add your
> service to the TurbineResources.properties like this:
>
> services.<xxx>.classname = <full class name of your service>
>
> and you're set.
>
> If you look at the examples of the simple services like
> db/TurbinePoolBrokerService or servlet/TurbineServletService you'll
> get on speed pretty fast.
>
> In a Nutshell:
>
> - You must not try to provide a C'tor with parameters, best is not to
>   provide any C'tor at all, because nothing should be done at
>   construction time (You'll get the default c'tor which is fine for us).
>
> - Your Service will be instantiated exactly once. So it must be
threadsafe,
>   must not use class global variables for session-dependend information.
>
> - You should provide an init() method which is called when Turbine starts
>   up and should initialized your service dependent code. There is lots
>   of confusion of how this init() method should look like, I personally
>   prefer the parameterless variant:
>
>    public void init() throws InitializationException
>    {
>    }
>
>    You must call setInit(true) if your service initializes correctly. Else
>    no user of your service can find it. Right after this, your service
might
>    be queried and used by other sessions, so you should not call setInit()
>    prematurely.
>
> - You might provide a shutdown() method which is called when Turbine shuts
>   down. You can clean up your internal data in this method. You should
call
>   setInit(false) as the last thing in shutdown().
>
> - It is good style, that if you build the FooService, to provide:
>
>   <yourpackage>.FooService.java  with an Interface definition of your
>                                  Service which extends
o.a.t.services.Service
>                                  It should contain a constant SERVICE_NAME
>                                  with the Turbine visible name of your
service.
>
>   <yourpackage>.TurbineFooService.java which extends the
TurbineBaseService,
>                                        implements FooService and provides
>                                        the actual code
>
>   <yourpackage>.TurbineFoo.java  which contains static facade methods for
>                                  your service along the following lines:
>
>   public abstract class TurbineFoo
>   {
>     protected static FooService getService()
>     {
>         return (FooService) TurbineServices
>             .getInstance().getService(FooService.SERVICE_NAME);
>     }
>
>     [...]
>
>     public static void fooMethod1()
>     {
>       getService().fooMethod1();
>     }
>
>     public static int fooMethod2(int bar)
>     {
>       return getService().fooMethod2(bar);
>     }
>
>     [...]
>   }
>
>   to give users of your service the ability to simply write
>
>   TurbineFoo.fooMethod1();
>
>   in their code and not to care which actual Implementation of FooService
>   is running.
>
> init() and shutdown() applies to Turbine 2.1/2.2 This might change
> with the lifecycle interfaces in a later release.
>
> Regards
> Henning
>
> --
> Dipl.-Inf. (Univ.) Henning P. Schmiedehausen       -- Geschaeftsfuehrer
> INTERMETA - Gesellschaft fuer Mehrwertdienste mbH     [EMAIL PROTECTED]
>
> Am Schwabachgrund 22  Fon.: 09131 / 50654-0   [EMAIL PROTECTED]
> D-91054 Buckenhof     Fax.: 09131 / 50654-20
>
> --
> 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