<div dir="ltr">Hello,<div><br></div><div>I need to create beans from a portable extension.</div><div>It is not clear to me if every instance of a bean must have an associated instance of CreationalContext or rather one CreationalContext must be used for all instances:</div><div><br></div><div>// Store a CreationalContext per bean instance</div><div>BeanManager manager = ...</div><div>Bean<T> bean = ...</div><div><div><div><div>Context ctx = manager.getContext(bean.getScope());</div></div></div><div><br></div><div>Map<T, CreationalContext<T>> dependents = ...</div></div><div><br></div><div>public T createBean() {<br></div><div> CreationalContext<T> cctx = manager.createCreationalContext(bean);<br></div><div> T instance = ctx.get(bean, cctx);<br></div><div> dependents.put(instance, cctx);</div><div> return instance;</div><div>}</div><div><br></div><div>public void destroyBean(T instance) {</div><div><div> dependents.computeIfPresent(instance, (inst, cctx) -> {</div><div> bean.destroy(inst, cctx);</div><div> return null;</div><div> });</div></div><div>}</div><div><br></div><div>// CDI tracks dependents for me</div><div>BeanManager manager = ...<br></div><div><div>Bean<T> bean = ...</div><div><div>Context ctx = manager.getContext(bean.getScope());<br></div><div>CreationalContext cctx = manager.createCreationalContext(bean);<br></div></div></div><div><br></div><div><div>public T createBean() {<br></div><div> T instance = ctx.get(bean, cctx);</div><div> return instance;<br></div><div>}</div></div><div><br></div><div><div>public void destroyBean(T instance) {</div><div></div></div><div> bean.destroy(instance, cctx);</div><div>}</div><div><br></div><div>Best Regards,</div><div>Todor</div></div>