You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Andrea Chiumenti <ki...@gmail.com> on 2009/05/15 15:37:41 UTC
injecting t5 services into spring beans
Hello, is it possible to inject T5 bound services into Spring beans
I've followed tapestry-spring instructions, and spring beans are
created, but I can't inject my bound services into a spring bean
neither via @Inect, nor via @Autowired.
How can I do ? is it possible ?
Cheers,
kiuma
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: injecting t5 services into spring beans
Posted by gshavit <gs...@medio.com>.
I banged my head against this for a while, and finally I figured it out: the
injection won't happen unless the property is "autowired", in the Spring
sense. Now, this should happen if you set "autowire='byType'" on the <bean>
tag, but for some reason that hasn't worked for me.
What did work is putting
@org.springframework.beans.factory.annotation.Autowired on the property
itself. When I did that, the relevant code in the TapestryFactoryBean that
resolves dependencies was invoked, and my services were created (as proxies,
of course) and injected properly.
I would love to know, BTW, why "autowire='byType'" didn't work. Anybody?
-- Gidon.
Andrea Chiumenti wrote:
>
> I'm trying to integrate T5 with jax-ws-commons
> (https://jax-ws-commons.dev.java.net/spring/).
>
> my web.xml is
>
> <web-app>
> <display-name>server Tapestry 5 Application</display-name>
> <context-param>
> <!-- The only significant configuration for Tapestry 5, this
> informs Tapestry
> of where to look for pages, components and mixins. -->
> <param-name>tapestry.app-package</param-name>
> <param-value>it.wingstech.gam3.server</param-value>
> </context-param>
>
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>/WEB-INF/applicationContext.xml</param-value>
> </context-param>
>
> <!--context-param>
> <param-name>tapestry.use-external-spring-context</param-name>
> <param-value>true</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>
>
> <!-- these are for JAX-WS -->
> <servlet>
> <servlet-name>echoService</servlet-name>
>
> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
> </servlet>
> <servlet-mapping>
> <servlet-name>echoService</servlet-name>
> <url-pattern>/ws/echoWS</url-pattern>
> </servlet-mapping>
> </web-app>
>
> then into
> AppModule#bind
> I call
> binder.bind(EchoService.class);
>
> springApplication context is:
> ....
> <wss:binding url="/ws/echoWS">
> <wss:service><!-- nested bean is of course fine -->
> <ws:service bean="#echoServiceWrapper">
> <ws:handlers>
> <ref bean="wsHandler" />
> </ws:handlers>
> </ws:service>
> </wss:service>
> </wss:binding>
>
> <bean id="echoServiceWrapper"
> class="it.wingstech.gam3.server.soap.EchoServiceWrapper">
>
> </bean>
>
> <bean id="wsHandler" class="it.wingstech.gam3.server.soap.WsHandler" />
> ....
>
> finally EchoServiceWrapper.java is
>
> package it.wingstech.gam3.server.soap;
>
> import it.wingstech.gam3.server.services.EchoService;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.Style;
> import org.apache.tapestry5.ioc.annotations.Inject;
>
> /**
> * Canonical stock-quote web service.
> * @author Kohsuke Kawaguchi
> */
> @WebService(serviceName = "echoWS")
> //@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL,parameterStyle =
> ParameterStyle.WRAPPED)
> @SOAPBinding(style = Style.DOCUMENT, parameterStyle =
> SOAPBinding.ParameterStyle.BARE)
> public class EchoServiceWrapper
> {
>
> @Inject
> private EchoService echoService;
>
> public String echo(String value)
> {
> return echoService.echo(value);
> }
> }
>
>
> -------------------------------------------------------------------------------------------------
>
> debugging I see that echoService is null
>
> so how can I do ? (in tapestry 5.1.0.4)
>
> kiuma
>
>
>
>
> On Fri, May 15, 2009 at 3:49 PM, Andrea Chiumenti <ki...@gmail.com>
> wrote:
>> T 5.1.0.4
>>
>> On Fri, May 15, 2009 at 3:45 PM, Geoffrey Wiseman
>> <ge...@gmail.com> wrote:
>>> On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com>
>>> wrote:
>>>
>>>> Hello, is it possible to inject T5 bound services into Spring beans
>>>>
>>>
>>> I believe this is possible in 5.1.X but not 5.0.X -- what version are
>>> you
>>> using?
>>>
>>> - Geoffrey
>>> --
>>> Geoffrey Wiseman
>>> http://www.geoffreywiseman.ca/
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
>
--
View this message in context: http://www.nabble.com/injecting-t5-services-into-spring-beans-tp23560068p25654867.html
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: injecting t5 services into spring beans
Posted by Otho <ta...@googlemail.com>.
oops, sorry. Saw just now that it is commented out. My bad.
2009/5/16 Otho <ta...@googlemail.com>
> You use the 5.0 legacy mode. It is not possible to inject services into
> beans there.
>
> Remove the following entry or set it to false to enable service injection:
>
> <!--context-param>
> <param-name>tapestry.use-external-spring-context</param-name>
> <param-value>true</param-value>
> </context-param-->
>
>
>
>
> 2009/5/15 Andrea Chiumenti <ki...@gmail.com>
>
> I'm trying to integrate T5 with jax-ws-commons
>> (https://jax-ws-commons.dev.java.net/spring/).
>>
>> my web.xml is
>>
>> <web-app>
>> <display-name>server Tapestry 5 Application</display-name>
>> <context-param>
>> <!-- The only significant configuration for Tapestry 5, this
>> informs Tapestry
>> of where to look for pages, components and mixins. -->
>> <param-name>tapestry.app-package</param-name>
>> <param-value>it.wingstech.gam3.server</param-value>
>> </context-param>
>>
>> <context-param>
>> <param-name>contextConfigLocation</param-name>
>> <param-value>/WEB-INF/applicationContext.xml</param-value>
>> </context-param>
>>
>> <!--context-param>
>> <param-name>tapestry.use-external-spring-context</param-name>
>> <param-value>true</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>
>>
>> <!-- these are for JAX-WS -->
>> <servlet>
>> <servlet-name>echoService</servlet-name>
>>
>> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
>> </servlet>
>> <servlet-mapping>
>> <servlet-name>echoService</servlet-name>
>> <url-pattern>/ws/echoWS</url-pattern>
>> </servlet-mapping>
>> </web-app>
>>
>> then into
>> AppModule#bind
>> I call
>> binder.bind(EchoService.class);
>>
>> springApplication context is:
>> ....
>> <wss:binding url="/ws/echoWS">
>> <wss:service><!-- nested bean is of course fine -->
>> <ws:service bean="#echoServiceWrapper">
>> <ws:handlers>
>> <ref bean="wsHandler" />
>> </ws:handlers>
>> </ws:service>
>> </wss:service>
>> </wss:binding>
>>
>> <bean id="echoServiceWrapper"
>> class="it.wingstech.gam3.server.soap.EchoServiceWrapper">
>>
>> </bean>
>>
>> <bean id="wsHandler" class="it.wingstech.gam3.server.soap.WsHandler" />
>> ....
>>
>> finally EchoServiceWrapper.java is
>>
>> package it.wingstech.gam3.server.soap;
>>
>> import it.wingstech.gam3.server.services.EchoService;
>> import javax.jws.WebService;
>> import javax.jws.soap.SOAPBinding;
>> import javax.jws.soap.SOAPBinding.Style;
>> import org.apache.tapestry5.ioc.annotations.Inject;
>>
>> /**
>> * Canonical stock-quote web service.
>> * @author Kohsuke Kawaguchi
>> */
>> @WebService(serviceName = "echoWS")
>> //@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL,parameterStyle =
>> ParameterStyle.WRAPPED)
>> @SOAPBinding(style = Style.DOCUMENT, parameterStyle =
>> SOAPBinding.ParameterStyle.BARE)
>> public class EchoServiceWrapper
>> {
>>
>> @Inject
>> private EchoService echoService;
>>
>> public String echo(String value)
>> {
>> return echoService.echo(value);
>> }
>> }
>>
>>
>>
>> -------------------------------------------------------------------------------------------------
>>
>> debugging I see that echoService is null
>>
>> so how can I do ? (in tapestry 5.1.0.4)
>>
>> kiuma
>>
>>
>>
>>
>> On Fri, May 15, 2009 at 3:49 PM, Andrea Chiumenti <ki...@gmail.com>
>> wrote:
>> > T 5.1.0.4
>> >
>> > On Fri, May 15, 2009 at 3:45 PM, Geoffrey Wiseman
>> > <ge...@gmail.com> wrote:
>> >> On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com>
>> wrote:
>> >>
>> >>> Hello, is it possible to inject T5 bound services into Spring beans
>> >>>
>> >>
>> >> I believe this is possible in 5.1.X but not 5.0.X -- what version are
>> you
>> >> using?
>> >>
>> >> - Geoffrey
>> >> --
>> >> Geoffrey Wiseman
>> >> http://www.geoffreywiseman.ca/
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
Re: injecting t5 services into spring beans
Posted by Otho <ta...@googlemail.com>.
You use the 5.0 legacy mode. It is not possible to inject services into
beans there.
Remove the following entry or set it to false to enable service injection:
<!--context-param>
<param-name>tapestry.use-external-spring-context</param-name>
<param-value>true</param-value>
</context-param-->
2009/5/15 Andrea Chiumenti <ki...@gmail.com>
> I'm trying to integrate T5 with jax-ws-commons
> (https://jax-ws-commons.dev.java.net/spring/).
>
> my web.xml is
>
> <web-app>
> <display-name>server Tapestry 5 Application</display-name>
> <context-param>
> <!-- The only significant configuration for Tapestry 5, this
> informs Tapestry
> of where to look for pages, components and mixins. -->
> <param-name>tapestry.app-package</param-name>
> <param-value>it.wingstech.gam3.server</param-value>
> </context-param>
>
> <context-param>
> <param-name>contextConfigLocation</param-name>
> <param-value>/WEB-INF/applicationContext.xml</param-value>
> </context-param>
>
> <!--context-param>
> <param-name>tapestry.use-external-spring-context</param-name>
> <param-value>true</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>
>
> <!-- these are for JAX-WS -->
> <servlet>
> <servlet-name>echoService</servlet-name>
>
> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
> </servlet>
> <servlet-mapping>
> <servlet-name>echoService</servlet-name>
> <url-pattern>/ws/echoWS</url-pattern>
> </servlet-mapping>
> </web-app>
>
> then into
> AppModule#bind
> I call
> binder.bind(EchoService.class);
>
> springApplication context is:
> ....
> <wss:binding url="/ws/echoWS">
> <wss:service><!-- nested bean is of course fine -->
> <ws:service bean="#echoServiceWrapper">
> <ws:handlers>
> <ref bean="wsHandler" />
> </ws:handlers>
> </ws:service>
> </wss:service>
> </wss:binding>
>
> <bean id="echoServiceWrapper"
> class="it.wingstech.gam3.server.soap.EchoServiceWrapper">
>
> </bean>
>
> <bean id="wsHandler" class="it.wingstech.gam3.server.soap.WsHandler" />
> ....
>
> finally EchoServiceWrapper.java is
>
> package it.wingstech.gam3.server.soap;
>
> import it.wingstech.gam3.server.services.EchoService;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.Style;
> import org.apache.tapestry5.ioc.annotations.Inject;
>
> /**
> * Canonical stock-quote web service.
> * @author Kohsuke Kawaguchi
> */
> @WebService(serviceName = "echoWS")
> //@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL,parameterStyle =
> ParameterStyle.WRAPPED)
> @SOAPBinding(style = Style.DOCUMENT, parameterStyle =
> SOAPBinding.ParameterStyle.BARE)
> public class EchoServiceWrapper
> {
>
> @Inject
> private EchoService echoService;
>
> public String echo(String value)
> {
> return echoService.echo(value);
> }
> }
>
>
>
> -------------------------------------------------------------------------------------------------
>
> debugging I see that echoService is null
>
> so how can I do ? (in tapestry 5.1.0.4)
>
> kiuma
>
>
>
>
> On Fri, May 15, 2009 at 3:49 PM, Andrea Chiumenti <ki...@gmail.com>
> wrote:
> > T 5.1.0.4
> >
> > On Fri, May 15, 2009 at 3:45 PM, Geoffrey Wiseman
> > <ge...@gmail.com> wrote:
> >> On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com>
> wrote:
> >>
> >>> Hello, is it possible to inject T5 bound services into Spring beans
> >>>
> >>
> >> I believe this is possible in 5.1.X but not 5.0.X -- what version are
> you
> >> using?
> >>
> >> - Geoffrey
> >> --
> >> Geoffrey Wiseman
> >> http://www.geoffreywiseman.ca/
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
Re: injecting t5 services into spring beans
Posted by Andrea Chiumenti <ki...@gmail.com>.
I'm trying to integrate T5 with jax-ws-commons
(https://jax-ws-commons.dev.java.net/spring/).
my web.xml is
<web-app>
<display-name>server Tapestry 5 Application</display-name>
<context-param>
<!-- The only significant configuration for Tapestry 5, this
informs Tapestry
of where to look for pages, components and mixins. -->
<param-name>tapestry.app-package</param-name>
<param-value>it.wingstech.gam3.server</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<!--context-param>
<param-name>tapestry.use-external-spring-context</param-name>
<param-value>true</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>
<!-- these are for JAX-WS -->
<servlet>
<servlet-name>echoService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>echoService</servlet-name>
<url-pattern>/ws/echoWS</url-pattern>
</servlet-mapping>
</web-app>
then into
AppModule#bind
I call
binder.bind(EchoService.class);
springApplication context is:
....
<wss:binding url="/ws/echoWS">
<wss:service><!-- nested bean is of course fine -->
<ws:service bean="#echoServiceWrapper">
<ws:handlers>
<ref bean="wsHandler" />
</ws:handlers>
</ws:service>
</wss:service>
</wss:binding>
<bean id="echoServiceWrapper"
class="it.wingstech.gam3.server.soap.EchoServiceWrapper">
</bean>
<bean id="wsHandler" class="it.wingstech.gam3.server.soap.WsHandler" />
....
finally EchoServiceWrapper.java is
package it.wingstech.gam3.server.soap;
import it.wingstech.gam3.server.services.EchoService;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import org.apache.tapestry5.ioc.annotations.Inject;
/**
* Canonical stock-quote web service.
* @author Kohsuke Kawaguchi
*/
@WebService(serviceName = "echoWS")
//@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL,parameterStyle =
ParameterStyle.WRAPPED)
@SOAPBinding(style = Style.DOCUMENT, parameterStyle =
SOAPBinding.ParameterStyle.BARE)
public class EchoServiceWrapper
{
@Inject
private EchoService echoService;
public String echo(String value)
{
return echoService.echo(value);
}
}
-------------------------------------------------------------------------------------------------
debugging I see that echoService is null
so how can I do ? (in tapestry 5.1.0.4)
kiuma
On Fri, May 15, 2009 at 3:49 PM, Andrea Chiumenti <ki...@gmail.com> wrote:
> T 5.1.0.4
>
> On Fri, May 15, 2009 at 3:45 PM, Geoffrey Wiseman
> <ge...@gmail.com> wrote:
>> On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com> wrote:
>>
>>> Hello, is it possible to inject T5 bound services into Spring beans
>>>
>>
>> I believe this is possible in 5.1.X but not 5.0.X -- what version are you
>> using?
>>
>> - Geoffrey
>> --
>> Geoffrey Wiseman
>> http://www.geoffreywiseman.ca/
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: injecting t5 services into spring beans
Posted by Andrea Chiumenti <ki...@gmail.com>.
T 5.1.0.4
On Fri, May 15, 2009 at 3:45 PM, Geoffrey Wiseman
<ge...@gmail.com> wrote:
> On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com> wrote:
>
>> Hello, is it possible to inject T5 bound services into Spring beans
>>
>
> I believe this is possible in 5.1.X but not 5.0.X -- what version are you
> using?
>
> - Geoffrey
> --
> Geoffrey Wiseman
> http://www.geoffreywiseman.ca/
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: injecting t5 services into spring beans
Posted by Geoffrey Wiseman <ge...@gmail.com>.
On Fri, May 15, 2009 at 9:37 AM, Andrea Chiumenti <ki...@gmail.com> wrote:
> Hello, is it possible to inject T5 bound services into Spring beans
>
I believe this is possible in 5.1.X but not 5.0.X -- what version are you
using?
- Geoffrey
--
Geoffrey Wiseman
http://www.geoffreywiseman.ca/