{"record":{"id":"35db72447e55d298","repo":"flowable/flowable-engine","slug":"cdi-beanmanager-cannot-find-an-instance-of-request-35db72","errorCode":null,"errorMessage":"CDI BeanManager cannot find an instance of requested type '${name}'","messagePattern":"CDI BeanManager cannot find an instance of requested type '(.+?)'","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cdi/src/main/java/org/flowable/cdi/impl/util/ProgrammaticBeanLookup.java","lineNumber":46,"sourceCode":"public class ProgrammaticBeanLookup {\r\n\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <T> T lookup(Class<T> clazz, BeanManager bm) {\r\n        Iterator<Bean<?>> iter = bm.getBeans(clazz).iterator();\r\n        if (!iter.hasNext()) {\r\n            throw new IllegalStateException(\"CDI BeanManager cannot find an instance of requested type \" + clazz.getName());\r\n        }\r\n        Bean<T> bean = (Bean<T>) iter.next();\r\n        CreationalContext<T> ctx = bm.createCreationalContext(bean);\r\n        T dao = (T) bm.getReference(bean, clazz, ctx);\r\n        return dao;\r\n    }\r\n\r\n    @SuppressWarnings({ \"unchecked\", \"rawtypes\" })\r\n    public static Object lookup(String name, BeanManager bm) {\r\n        Set<Bean<?>> beans = bm.getBeans(name);\r\n        if (beans.isEmpty()) {\r\n            throw new IllegalStateException(\"CDI BeanManager cannot find an instance of requested type '\" + name + \"'\");\r\n        }\r\n        Bean bean = bm.resolve(beans);\r\n        CreationalContext ctx = bm.createCreationalContext(bean);\r\n        // select one beantype randomly. A bean has a non-empty set of\r\n        // beantypes.\r\n        Type type = (Type) bean.getTypes().iterator().next();\r\n        return bm.getReference(bean, type, ctx);\r\n    }\r\n\r\n    public static <T> T lookup(Class<T> clazz) {\r\n        BeanManager bm = BeanManagerLookup.getBeanManager();\r\n        return lookup(clazz, bm);\r\n    }\r\n\r\n    public static Object lookup(String name) {\r\n        BeanManager bm = BeanManagerLookup.getBeanManager();\r\n        return lookup(name, bm);\r\n    }\r","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cdi/src/main/java/org/flowable/cdi/impl/util/ProgrammaticBeanLookup.java#L28-L64","documentation":"ProgrammaticBeanLookup.lookup(String name, BeanManager) throws IllegalStateException when bm.getBeans(name) returns an empty set — no CDI bean is registered under that EL-style name. The string-based lookup resolves beans by bean name, and the requested name matches nothing in the container.","triggerScenarios":"Calling ProgrammaticBeanLookup.lookup(\"someBeanName\", beanManager) where the name doesn't match any @Named bean or CDI-registered bean name (typos, missing @Named annotation, bean archive not scanned).","commonSituations":"Renaming a @Named bean without updating lookup strings; bean archive not discovered (missing beans.xml); lookup string casing mismatch; bean removed in a version upgrade of flowable-cdi.","solutions":["Verify the bean's @Named value (or CDI name) and correct the lookup string to match exactly.","Add @Named(\"name\") (or the expected qualifier/name) to the target bean so getBeans(name) finds it.","Ensure the bean's package is in a discovered bean archive (beans.xml / bean-discovery-mode).","Prefer the type-based lookup(Class, bm) variant when a unique type exists, avoiding name string drift."],"exampleFix":"// before\nObject svc = ProgrammaticBeanLookup.lookup(\"taskService\", bm); // no bean named taskService\n// after\n@Named(\"taskService\")\npublic class TaskServiceProvider { ... }\nObject svc = ProgrammaticBeanLookup.lookup(\"taskService\", bm);","handlingStrategy":"validation","validationCode":"if (bm.getBeans(\"myBeanName\").isEmpty()) {\n    throw new IllegalStateException(\"No @Named bean 'myBeanName' registered\");\n}\nObject o = ProgrammaticBeanLookup.lookup(\"myBeanName\", bm);","typeGuard":"boolean namedBeanExists(String name, BeanManager bm) {\n    return !bm.getBeans(name).isEmpty();\n}","tryCatchPattern":"try {\n    o = ProgrammaticBeanLookup.lookup(\"myBeanName\", bm);\n} catch (IllegalStateException e) {\n    o = fallbackInstance; // application-provided default\n}","preventionTips":["Annotate beans with @Named and match the lookup string exactly (case-sensitive).","Prefer type-based lookup(Class, bm) to avoid name-string drift.","Keep lookup names in constants next to the bean definition to avoid rename mismatch.","Ensure the bean's archive is included in CDI bean discovery."],"tags":["flowable","cdi","bean-lookup","named-bean"],"backgroundTag":"resource-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}