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]>

Reply via email to