In fact it works well with Tapestry 5.1.0.5. I just missed to activate
correctly the Compatibilty Mode. I believed it was via AppModule using
configuration.add(SpringConstants.USE_EXTERNAL_SPRING_CONTEXT, "true"); but
it must be in the web.xml :

        <context-param>
                <param-name>tapestry.use-external-spring-context</param-name>
                <param-value>true</param-value>
        </context-param>

Then the Spring beans are correctly registered within Spring IOC using the
Bean Id.

Nicolas.


On Wed, 23 Jun 2010 09:06:21 +0200, Nicolas Bouillon <nico...@bouil.org>
wrote:
> Hi,
> 
> I'm facing the same issue, ie. I want to inject a Spring Bean an there
> is more than one Spring Bean that implement the declared interface. In
> my Spring Bean in such case, I use the Spring Bean ID to specify which
> one I want.
> 
> I understand it is not possible yet with Tapestry 5, but it is maybe
> possible to easily implement the feature. I would appreciate any
> suggestion how to start searching in the source code.
> 
> Best regards.
> Nicolas.
> 
> Le jeudi 06 mai 2010 à 13:37 -0400, Alex Kotchnev a écrit :
>> Captain Cid,
>>    the Tapestry spring integration cannot handle injecting a bean when
>>    there
>> is more than one bean of the given type defined in Spring (as the error
>> message says). Your option there is to inject the factory bean into
your
>> T5
>> page, and then use that to retrieve the instance you need. T5 doesn't
>> support injecting spring beans by name.
>> 
>>    Regarding the service IDs : I don't think services in spring are
>>    defined
>> as "Service IDs" in Tapestry , hence the error message. I think
somewhere
>> between 5.0 and 5.1 spring beans stopped being true "T5 services"
(which
>> has
>> a special meaning of its own). You can still inject spring beans
though.
>> 
>>  Regards,
>> 
>> Alex Kotchnev
>> 
>> On Thu, May 6, 2010 at 11:24 AM, Captain Cid
>> <captain_...@indiatimes.com>wrote:
>> 
>> >
>> > Can anyone please look into this
>> >
>> > Thanks
>> >
>> >
>> > Captain Cid wrote:
>> > >
>> > > I even tried
>> > >
>> > > @Inject
>> > > @Service("process")
>> > > private Process process;
>> > >
>> > > Caused by: java.lang.RuntimeException: Service id 'Process' is not
>> > defined
>> > > by any module.
>> > >
>> > > I am only using this configuration file to load beans...so i guess
>> > > there
>> > > should not be a confusion or second possibility
>> > >
>> > >
>> > > Michael Prescott-4 wrote:
>> > >>
>> > >> Re: the first error, it looks like Spring is trying to inject your
>> > >> class
>> > >> 'by
>> > >> type', but isn't sure which of two Process beans to use.  I only
>> > >> see one
>> > >> from the snippet you've attached, is it possible that there's
>> > >> another
>> > >> one?
>> > >>
>> > >> As far as the second error goes, the ids are probably case
>> > >> sensitive -
>> > >> 'Process' vs. 'process'.
>> > >>
>> > >> On Wed, May 5, 2010 at 2:52 PM, Captain Cid
>> > >> <captain_...@indiatimes.com>wrote:
>> > >>
>> > >>>
>> > >>> I have a spring configuration file config.xml:
>> > >>>
>> > >>> <?xml version="1.0" encoding="UTF-8"?>
>> > >>> <beans xmlns="http://www.springframework.org/schema/beans";
>> > >>>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> > >>>       
xsi:schemaLocation="http://www.springframework.org/schema/beans
>> > >>>
>> > >>>
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd";>
>> > >>>
>> > >>>        <bean id="Configuration" class="A">
>> > >>>                <constructor-arg value="config.xml" />
>> > >>>        </bean>
>> > >>>
>> > >>>        <bean id="process" factory-bean="Configuration"
>> > >>> factory-method="build" />
>> > >>>        <bean id="rep" factory-bean="process"
>> > >>>        factory-method="getRep" />
>> > >>>        <bean id="exec" factory-bean="process"
>> > >>>        factory-method="getExec"
>> > >>> />
>> > >>>
>> > >>> </beans>
>> > >>>
>> > >>> And web.xml
>> > >>> -------------
>> > >>>
>> > >>> <?xml version="1.0" encoding="UTF-8"?>
>> > >>> <web-app>
>> > >>>  <display-name>Example</display-name>
>> > >>>
>> > >>>    <context-param>
>> > >>>        <param-name>tapestry.app-package</param-name>
>> > >>>        <param-value>com.ui</param-value>
>> > >>>    </context-param>
>> > >>>
>> > >>>    <filter>
>> > >>>        <filter-name>app</filter-name>
>> > >>>
>> > >>>
>> > >>>
>> >
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>> > >>>    </filter>
>> > >>>
>> > >>>    <filter-mapping>
>> > >>>        <filter-name>app</filter-name>
>> > >>>        <url-pattern>/*</url-pattern>
>> > >>>    </filter-mapping>
>> > >>>
>> > >>>    <context-param>
>> > >>>                <description>Init Spring
>> > ApplicationContext</description>
>> > >>>                <param-name>contextConfigLocation</param-name>
>> > >>>                <param-value>/WEB-INF/config.xml</param-value>
>> > >>>                <listener>
>> > >>>
>> > >>>
>> > >>>
>> >
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>> > >>>            </listener>
>> > >>>        </context-param>
>> > >>> </web-app>
>> > >>>
>> > >>>
>> > >>> ---------
>> > >>> in my class
>> > >>> i am using
>> > >>>
>> > >>> @Inject
>> > >>> private Process process;
>> > >>>
>> > >>> I get exception
>> > >>>
>> > >>> Caused by: java.lang.IllegalArgumentException: Spring context
>> > >>> contains
>> > 2
>> > >>> beans a
>> > >>> ssignable to type org.Process: Configuration, process.
>> > >>>        at
>> > >>>
org.apache.tapestry5.internal.spring.SpringModuleDef$4$1.provide(Spri
>> > >>> ngModuleDef.java:258)
>> > >>>        at
>> > >>>
org.apache.tapestry5.internal.spring.SpringModuleDef$4$2$1.invoke(Spr
>> > >>> ingModuleDef.java:274)
>> > >>>        at
>> > >>>
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(Operati
>> > >>> onTrackerImpl.java:68)
>> > >>>
>> > >>> And if I use
>> > >>> -----------
>> > >>> @Inject
>> > >>> @Service("Process")
>> > >>> private Process process;
>> > >>>
>> > >>> Caused by: java.lang.RuntimeException: Service id 'Process' is
not
>> > >>> defined
>> > >>>  by any module.  Defined services: ActionRenderResponseGenerator,
>> > >>> AjaxComp..
>> > >>>
>> > >>> --
>> > >>> View this message in context:
>> > >>>
>> >
http://old.nabble.com/Problem-with-spring-integration-tp28464988p28464988.html
>> > >>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>> > >>>
>> > >>>
>> > >>>
---------------------------------------------------------------------
>> > >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> > >>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> > >>>
>> > >>>
>> > >>
>> > >>
>> > >
>> > >
>> >
>> > --
>> > View this message in context:
>> >
http://old.nabble.com/Problem-with-spring-integration-tp28464988p28475340.html
>> > Sent from the Tapestry - User mailing list archive at Nabble.com.
>> >
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> > For additional commands, e-mail: users-h...@tapestry.apache.org
>> >
>> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to