Java Wildfly:ManagedExecutorService和PipedOutputStream

Java Wildfly:ManagedExecutorService和PipedOutputStream,java,wildfly,Java,Wildfly,我需要有关ManagedExecutorService的帮助(我正在使用Wildfly) 我的JSF Bean(控制器)中有这样一个方法: public void doSendEmail() { myEjbean.sendOffer(offer); } 这将调用我的EJB函数: 我现在想创建一个PDF: PipedOutputStream createPdfWithAttachments(DocumentDesigner documentDesigner, String fil

我需要有关ManagedExecutorService的帮助(我正在使用Wildfly)

我的JSF Bean(控制器)中有这样一个方法:

public void doSendEmail() {
    myEjbean.sendOffer(offer);
}
这将调用我的EJB函数: 我现在想创建一个PDF:

    PipedOutputStream createPdfWithAttachments(DocumentDesigner documentDesigner, String fileName) {

 List<InputStream> inputStreamList = new ArrayList<InputStream>();

// 1) Add InputStream (which should be added before the document from 2)
// // Diese hinzufügen bei: inputStreamList.add(inputStream);

// 2) Create Document (from a URL)
PipedOutputStream createPdf(PipedOutputStream os, DocumentDesigner documentDesigner, boolean preview)
inputStreamList.add(isDocument);

// 3) Add InputStream (Stream which should be attach after the document)
// Diese hinzufügen bei: inputStreamList.add(inputStream);


// 4) Merge PDF 
PipedOutputStream is = pdfGenerationHelperService.mergePdf(inputStreamList, fileName);
return is;

}
我现在正在苦苦思索什么时候该用这个:

 managedExecutorService.submit(() -> {
        try {
            doSomething();
        }
    catch (Exception e) {}
        return null;
    });
似乎在createPdf-函数中,我需要这个
managedExecutorService.submit(()->{…}
否则它将无法工作。下面是此函数的代码:

    /**
 * Create PDF
 * 
 * @throws IOException
 */
public PipedOutputStream createPdf(PipedOutputStream os, DocumentDesigner documentDesigner, boolean preview)
        throws IOException {

    managedExecutorService.submit(() -> {

        try {
            String url = generateUrl(documentDesigner, preview);

            PdfRendererBuilder builder = new PdfRendererBuilder();
            XRLog.setLevel(XRLog.CSS_PARSE, Level.SEVERE);
            XRLog.setLoggingEnabled(false);

            // builder.withUri(new URL(url).toString());
            Document doc = html5ParseDocument(url, 0);
            builder.withW3cDocument(doc, url);

            builder.toStream(os);
            builder.run();

            os.close();
            return os;
        }

        catch (Exception e) {
            LOGGER.error(ExceptionUtils.getFullStackTrace(e));
        }

        return null;
    });

    return null;
}
我想知道何时必须使用
managedExecutorService.submit(()
->),是否可以使用嵌套的
managedExecutorService.submit(()

总的来说,我在这里要做的是:

  • 发送带有“报价”对象的电子邮件
  • 报价将以PDF格式生成
  • PDF将其他PDF合并到它
  • 将PDF附加到电子邮件附件
  • 发送电子邮件
  • 非常感谢你的帮助

        /**
     * Create PDF
     * 
     * @throws IOException
     */
    public PipedOutputStream createPdf(PipedOutputStream os, DocumentDesigner documentDesigner, boolean preview)
            throws IOException {
    
        managedExecutorService.submit(() -> {
    
            try {
                String url = generateUrl(documentDesigner, preview);
    
                PdfRendererBuilder builder = new PdfRendererBuilder();
                XRLog.setLevel(XRLog.CSS_PARSE, Level.SEVERE);
                XRLog.setLoggingEnabled(false);
    
                // builder.withUri(new URL(url).toString());
                Document doc = html5ParseDocument(url, 0);
                builder.withW3cDocument(doc, url);
    
                builder.toStream(os);
                builder.run();
    
                os.close();
                return os;
            }
    
            catch (Exception e) {
                LOGGER.error(ExceptionUtils.getFullStackTrace(e));
            }
    
            return null;
        });
    
        return null;
    }