[jboss-jira] [JBoss JIRA] (WFLY-10029) bean-discovery-mode="annotated" is not working like described in the spec
Ralph Soika (JIRA)
issues at jboss.org
Thu Mar 15 05:07:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13546282#comment-13546282 ]
Ralph Soika edited comment on WFLY-10029 at 3/15/18 5:06 AM:
-------------------------------------------------------------
Yes, that question was probably inevitable ;-)
In one of my Service EJBs I use the following code to find a CDI Bean by name:
{code:java}
@Stateless
@LocalBean
public class WorkflowService {
....
@Inject
@Any
private Instance<Plugin> plugins;
private Plugin findPluginByName(String pluginClassName) {
if (pluginClassName == null || pluginClassName.isEmpty())
return null;
if (plugins == null || !plugins.iterator().hasNext()) {
logger.finest("......no CDI plugins injected");
return null;
}
// iterate over all injected plugins....
for (Plugin plugin : this.plugins) {
if (plugin.getClass().getName().equals(pluginClassName)) {
logger.finest("......CDI plugin '" + pluginClassName + "' successful injected");
return plugin;
}
}
return null;
}
....
{code}
You can see the full code on Github: https://github.com/imixs/imixs-workflow/blob/master/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/WorkflowService.java
was (Author: rsoika):
Yes, that question was probably inevitable ;-)
In one of my Service EJBs I use the following code to find a CDI Bean by name:
{code:java}
@Inject
@Any
private Instance<Plugin> plugins;
private Plugin findPluginByName(String pluginClassName) {
if (pluginClassName == null || pluginClassName.isEmpty())
return null;
if (plugins == null || !plugins.iterator().hasNext()) {
logger.finest("......no CDI plugins injected");
return null;
}
// iterate over all injected plugins....
for (Plugin plugin : this.plugins) {
if (plugin.getClass().getName().equals(pluginClassName)) {
logger.finest("......CDI plugin '" + pluginClassName + "' successful injected");
return plugin;
}
}
return null;
}
{code}
You can see the full code on Github: https://github.com/imixs/imixs-workflow/blob/master/imixs-workflow-engine/src/main/java/org/imixs/workflow/engine/WorkflowService.java
> bean-discovery-mode="annotated" is not working like described in the spec
> -------------------------------------------------------------------------
>
> Key: WFLY-10029
> URL: https://issues.jboss.org/browse/WFLY-10029
> Project: WildFly
> Issue Type: Bug
> Components: CDI / Weld
> Affects Versions: 10.1.0.Final
> Reporter: Ralph Soika
> Assignee: Martin Kouba
> Priority: Minor
> Labels: beans.xml
>
> I think we have a problem in Wildfly 10 concerning scanning of CDI Beans. Take a look at the following example:
> {code:java}
> @Stateless
> @LocalBean
> public class SomeService {
> ...
> }
> public class SomeClass {
> @EJB
> SomeService someService;
> ....
> }
> {code}
> We have a stateless session ejb an a bean which is not annotated with a scope but is injecting the service EJB. If you use a beans.xml with the tag:
> {noformat}
> bean-discovery-mode="annotated"
> {noformat}
> this works in wildfly 10 - the _someService_ is injected into the _someClass_ which is treated as a CDI bean. But this is not a correct behavior as stated in the specification. It says, that in this case only beans with a scope annotation should be treated as CDI which is not the case for SomeClass. Normally, as a developer, you would not complain much about this. So this is only a minor issue.
> I recognized this after I tried to run my application on Glassfish/Payara4 which did no longer work until I changed the beans.xml tag to:
> {noformat}
> bean-discovery-mode="all"
> {noformat}
> Now it works in both application servers. I think in wildfly we are misinterpreting the attribute "bean-discovery-mode". I think this should be changed in the next versions for EE8. I don't know if this behavior is a known issue and maybe it is still under development.
> I know also that with such a change some projects (also my own ones) will break. So maybe a new configuration switch like "strict-cdi-scanning" is helpful. What do you think?
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list