[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