[ 
https://issues.apache.org/jira/browse/PDFBOX-712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14021740#comment-14021740
 ] 

Petr Slaby commented on PDFBOX-712:
-----------------------------------

Letting the exception through seems to be the right thing. The constructor and 
getInstance() of SecurityHandlersManager can declare 
BadSecurityHandlerException  since the PDDocument expects it anyway. PDFBox 2.0 
seems to use runtime exceptions instead. Since an instance of the 
SecurityHandlerFactory is created in its static part, I assume an 
ExceptionInInitializerError would be thrown. This is not so nice as it 
obfuscates the original problem and breaks the complete application in the 
moment when the SecurityHandlerFactory class is loaded.

> SecurityHandlersManager May stop the application Server when running 
> PDFParser in a Servlet.
> --------------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-712
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-712
>             Project: PDFBox
>          Issue Type: New Feature
>          Components: PDModel
>    Affects Versions: 1.1.0
>            Reporter: [email protected]
>            Priority: Minor
>
> When parsing a PDF document within an Application Server, you should never 
> have a code path which call System.exit()
> I am not sure what invokes the Class 
> org.apache.pdfbox.pdmodel.encryption.SecurityHandlersManager() from with the 
> code, so I have not a clue how to fix this.
> I imagine that the best place to notify PDFBox that it is running in an 
> application would be something like this.
> PDDocument.setApplication(true or false);
> I would like to be able to tell the Parser that it is not running as an 
> application so this code is never hit, but I did not see a way to do this.
>        
>         catch(Exception e)
>         {
>             System.err.println("SecurityHandlersManager strange error with 
> builtin handlers: " + e.getMessage());
>             System.exit(1);
>         }
> Bug: new org.apache.pdfbox.pdmodel.encryption.SecurityHandlersManager() 
> invokes System.exit(...), which shuts down the entire virtual machine
> Pattern id: DM_EXIT, type: Dm, category: BAD_PRACTICE
> Invoking System.exit shuts down the entire Java virtual machine. This should 
> only been done when it is appropriate. Such calls make it hard or impossible 
> for your code to be invoked by other code. Consider throwing a 
> RuntimeException instead.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to