I think that the target change will be on:

class :  MessageDrivenComponentDescriptionFactory
method: getMessageListenerInterface  that is used by processMessageBeans as well.

MessageDrivenComponentDescriptionFactory, is called on AnnotatedEJBComponentDescriptionDeploymentUnitProcessor class, 

    public AnnotatedEJBComponentDescriptionDeploymentUnitProcessor(final boolean appclient) {
        this.appclient = appclient;
        this.factories = new EJBComponentDescriptionFactory[] {
                new MessageDrivenComponentDescriptionFactory(appclient),
                new SessionBeanComponentDescriptionFactory(appclient)

It will be enough to change the phase when AnnotatedEJBComponentDescriptionDeploymentUnitProcessor is executed on EJB3SubsystemAdd, and do the due change on code using reflection? 

Or will this impact other things regarding message driven beans that should be done on PARSE phase?

              processorTarget.addDeploymentProcessor(EJB3Extension.SUBSYSTEM_NAME, Phase.PARSE, Phase.PARSE_CREATE_COMPONENT_DESCRIPTIONS, new AnnotatedEJBComponentDescriptionDeploymentUnitProcessor(appclient));

And what will be the exact phase to do the AnnotatedEJBComponentDescriptionDeploymentUnitProcessor?
Do you have some code that I could use as reference?

Eduardo Sant'Ana da Silva

2015-07-01 3:12 GMT-03:00 Stuart Douglas <>:
I think the solution here is to just move this to a later phase, where it can be changed to use reflection.


On Wed, 1 Jul 2015 at 02:52 Eduardo Sant´Ana da Silva <> wrote:
Hello, I'm planning to do something regarding  WFLY-4200, I've sent an e-mail a few months ago about that and I will need some clarifications.

I don't know if I'm right, but I'm seeing a big problem with that if this is really a bug. What other checks are being done that cause the deployment abort in the other phases before resolving the dependencies that could be turn the deployment in a qualified one? 

Eduardo Sant'Ana da Silva

2015-05-02 19:23 GMT-03:00 Eduardo Sant´Ana da Silva <>:
I was looking at :WFLY-4200 WAR MDB cannot obtain superclass on module classpath

This is what I posted about it:

"I believe that the problem is because AnnotatedEJBComponentDescriptionDeploymentUnitProcessor executes in the parse phase:


Since the dependencies will be resolved at  Phase.DEPENDENCIES, your build will not work. 
Regarding WFLY, my suggestion is not throw the EjbLogger.ROOT_LOGGER.mdbDoesNotImplementNorSpecifyMessageListener(beanClass) only bring up some flag that the required interfaces were not yet resolved, some attachment could be useful, just to retain the super class name. When the dependencies were solved, the class will be present on the class index and the test against the annotation should be performed again. Since that work will be done twice, to verify the required interfaces, this requires some experts advice." 

Eduardo Sant'Ana da Silva 


wildfly-dev mailing list

Eduardo Sant'Ana da Silva - Dr.
Pesquisador / Consultor de TI