Base URL caching in ServletController avoids needed updateDests() call on
republishing endpoints
------------------------------------------------------------------------------------------------
Key: CXF-1681
URL: https://issues.apache.org/jira/browse/CXF-1681
Project: CXF
Issue Type: Bug
Components: Transports
Affects Versions: 2.1.1
Environment: Standalone Jetty
Reporter: David Wettig
In updateDests() the following:
if (base.equals(lastBase)) {
return;
}
returns on equal base URLs which results in avoiding the needed second call of
d2.getEndpointInfo().setAddress(base + path);
which is needed to set the fully qualified URI, because the first setAdress()
call made by invoke() just sets the relative path.
What i do is:
1. I use the CXFServlet in combination with Jetty (using nearly the original
example) except of using
root.addServlet(servlet, "/soap/*") instead of just "/*" as the base path.
Now i do:
Endpoint.publish("/testService", impl)
resulting in a ServletController which first sets in invoke() the adress to
'/testService' and after that the adress will be set again in updateDests() but
this time as 'http://localhost:8123/soap/testService'
This works fine for me, now i can load the WSDL for example.
2. The problem now occurs if i indirectly reuse the ServletController by doing
the following:
endpoint.stop();
Endpoint.publish("/testService", impl)
because the second EndpointInfo.setAdress() call won't be made, because of the
base URL matching in updateDests() as shown above.
- The base URL is not changing.
- The second fully qualified EndpointInfo.setAdress() call is missing.
- EndpointInfo contains '/testService' and not as needed
'http://localhost:8123/soap/testService'
- Calling WSDL FQ-URL failes because:
- WSDLQueryHandler can't identify the request using:
isRecognizedQuery()
...
return
endpointInfo.getAddress().contains(UrlUtilities.getStem(baseUri.substring(0,
idx)));
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.