I have been working on the CDI extension points of MyFaces Core 2.2.x, specially the part related to @ViewScoped and @FlowScoped annotations.
The solution proposed and committed on the latest snapshot works with weld and openwebbeans. But on the way, I have found a problem when I tried to deploy a demo application in Tomee 1.5.2
MyFaces jars has internally some beans that needs to be registered in CDI:
- org.apache.myfaces.flow.cdi.FlowBuilderFactoryBean (deals with @FlowBuilderParameter and @FlowDefinition)
- org.apache.myfaces.flow.cdi.FlowScopeBeanHolder (session scope bean that store flow scope)
- org.apache.myfaces.cdi.view.ViewScopeBeanHolder (session scope bean that store view scope)
And in the classes implementing Extension you can find some code like this to register the beans:
@Observes final BeforeBeanDiscovery event, BeanManager beanManager)
It works well as long as owb jars are located in WEB-INF/lib folder, but in Tomee, MyFaces and OWB jars are located in <tomee folder>/lib . In theory the code should work but it doesn't.
The effect is the application fails because these beans are not registered on CDI environment.
Suggestions are welcome.