-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Shawn,
On 4/19/18 1:05 PM, [email protected] wrote: > > > On 2018/04/19 14:41:18, Christopher Schultz > <[email protected]> wrote: Fabio, > > On 4/19/18 10:26 AM, Fabio Salvi wrote: >>>> Hallo Shawn >>>> >>>> I use something like this: >>>> >>>> InputStream resourceAsStream = >>>> getClass().getClassLoader().getResourceAsStream("/META-INF/pdfforms /" >>>> >>>> + *aPDFFormularName*); >>>> >>>> PDDocument pdfDocument = >>>> PDDocument.*load*(resourceAsStream); >>>> >>>> This inside an EJB but I believe it will work for a WAR as >>>> well > > Yes, it will work inside of anything where the ClassLoader can get > to the file. Sometimes it makes more sense to use the servlet's > getResource() method because it may have a wider selection of > storage locations to consult. > > A few things: > > 1. Make sure to close the InputStream in a finally block. Resource > leaks are serious business on servers like this. > > 2. Watch out for your memory settings. You may end up loading a > *huge* PDF into memory without realizing it. > > 3. Remember that ClassLoader.getResourceAsStream can return null. > > -chris > >>>> 2018-04-19 15:13 GMT+02:00 [email protected] < >>>> [email protected]>: >>>> >>>>> >>>>> I need to load a static PDF document, from a java class, >>>>> running in my J2EE web app on WebLogic 12c; however >>>>> although my code works in Tomcat, when trying to run it in >>>>> WebLogic 12c (WebLogic Server Version: 12.2.1.2.0), I get a >>>>> server error that the PDF file cannot be found ( >>>>> java.io.FileNotFoundException). >>>>> >>>>> I am using Apache's PDF library, PDFBox version 2.0.8 to >>>>> load a fillable PDF file that I created, and then populate >>>>> that fillable PDF with data. My code works fine in Tomcat, >>>>> but fails to find the pdf file when deployed to WebLogic >>>>> 12c . >>>>> >>>>> -This appears to be because when an EAR file is deployed >>>>> to WebLogic 12c, the contents in the WAR file (all of the >>>>> application code/files, including the fillable PDF file), >>>>> remain archived up in a jar file that WebLogic creates, >>>>> instead of exploded. >>>>> >>>>> My application utilizes the standard Maven application >>>>> structure, so as is standard with all static files, I have >>>>> put my PDF file in the directory for static resources: >>>>> src/main/resources/ >>>>> >>>>> In my pom.xml file, I have the following, which builds any >>>>> pdf files in the /src/main/resources/ folder, into the >>>>> class path root folder of the WAR file. <resource> >>>>> <directory>${basedir}/src/main/resources/</directory> >>>>> <includes> <include>**/*.xml</include> >>>>> <include>**/*.properties</include> >>>>> <include>**/*.pdf</include> </includes> </resource> >>>>> >>>>> When I build the WAR and EAR file, the pdf file does indeed >>>>> get copied into the root folder of the application's class >>>>> files. >>>>> >>>>> The following 3 lines of code, work to load the PDF, when >>>>> my application's EAR file is deployed in Tomcat, but do not >>>>> in WebLogic 12c (WebLogic Server Version: 12.2.1.2.0). >>>>> >>>>> //this classLoader works for Tomcat, but no in WebLogic 12c >>>>> ClassLoader classLoader = getClass().getClassLoader(); >>>>> File file= new File(classLoader.getResource(" >>>>> myPdfFile.pdf").getFile()); PDDocument document = >>>>> PDDocument.load(file); >>>>> >>>>> WebLogic 12c produces the following error: >>>>> >>>>> ####<Apr 17, 2018, 1:21:50,798 PM EDT> <Error> <HTTP> >>>>> <HQCIOLT1667133> <DefaultServer> <[ACTIVE] ExecuteThread: >>>>> '6' for queue: 'weblogic.kernel.Default (self-tuning)'> >>>>> <<WLS Kernel>> <> >>>>> <3902331f-a214-42fe-a6a1-35b3531e4b56-000000a9> >>>>> <1523985710798> <[severity-value: 8] [rid: 0] >>>>> [partition-id: 0] [partition-name: DOMAIN] > <BEA-101019> >>>>> <[ServletContext@1661988196[app:mmhsrp-ear-4.9.0.1-3 >>>>> module:/mmhsrp path:null spec-version:3.1]] Servlet failed >>>>> with an IOException. java.io.FileNotFoundException: >>>>> C:\Users\shawn.oplinger\ >>>>> AppData\Roaming\JDeveloper\system12.2.1.2.42.161008.1648\ >>>>> DefaultDomain\servers\DefaultServer\tmp\_WL_user\ >>>>> mmhsrp-ear-4.9.0.1-3\l27tj7\war\WEB-INF\lib\_wl_cls_gen.jar!\myPdf Fil > >>>>> e.pdf >>>>> >>>>> > (The system cannot find the path specified) >>>>> >>>>> >>>>> -When I browse my file system, to manually try to find the >>>>> pdf file using the path in the WebLogic I can get as far as >>>>> this directory: >>>>> C:\Users\shawn.smith\AppData\Roaming\JDeveloper\system12.2. >>>>> >>>>> 1.2.42.161008.1648\DefaultDomain\servers\DefaultServer\tmp\_WL_use r\ >>>>> >>>>> > >>>>> mmhsrp-ear-4.9.0.1-3\l27tj7\war\WEB-INF\lib\ >>>>> >>>>> in that directory is then this file: _wl_cls_gen.jar >>>>> >>>>> in that jar file is indeed my pdf file:myPdfFile.pdf >>>>> >>>>> -So why can't the classLoader find/load the pdf file? -does >>>>> it have anything to do with the pdf file is actually in >>>>> the archived _wl_cls_gen.jar file, and not exploded? >>>>> >>>>> -Any suggestions on how my java class can load a static pdf >>>>> file in WebLogic 12c? >>>>> >>>>> Thanks! Shawn >>>>> >>>>> ------------------------------------------------------------------ - --- >>>>> >>>>> > >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: >>>>> [email protected] >>>>> >>>>> >>>> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> > > Thanks very much everyone, I really appreciate it! Using > getResourceAsStream instead of getResource fixed my problem. > > Thanks also Chris, for pointing out that I need to close the > resource stream. Below is my new implementation that now works in > WebLogic 12c deployment. cheers, Shawn > > //This works for weblogic. Because weblogic packages all the WAR > contents into a JAR // there are no actual files in the JAR, so you > have to use getResourceAsStream InputStream resourceAsStream = > null; PDDocument document; try { resourceAsStream = > getClass().getClassLoader().getResourceAsStream("Level_A_FINAL_APPROVE D_2017- > fieldsMappedToEntity.pdf"); document = > PDDocument.load(resourceAsStream); } finally { > resourceAsStream.close(); } Remember that getResourceAsStream can return null. ;) - -chris -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlrY0CAACgkQHPApP6U8 pFg0FQ/+KLDJAcbtjgmFPolrMxrRqkLs4MlKgF0usY523hd3CgplddFR0ZAwdiSK xiYjnkmeOt+Gvtu0HZTr9i2ndv0J/36D8lGH8vOZOaEqwqACZx40uqYoG0rDNniZ 8aN1IF3XJnVh4JL8H7VvSL3cHlPj5ig4Nx7d3I7fOJKkbhYchw9rBS56CnFDD5My O0RPDQEoaqbox0Sc50RVapqcbEY+w8k6XBC6hEjsLXTPBn60MykM2SRDbMPoE443 O62J1d5vyaKbuCnqVtVzLwp0jERAQgPQo+y0oIfcf+qVKC5RPhdOntgaPvGjCGpu LKsj99sBckfvS9v6JrGOw52RLjRf1E4uzHdweA1wwByHumRcyju0jnQ4zrbeqAGV sn8e9CXftvEYhtvWku54M3aoV9zg0C0d06ZOaklorl2atV6JU8s7vbsjS5KcKvWG A3UpLvrZJz497wbL9G4WhrD+ANNRJOxT3llAs1l1ep46+sw/YwRkB76DPtpD2b52 UEIp6Ke9aW7CtufcXqyrLp/4gW0fJ4+y8joJUr0hm5FhrTTDterPxt1SXl6WjMlV dmxRb1mNNXEAXsZYwMUd3EglH1lQkPwgjLgXp+pLFzJ62xvx/erLkNrnckp5v8YO HpiTGRhpd20IpLJUTS5mG6K+PwiJROCsCSLqNTvXdPcivkpCbgw= =6BbT -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

