title: Installing ORDS (without APEX)
body: <p>I'm having difficulties getting ORDS 3.0.4.60.12.48 to work on a Tomcat 7.0.68 server. The database itself is Oracle 12.1.0.2.0.</p>
  
  <p>Whenever I try to access the ORDS page at <code>localhost:8080/ords</code>, I'm getting a 404 error. After enabling the  <code>debug.printDebugToScreen</code> property, the page is displaying the following:</p>
  
  <p><strong>Debug Trace</strong></p>
  
  <pre><code>Could not find any dispatcher to handle request:
  --Attributes--
  apex.diagnostic.context = ...
  ECID-Principal = ECIDPrincipal [ecid=DRfgpsk1Jpq7KZ67hEo6Dw..]
  oracle.dbtools.http.ecid = ogil1RMV3372zbyEOpN1Rg..
  oracle.dbtools.common.di.Services = Request Scope
  --Attributes--
  GET /ords/ HTTP/1.1
  Host: localhost
  host: localhost:8080
  user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
  accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  accept-language: en-US,en;q=0.5
  accept-encoding: gzip, deflate
  referer: http://localhost:8080/manager/html/list
  connection: keep-alive
  
  
  org.apache.catalina.connector.CoyoteInputStream@139aac67
  </code></pre>
  
  <p><strong>Stack Trace</strong></p>
  
  <pre><code>DispatcherNotFoundException [statusCode=404, reasons=[]]
    at oracle.dbtools.http.entrypoint.Dispatcher.choose(Dispatcher.java:86)
    at oracle.dbtools.http.entrypoint.Dispatcher.dispatch(Dispatcher.java:96)
    at oracle.dbtools.http.entrypoint.EntryPoint$FilteredServlet.service(EntryPoint.java:153)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:73)
    at oracle.dbtools.http.forwarding.QueryFilteringRewrite.doFilter(QueryFilteringRewrite.java:89)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.forwarding.ForwardingFilter.doFilter(ForwardingFilter.java:59)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.cors.CORSPreflightFilter.doFilter(CORSPreflightFilter.java:67)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.cookies.auth.CookieSessionCSRFFilter.doFilter(CookieSessionCSRFFilter.java:73)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.auth.AuthenticationFilter.authenticate(AuthenticationFilter.java:89)
    at oracle.dbtools.http.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:62)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.url.mapping.filter.URLMappingFilter.doFilter(URLMappingFilter.java:69)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.locale.LocaleFilter.doFilter(LocaleFilter.java:60)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.cors.CORSResponseFilter.doFilter(CORSResponseFilter.java:83)
    at oracle.dbtools.http.filters.HttpResponseFilter.doFilter(HttpResponseFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.errors.ErrorPageFilter.doFilter(ErrorPageFilter.java:75)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.ecid.ECIDFilter.doFilter(ECIDFilter.java:35)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.auth.ForceAuthFilter.doFilter(ForceAuthFilter.java:44)
    at oracle.dbtools.http.filters.HttpFilter.doFilter(HttpFilter.java:45)
    at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:64)
    at oracle.dbtools.http.filters.Filters.filter(Filters.java:47)
    at oracle.dbtools.http.entrypoint.EntryPoint.service(EntryPoint.java:82)
    at oracle.dbtools.http.entrypoint.EntryPointServlet.service(EntryPointServlet.java:49)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at oracle.dbtools.rt.web.HttpEndpointBase.dispatchableServices(HttpEndpointBase.java:156)
    at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:85)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
  </code></pre>
  
  <p>Unfortunately, I didn't really find a whole lot of info online about this. A lot of it was checking APEX specific users which I'm not using. Of what I did find, I already checked and can confirm that I can log in as <code>ORDS_PUBLIC_USER</code> manually, and I've tried copying the <code>ojdbc.jar</code> files from my Oracle client to the Tomcat <code>lib</code> folder. However, the problem seems to persist.</p>
  
  <p>Any help would be appreciated!</p>
  
  <p>[Edit] So I tried reinstalling it with a fresh ORDS configuration and realized that my installation did not have an <code>apex_pu.xml</code> file in the <code>ords\conf\</code> directory. However, I'm still getting a similar error:</p>
  
  <p><strong>Debug Trace</strong></p>
  
  <pre><code> mapped request using: /* to: apex_pu
  
  Could not find any dispatcher to handle request:
  --Attributes--
  apex.diagnostic.context = ...
  ECID-Principal = ECIDPrincipal [ecid=wDuKj9PEUNnl3Oy8vwesDg..]
  oracle.dbtools.http.ecid = xXACfwD3YDNtXCQUNuqIAw..
  oracle.dbtools.common.di.Services = Request Scope
  --Attributes--
  GET /ords/ HTTP/1.1
  Host: localhost
  host: localhost:8080
  user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
  accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  accept-language: en-US,en;q=0.5
  accept-encoding: gzip, deflate
  referer: http://localhost:8080/manager/html/list
  connection: keep-alive
  
  
  org.apache.catalina.connector.CoyoteInputStream@1405a57f
  
  mapped request using: /* to: apex_pu
  
  Could not find any dispatcher to handle request:
  --Attributes--
  apex.diagnostic.context = ...
  ECID-Principal = ECIDPrincipal [ecid=wDuKj9PEUNnl3Oy8vwesDg..]
  oracle.dbtools.http.ecid = xXACfwD3YDNtXCQUNuqIAw..
  oracle.dbtools.common.di.Services = Request Scope
  --Attributes--
  GET /ords/ HTTP/1.1
  Host: localhost
  host: localhost:8080
  user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
  accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  accept-language: en-US,en;q=0.5
  accept-encoding: gzip, deflate
  referer: http://localhost:8080/manager/html/list
  connection: keep-alive
  
  
  org.apache.catalina.connector.CoyoteInputStream@1405a57f
  </code></pre>
  
  <p>The stack trace is near identical to before.</p>