Package ca.uhn.fhir.rest.server
Class IncomingRequestAddressStrategy
- java.lang.Object
-
- ca.uhn.fhir.rest.server.IncomingRequestAddressStrategy
-
- All Implemented Interfaces:
IServerAddressStrategy
- Direct Known Subclasses:
ApacheProxyAddressStrategy
public class IncomingRequestAddressStrategy extends Object implements IServerAddressStrategy
Determines the server's base using the incoming request
-
-
Constructor Summary
Constructors Constructor Description IncomingRequestAddressStrategy()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description StringdetermineServerBase(javax.servlet.ServletContext theServletContext, javax.servlet.http.HttpServletRequest theRequest)Determine the server base for a given requeststatic StringdetermineServletContextPath(javax.servlet.http.HttpServletRequest theRequest, RestfulServer server)Determines the servlet's context path.voidsetServletPath(String theServletPath)If set to a non-null value (default isnull), this address strategy assumes that the FHIR endpoint is deployed to the given servlet path within the context.
-
-
-
Constructor Detail
-
IncomingRequestAddressStrategy
public IncomingRequestAddressStrategy()
-
-
Method Detail
-
determineServerBase
public String determineServerBase(javax.servlet.ServletContext theServletContext, javax.servlet.http.HttpServletRequest theRequest)
Description copied from interface:IServerAddressStrategyDetermine the server base for a given request- Specified by:
determineServerBasein interfaceIServerAddressStrategy
-
setServletPath
public void setServletPath(String theServletPath)
If set to a non-null value (default isnull), this address strategy assumes that the FHIR endpoint is deployed to the given servlet path within the context. This is useful in some deployments where it isn't obvious to the servlet which part of the path is actually the root path to reach the servlet.Example values could be:
- null
- /
- /base
Wildcards are not supported!
-
determineServletContextPath
public static String determineServletContextPath(javax.servlet.http.HttpServletRequest theRequest, RestfulServer server)
Determines the servlet's context path. This is here to try and deal with the wide variation in servers and what they return. getServletContext().getContextPath() is supposed to return the path to the specific servlet we are deployed as but it's not available everywhere. On some servers getServletContext() can return null (old Jetty seems to suffer from this, see hapi-fhir-base-test-mindeps-server) and on other old servers (Servlet 2.4) getServletContext().getContextPath() doesn't even exist. theRequest.getContextPath() returns the context for the specific incoming request. It should be available everywhere, but it's likely to be less predicable if there are multiple servlet mappings pointing to the same servlet, so we don't favour it. This is possibly not the best strategy (maybe we should just always use theRequest.getContextPath()?) but so far people seem happy with this behavour across a wide variety of platforms. If you are having troubles on a given platform/configuration and want to suggest a change or even report incompatibility here, we'd love to hear about it.
-
-