To get the ball rolling, I've hand picked a couple of the more important
issues from my list. We can discuss these in more depth during the conf
call, however I would like people to start thinking about them now.
1. Obtaining instances to a Web Beans component from outside of the
component framework. There are a number of places that we need to do
this. I got around it in SeamLoginModule by extending the
CallbackHandler to support callbacks for Identity, Authenticator, etc.
We unfortunately don't have such an easy workaround in other places -
here's just a few examples:
* DroolsHandler (which is a jBPM handler) needs to access the
Expressions and WorkingMemory components.
* SeamGlobalResolver (which resolves Drools global variables) needs to
get an instance of Manager to perform lookups.
* EntitySecurityListener and HibernateSecurityInterceptor both require
access to security components.
* DateConverter needs to access the TimeZone and Locale components
One possible solution to this issue is to have a thread local Manager
available for the lifecycle of a single request, which can be accessed
by non-component classes.
2. Module granularity / dependencies. I'm going to use security as an
example for this issue, however there are other modules which are
similarly affected. Within the security module, there are certain
features (such as the action components, RememberMe, etc) that depend on
the faces module. My preference is to not have any dependencies on
faces and that the security module remains view-layer independent.
One possible way to solve this issue is to introduce a bridging module,
in this example it would be seam-faces-security which contains the
functionality that you would require if you were using Seam Security in
a JSF environment. The only downside to this is that it may lead to jar
bloat (which may not really be an issue). The upside is that it keeps
everything nice and modular, and helps to simplify the dependency tree.