generally there are no differences in the basic concepts between 
spring ioc and tapestry-ioc. the only difference in this case is that
spring already offers a ready to use integration layer for Web 
Services and spring ioc.... tapestry-ioc does not.... yet :)

i think choosing spring or tapestry-ioc is just a matter of taste. I do
use tapestry-ioc a lot because i develop tapestry 5 applications 
and sometimes i do not need spring. If i do i can use the tapestry-spring
integration to inject spring beans into my tapestry-ioc services...
especially useful when using email, web services, ... :)... but again
in this case spring has control over this services by providing own
servlets, filters, ... and they are initialized via spring. Another reason
i use tapestry-ioc are contributions (helps seperate your appilcation
in useful drop-in modules) and the xml free configuration.

i hope this helps.... maybe it helps looking closer at springs integration
with web services. 

g,
kris




"Michael Bernagou" <[EMAIL PROTECTED]> 
14.12.2007 11:35
Bitte antworten an
"Tapestry users" <users@tapestry.apache.org>


An
"Tapestry users" <users@tapestry.apache.org>
Kopie

Thema
Re: IoC global question






So I have to call the current Registry (or to manage it myself) and call 
the
myRegistry.getService(MyService.class);

Hum, I think it's not ioc anymore if I have to setup my containers (Axis2,
Hibernate) to call the tapestry-ioc or I have to create a sort of "middle
layer" between the layer and the tapestry-ioc, and then my classes have to
call this middleLayer... hum...

How do you do yourself? Webapp have usually more than just a MVC layer. 
Are
you using the tapestry-ioc only for the MVC layer?
Its seems to me strange for one class having to use @Inject Logger log; 
and
for another class Logger log = Logger.getLogger(
ApplicationDaoImpl.class.getName());

2 ways to get the logger in the same application for the same target log
file... Maybe tapestry-ioc should be extended to take care also to the 
other
layers.

Maybe I'm totally wrong ;o) so, how should it be coded to respect ioc
pattern between tapestr-ioc and other layers such as Axis2 and Hibernate3
(for T5 we know ;o) )

Thanks


2007/12/14, Michael Bernagou <[EMAIL PROTECTED]>:
>
> Ok I'm going to investigate about that Registry.
> So, what's the interrest to use tapestry-ioc instead of Spring ioc? If I
> need my ioc to provide all the services I need, I cannot use 
tapestry-ioc
> unless I need my other layers to call explicitely the ioc which is not
> recommended when you want independant layers working together.
>
> @Hugo, ok I'm going to reread again this part.
>
> 2007/12/14, Kristian Marinkovic <[EMAIL PROTECTED] >:
> >
> > hi michael,
> >
> > @Inject only works in Tapestry pages and components (and mixins).
> > By default Tapestry will use the field type as an id and lookup the
> > corresponding ioc service.
> >
> > I assume your Web Service Container was not started by the ioc
> > container so it runs outside its control. Therefore you have to first
> > obtain an ioc Registry first and then ask it explicitly for the 
service
> > you want to call. The builder methods are not meant to be called
> > except by the container :)
> >
> > g,
> > kris
> >
> >
> >
> >
> > "Michael Bernagou" < [EMAIL PROTECTED]>
> > 14.12.2007 10:51
> > Bitte antworten an
> > "Tapestry users" <users@tapestry.apache.org >
> >
> >
> > An
> > "Tapestry users" <users@tapestry.apache.org>
> > Kopie
> >
> > Thema
> > IoC global question
> >
> >
> >
> >
> >
> >
> > 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
> >
> >
>
>
> --
> Michael Bernagou
> Java Developper




-- 
Michael Bernagou
Java Developper

Reply via email to