Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for 
change notification.

The following page has been changed by damirbijuklic:
http://wiki.apache.org/tapestry/Tapestry5SpringSessionScopedObjects

New page:
Spring can have some objects "session scoped", similarly to application state 
objects in tapestry.

These objects can be shared by both spring servlets and tapestry application.


You can create session scoped object by adding the following annotations to 
implementation class (or via xml config):
{{{
@Component
@Scope("session")
public class SessionDataImpl implements SessionData {
  ...
}
}}}

When you use such object in another class by
{{{
@Autowired
private SessionData sessionData;
}}}
spring ensures that each session get's it's own object instance for sessionData.


If you try to use such objects from tapestry with following annotations
{{{
@Inject
@Service("sessionDataImpl")
}}}
it will fail because spring needs to create proxy objects for accessing session 
scoped objects from global objects.


This can be resolved by adding string RequestContextFilter before 
TapestryStringFilter for tapestry urls, like this:
{{{
  <filter>
    <filter-name>app</filter-name>
    
<filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
  </filter>
  <filter>
    <filter-name>requestContextFilter</filter-name>
    
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>requestContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>app</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
}}}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to