Hi Charles, if you can't find another solution, there is a way to enable the non-portable mode, in which you can call the BeanManager's methods even after shutdown: http://docs.jboss.org/weld/reference/2.1.0.Final/en-US/html/configure.html#d0e6172. However, it is not recommended, use it only as a last resort.
Regards Matus ----- Original Message ----- From: "Charles Moulliard" <[email protected]> To: "Jason Porter" <[email protected]> Cc: "Peter Muir" <[email protected]>, "Antoine Sabot-Durand" <[email protected]>, [email protected] Sent: Tuesday, November 19, 2013 8:35:22 AM Subject: Re: [weld-dev] Issue with weld 2.1.0.Final on OSGI Hi Jason, Many thanks for your help last Thursday at Devoxx. I have done Friday the modifications that we discussed together but I finally get another problem ( Weld-001333: BeanManager method getBeans is not available after shutdown ). As the code of camel-cdi is complex and must be re-factored, I will take the time this week or next week (with help of Antoine) to develop a new CDI extension Regards, Charles On 19/11/13 01:39, Jason Porter wrote: Any luck with this Charles? For others: We spent some time hacking and debugging this at Devoxx, but were not able to implement the solution before we had to part ways. ----- Original Message ----- From: "Jozef Hartinger" <[email protected]> To: "Charles Moulliard" <[email protected]> Cc: [email protected] , "Antoine Sabot-Durand" <[email protected]> , "Jason Porter" <[email protected]> , "Peter Muir" <[email protected]> Sent: Monday, November 11, 2013 1:01:04 AM Subject: Re: [weld-dev] Issue with weld 2.1.0.Final on OSGI Hi Charles, Weld uses Pax CDI provided BundleResourceLoader[1] to load classes in an OSGi bundle. It loads only those that are discovered by BeanScanner[2]. When you call getBeans() Weld does not load the parameter class anyhow since you already provided a loaded class. Weld will try to match the type you pass to getBeans() with the types of beans it had loaded. Jozef [1] https://github.com/ops4j/org.ops4j.pax.cdi/blob/master/pax-cdi-weld/src/main/java/org/ops4j/pax/cdi/weld/impl/bda/BundleResourceLoader.java [2] https://github.com/ops4j/org.ops4j.pax.cdi/blob/master/pax-cdi-spi/src/main/java/org/ops4j/pax/cdi/spi/scan/BeanScanner.java On 11/08/2013 07:11 PM, Charles Moulliard wrote: Hi, The following code which is working fine and returns a bean when we run Junit Test with DeltaSpike does not work when Weld 2.1.0.Final is deployed on Karaf (OSGI v4.3) with Pax-CDI. Apparently the bean is not retrieved when we call "beanManager.getBeans(" protected CamelContext getCamelContext(String context, BeanManager beanManager) { if (camelContextMap == null) { Set<Bean<?>> beans = beanManager.getBeans(CamelContextMap.class, new AnyLiteral()); // return null Bean<?> bean = beanManager.resolve(beans); // return null CreationalContext<?> creationalContext = beanManager.createCreationalContext(bean); camelContextMap = (CamelContextMap) beanManager.getReference(bean, bean.getBeanClass(), creationalContext); ObjectHelper.notNull(camelContextMap, "Could not resolve CamelContextMap"); } return camelContextMap.getCamelContext(context); } Question : How does WeldContainer loads the class when we use getBeans as I suspect that we have a problem with the classloader used ? Regards, Charles _______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev _______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev _______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev
