]
Jason Greene updated WFLY-4120:
-------------------------------
Fix Version/s: 10.0.0.Alpha3
(was: 10.0.0.Alpha2)
JAX-WS: HandlerChain-Annotation referencing file outside Java Archive
causes JBAS015507
---------------------------------------------------------------------------------------
Key: WFLY-4120
URL:
https://issues.jboss.org/browse/WFLY-4120
Project: WildFly
Issue Type: Bug
Components: Web Services
Affects Versions: 8.2.0.Final
Environment: Windows 8.1
Reporter: Manfred Otte
Assignee: Alessio Soldano
Priority: Minor
Fix For: 10.0.0.Alpha3
Attachments: testjsr109.war
Regarding JSR 109, chapter 6.3 the "handler chain file can also be packaged and
specified in the annotation such that, it is accessible as a resource from the ClassPath.
At runtime, container providers must first try to access the handler chain file as per the
locations specified in JSR-181 specification. Failing that, they must try to access it as
a resource from the ClassPath."
The JBoss AS Documentation states that "The war is considered to be a single module,
so classes defined in WEB-INF/lib are treated the same as classes in WEB-INF/classes. All
classes packaged in the war will be loaded with the same class loader"
(
https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7).
Following this statements I think it should be fine to have a HandlerChain-annnotated
Webservice within a JAR inside a WAR (WEB-INF/lib) referencing a handler chain file that
ist not part of the JAR but resides in WEB-INF/classes. However this situation results in
{code}
Internal Server Error
{
"outcome" => "failed",
"failure-description" => {"JBAS014671: Failed services" =>
{"jboss.deployment.unit.\"testjsr109.war\".PARSE" =>
"org.jboss.msc.service.StartException in service
jboss.deployment.unit.\"testjsr109.war\".PARSE: JBAS018733: Failed to process
phase PARSE of deployment \"testjsr109.war\"
Caused by: javax.xml.ws.WebServiceException: JBAS015507: Handler chain config file
handlerchain.xml not found in ResourceRoot
[root=\"/D:/tools/wildfly-8.2.0.Final/bin/content/testjsr109.war/WEB-INF/lib/testjsr109.jar\"]"}},
"rolled-back" => true
}
{code}
The implementation of
org.jboss.as.webservices.injection.WSHandlerChainAnnotationProcessor seems to expect, that
the handler chain file is always part of the ResourceRoot the annotated WebService lives
in. With respect to JSR 109 I think that this expectation is wrong and that a handler
chain file outside the JAR is a valid scenario.