15

I would like to print reports in PDF format using apex 4.2.2 or v5. I have read that ORDS v3 is required to work even after enabling PDF in instance setting under apex admin.

But during installation it halted the process as

enter image description here

and when I check the URL it shows the following ouptut:

Debug Trace

mapped request using: /* to: PLSQL:apex  Could not find any dispatcher to handle request: --Attributes-- nanoStart = 1447556222844 apex.diagnostic.context = Attempting to process as a Dispatchable Service  ECID-Principal = ECIDPrincipal [ecid=qKmpkwa3M59vpxfWvdonuA..] oracle.dbtools.http.ecid = co0K1af4SoL_vfSvpOewLA.. oracle.dbtools.common.di.Services = Request Scope --Attributes-- GET /ords/ HTTP/1.1 Host: 127.0.0.1 Cookie: WWV_CUSTOM-F_4876305575366759_100=A232DDB1270CE7EC; WWV_CUSTOM-F_4876305575366759_101=CDDDBA5608605CD8; WWV_CUSTOM-F_10_4950=E5A43E72CA2546A0 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 Host: 127.0.0.1:8090 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8   HttpInputOverHTTP@b9a27   

Stack Trace

NotFoundException [statusCode=404, reasons=[]] at oracle.dbtools.http.entrypoint.Dispatcher.choose(Dispatcher.java:82) at oracle.dbtools.http.entrypoint.Dispatcher.dispatch(Dispatcher.java:92) at oracle.dbtools.http.entrypoint.EntryPoint$FilteredServlet.service(EntryPoint.java:123) at oracle.dbtools.http.filters.FilterChainImpl.doFilter(FilterChainImpl.java:73) at oracle.dbtools.http.forwarding.QueryFilteringRewrite.doFilter(QueryFilteringRewrite.java:82) 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:61) 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.db.PLSQLMapper.doFilter(PLSQLMapper.java:37) at oracle.dbtools.url.mapping.URLMapping.doFilter(URLMapping.java:78) at oracle.dbtools.url.mapping.filter.URLMappingFilter.doFilter(URLMappingFilter.java:63) 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:71) 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:80) at oracle.dbtools.http.entrypoint.EntryPointServlet.service(EntryPointServlet.java:46) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at oracle.dbtools.rt.web.HttpEndpointBase.dispatchableServices(HttpEndpointBase.java:166) at oracle.dbtools.rt.web.HttpEndpointBase.service(HttpEndpointBase.java:88) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:751) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:566) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:498) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:98) at org.eclipse.jetty.server.Server.handle(Server.java:461) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:284) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) at java.lang.Thread.run(Unknown Source) 
Muhammad Muazzam
  • 2,810
  • 6
  • 33
  • 62
  • 3
    There isn't much of a community on ORDS on SO, not even a tag yet. Your targetted audience is most likely not to be found here. I personally can't offer much help on built-in PDF printing (and the oracle-apex community isn't that big on SO either... Especially for specific technical cases like this). Your best resources are: [OTN ORDS](https://community.oracle.com/community/database/developer-tools/oracle_rest_data_services) or [OTN Apex](https://community.oracle.com/community/database/developer-tools/application_express). Very active communities, even the Oracle devs there. – Tom Nov 18 '15 at 12:00
  • I have already posted at https://community.oracle.com/thread/3819251 but not get enough help. – Muhammad Muazzam Nov 22 '15 at 10:44
  • Where did you install ORDS? standalone? I strongly recommend using something like Glassfish to run your ORDS instance. I can't get much information from your trace, but there are a lot of "validateConnection" messages in the stack so it might be an authentication problem. Can you give some more info on your architecture please? – Non Plus Ultra Nov 30 '15 at 17:00
  • Installed glassfish, but no improvement – Muhammad Muazzam Nov 30 '15 at 17:58
  • Seeing the top of the stack trace from the installer would be much more helpful – Dave Costa Jan 08 '16 at 15:07
  • If you are already using Apex without ORDS - that is, using the embedded PL/SQL gateway in the database as the web listener - I rather doubt you would need to use ORDS to support PDF conversion. Where did you get that info? – Dave Costa Jan 08 '16 at 15:12

1 Answers1

8

If you are using apex 5.0 then you do not need the ords users. So do not do

java -jar ords.war install 

Since that will take you through the process of creating ords_metadata and ords_public_user, which you do not need with Apex. But rather use

First step, define location:

java -jar ords.war configdir c:\ords\

(it will create another ords directory under your specified directory)

Next step, define the APEX server + passwords (apex_public_user and apex_listener+apex_rest_public_user if using rest services),

java -jar ords.war setup

This will run you through a setup process.

Next you have a few options to run apex, 1) standalone 2) Java server (Glassfish, Tomcat, weblogic)

Standalone is pretty straight forward:

java -jar ords.war standalone --port 8080 --apex-images c:\ords\i\ 

You need the images folder from the Apex 5.0 zip to be c:\ords\i\ (or change the location)

Setting up on Tomcat is pretty simple. After extracting Tomcat, just copy ords.war to the webapps folder and copy the apex 5.0 images folder to webapps\i\

Note that you need to run the java -jar ords.war configdir on the same machine as the tomcat server and tomcat needs access to that folder.

If you mess up the set-up simply remove the **c:\ords\ords** folder and re-run the setup process. You can also define a new configdir and try again while keeping the old one, Note that running configdir will always create a subfolder and put the setting files there.

Also make sure that apex_public_user is unlocked and you have the correct password, i.e.

sqlplus apex_public_user/*your password*@server 

Should connect you and you should be able to do

select * from dual;

--edit--

Make sure that you have Oracle's Java installed and that is being used to run ords:

C:\>java -version java 

Should give something like

version "1.8.0_31" 
Java(TM) SE Runtime Environment (build 1.8.0_31-b13) 
Java HotSpot(TM) 64-Bit Server VM
(build 25.31-b07, mixed mode)
Olafur Tryggvason
  • 4,761
  • 24
  • 30