[
https://issues.jboss.org/browse/WFLY-924?page=com.atlassian.jira.plugin.s...
]
jaikiran pai edited comment on WFLY-924 at 6/27/13 5:40 AM:
------------------------------------------------------------
The servlet spec states (3.0 spec, section 15.5, table 15-1) that AsyncListener(s) are
eligible for EE resource injection and other annotation based services. So they are
expected to be treated as container managed components.
Unlike most other container managed components, implementations of AsyncListener interface
can be dynamically registered by the user application, through the use of
AsyncContext.createListener(className) API. Such created listeners are expected to be
processed by the container for EE resource injection and other such services. This
effectively means that the container has to have knowledge of such "possible"
AsyncListener candidates which will might be registered by the user applications, so that
the container can setup necessary dependencies for those potential AsyncListener(s). The
AS7/WildFly container scans the application classpath for the presence of such
AsyncListener(s) so that it can do the necessary dependency setup. Of course, the server
can't be sure that all/any of these AsyncListener(s) will be registered by the user
application, later on. So it considers such AsyncListener(s) as optional components so
that failing to construct them will *not* fail the deployment, but instead will log a
message that such a optional component construction has failed (notice the log message, it
does use the words "Not installing optional component...."). The log message
rightly contains the explanation as to why this optional component failed.
If users don't care about such optional components and want to hide this message then
perhaps a better way to deal with this is to disable logging for that specific message. I
don't know if JBoss logging allows it, but perhaps the logging can be configured to
set log messages with id JBAS011006 to be turned off. If that isn't possible/desired,
then an enhancement would be to log the failure of optional components (i.e. the
JBAS011006 message) to be at DEBUG level. I would prefer dealing with this at the logging
configuration instead of at the code level.
was (Author: jaikiran):
The servlet spec states (3.0 spec, section 15.5, table 15-1) that AsyncListener(s) are
eligible for EE resource injection and other annotation based services. So they are
expected to be treated as container managed components.
Unlike most other container managed components, implementations of AsyncListener interface
can be dynamically registered by the user application, through the use of
AsyncContext.createListener(className) API. Such created listeners are expected to be
processed by the container for EE resource injection and other such services. This
effectively means that the container has to have knowledge of such "possible"
AsyncListener candidates which will might be registered by the user applications, so that
the container can setup necessary dependencies for those potential AsyncListener(s). The
AS7/WildFly container scans the application classpath for the presence of such
AsyncListener(s) so that it can do the necessary dependency setup. Of course, the server
can't be sure that all/any of these AsyncListener(s) will be registered by the user
application, later on. So it considers such AsyncListener(s) as optional components so
that failing to construct them will *not* fail the deployment, but instead will log a
message that such a optional component construction has failed (notice the log message, it
does use the words "Not installing optional component...."). The log message
rightly contains the explanation as to why this optional component failed.
If users don't care about such optional components and want to hide this message then
perhaps a better way to deal with this is to disable logging for that specific message. (I
don't know if JBoss logging allows it, but perhaps the logging can be configured to
set log messages with id JBAS011006 to be turned off). If that isn't possible/desired,
then an enhancement would be to log the failure of optional components (i.e. the
JBAS011006 message) to be at DEBUG level. I would prefer dealing with this at the logging
configuration instead of at the code level.
All classes that implement AsyncListener are treated as components
causing JBAS011006
-------------------------------------------------------------------------------------
Key: WFLY-924
URL:
https://issues.jboss.org/browse/WFLY-924
Project: WildFly
Issue Type: Bug
Environment: JBoss EAP 6.0 GA, web services subsystem removed, war deployed
containing Metro or CXF web services implementation
Reporter: Brad Maxwell
Assignee: Remy Maucherat
It tries to create this class if CXF is packaged in the war:
org.apache.cxf.transport.http.Servlet3ContinuationProvider$Servlet3Continuation
And this stack is logged as a warning:
11:08:40,879 INFO [org.jboss.as.osgi] (MSC service thread 1-1) JBAS011907: Register
module: Module "deployment.test.war:main" from Service Module Loader
11:08:40,905 WARN [org.jboss.as.ee] (MSC service thread 1-6) JBAS011006: Not installing
optional component
org.apache.cxf.transport.http.Servlet3ContinuationProvider$Servlet3Continuation due to
exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054:
Could not find default constructor for class
org.apache.cxf.transport.http.Servlet3ContinuationProvider$Servlet3Continuation
at
org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
[jboss-as-ee-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
at
org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:83)
[jboss-as-ee-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:116)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[rt.jar:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[rt.jar:1.6.0_30]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_30]
If Metro is packaged in the war, it tries to load
com.sun.xml.ws.transport.http.servlet.WSAsyncListener and logs a warning with this stack:
16:48:57,302 WARN [org.jboss.as.ee] (MSC service thread 1-1) JBAS011006: Not installing
optional component com.sun.xml.ws.transport.http.servlet.WSAsyncListener$1 due to
exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054:
Could not find default constructor for class
com.sun.xml.ws.transport.http.servlet.WSAsyncListener$1
at
org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
[jboss-as-ee-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
at
org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:83)
[jboss-as-ee-7.1.2.Final-redhat-1.jar:7.1.2.Final-redhat-1]
at
org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:116)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[rt.jar:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[rt.jar:1.6.0_30]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_30]
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira