Hi,

I have a sort of general question about tapestry-ioc. In fact, I would like
it to manage all the services of my webapp. In theory it should be the case,
shouldn't be?

So to provides services to my MVC, no problem the syntax @Inject MyService
_myService; work perfectly. But, to provide services the same way for my Dao
it's different. The same syntax doesn't provide any instance.
I used the tapestry-hibernate and declare my dao as services :

  import org.hibernate.Session;

  public static UserDao buildUserDao(@InjectService("Session") Session
session) {
      return new UserDaoImpl(session);
  }

  public static UserService buildUserService(@InjectService("UserDao")
UserDao dao) {
    return new UserServiceImpl(dao);
  }

So my implementation can work. But to use the service, all the callers have
to know a session object!
Ok, if my caller is a web service, and this web service want to call the
UserService, @Inject UserService _userService; DOES NOT work and
_userService is null! So I have to call explicitely the builder of my
service FROM the web service... If I do that, I bypass the IoC purpose
because I link it directly :

UserService us = AppModule.buildUserService( ... and then I have a problem!
buildUserService need a UserDao, but my web service doesn't care about
knowing any kind of dao!

So, I should be able to use @Inject MyService _myService; anywhere in my
project and the tapestry-ioc should be able to give instance to all the
class...

Did I (probably) missed something?

-- 
Michael Bernagou
Java Developper

Reply via email to