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