[
https://issues.apache.org/jira/browse/OLINGO-307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14015770#comment-14015770
]
Giacomo Pati edited comment on OLINGO-307 at 6/2/14 7:26 PM:
-------------------------------------------------------------
I had the same issue and after a bit of testing I came up with below patch to
OdataServlet:
{code}
@@ -197,7 +196,7 @@ public class ODataServlet extends HttpServlet {
HTTP_METHOD_HEAD.equals(method) ||
HTTP_METHOD_OPTIONS.equals(method)) {
ODataResponse odataResponse =
ODataResponse.status(HttpStatusCodes.TEMPORARY_REDIRECT)
- .header(HttpHeaders.LOCATION, "/")
+ .header(HttpHeaders.LOCATION, String.format("%s%s/",
req.getContextPath(), req.getServletPath()))
.build();
createResponse(resp, odataResponse);
} else {
{code}
was (Author: giacomo):
I had the same issue and after a bit of testing I came up with below patch to
OdataServlet:
{code}
@@ -197,7 +1
96,7 @@ public class ODataServlet extends HttpServlet {
HTTP_METHOD_HEAD.equals(method) ||
HTTP_METHOD_OPTIONS.equals(method)) {
ODataResponse odataResponse =
ODataResponse.status(HttpStatusCodes.TEMPORARY_REDIRECT)
- .header(HttpHeaders.LOCATION, "/")
+ .header(HttpHeaders.LOCATION, String.format("%s%s/",
req.getContextPath(), req.getServletPath()))
.build();
createResponse(resp, odataResponse);
} else {
{code}
> Issue handling the redirect in ODataServlet
> -------------------------------------------
>
> Key: OLINGO-307
> URL: https://issues.apache.org/jira/browse/OLINGO-307
> Project: Olingo
> Issue Type: Bug
> Components: odata2-core
> Reporter: Eugenio Lentini
> Priority: Blocker
>
> Hi,
> as I have been suggested I am using the ODataServlet instead of the Cxf or
> Jersey one but I guess there is an issue handling the redirection.
> Basically I have a plain filter used to authorize the user before the call to
> the servlet. I have tested in Glassfish 3, Glassfish 4 and Jetty and the
> redirection works great.
> The issue appears in IBM Websphere which probably interprets the
> specification in a slightly different way so in ODataServlet line 91
> if (req.getPathInfo() != null) {
> handle(req, resp, xHttpMethod, xHttpMethodOverride);
> } else {
> handleRedirect(req, resp);
> }
> the req.getPathInfo() is equal to null when in Glassfish, for instance, is
> "/" submitting the following request
> http://localhost:9080/context-root/odata.svc/?foo=1&bar=2
> In handle redirect method there is
> ODataResponse.status(HttpStatusCodes.TEMPORARY_REDIRECT)
> .header(HttpHeaders.LOCATION, "/").build();
> so after the redirect the request points to http://localhost:9080/ as normal,
> which produces in WebSphere
> Error 404: com.ibm.ws.webcontainer.servlet.exception.NoTargetForURIException:
> No target servlet configured for uri: /
> So I guess instead of "/" there should be something like req.getContextPath()
> Thanks a lot for the attention.
> Eugenio
--
This message was sent by Atlassian JIRA
(v6.2#6252)