我對ASP並不熟悉,但我正在幫助某人將他們的網站作爲輔助項目。我試圖從ASP使用VB調用Apache FOP(一個Java應用程序)。我已經看到了使用GetObject('java:...')構造的簡單示例,但我不知道如何從java對象傳遞和檢索二進制數據。理想情況下,我會在內存中完成這一切 - 我寧願不必將我的數據寫入磁盤,在該文件上調用FOP(將讀取該文件,然後寫入一個新文件),然後重新啓動該文件,從磁盤讀取數據。該網站不是,忙,所以我可以做到這一點,但它似乎並不高效。如何從asp調用java?
2
A
回答
0
我想出了一個解決方法。這適用於在Win 2k3服務器上運行的IIS - 舊版本會更容易。
首先我從主站點創建了一個子目錄(出於安全目的),並將一個新的應用程序池附加到該目錄。新的應用程序池需要作爲本地系統運行。我不能讓fop.bat工作,甚至作爲本地系統運行,但我可以調用java,所以我把整個FOP命令行到我的ASP腳本,類似這樣的片段:
Dim shell, foppath, workpath
Set shell = Server.CreateObject("WScript.Shell")
foppath = Server.MapPath("/fop/")
workpath = Server.MapPath("/tmp/")
shell.CurrentDirectory = foppath
Dim commandline
commandline = "java -Denv.windir=C:\WINDOWS -cp """
'set classpath
commandline = commandline & foppath & "\build\fop.jar;"
commandline = commandline & foppath & "\build\fop-sandbox.jar;"
commandline = commandline & foppath & "\build\fop-hyph.jar;"
commandline = commandline & foppath & "\lib\xml-apis-1.3.04.jar;"
commandline = commandline & foppath & "\lib\xml-apis-ext-1.3.04.jar;"
commandline = commandline & foppath & "\lib\xercesImpl-2.7.1.jar;"
commandline = commandline & foppath & "\lib\xalan-2.7.0.jar;"
commandline = commandline & foppath & "\lib\serializer-2.7.0.jar;"
commandline = commandline & foppath & "\lib\batik-all-1.7.jar;"
commandline = commandline & foppath & "\lib\xmlgraphics-commons-1.3.1.jar;"
commandline = commandline & foppath & "\lib\avalon-framework-4.2.0.jar;"
commandline = commandline & foppath & "\lib\commons-io-1.3.1.jar;"
commandline = commandline & foppath & "\lib\commons-logging-1.0.4.jar;"
commandline = commandline & foppath & "\lib\jai_imageio.jar;"
commandline = commandline & foppath & "\lib\fop-hyph.jar;"
commandline = commandline & """ org.apache.fop.cli.Main "
commandline = commandline & workpath & "/file.fo "
commandline = commandline & workpath & "/file.pdf "
Dim ResultCode
ResultCode = Shell.Run(commandline,,True) ' True = Wait for FOP to finish
之後,我確保我清理了我的臨時文件等。也許不是最優雅的解決方案,但考慮到需要,我相信它會工作很長時間。
1
我不會擔心效率,直到我觀察到一個問題,測量結果告訴我FOP解決方案是罪魁禍首。
我會建議一個異步調用Web服務。發送包含XML輸入流和XSL-T樣式表的消息。讓服務將PDF寫入本地磁盤。將郵箱添加到您的用戶界面,以便在PDF準備好提取時提醒用戶。點擊鏈接,PDF將流式傳輸到瀏覽器。用戶可以根據需要查看或保存到本地磁盤。
Asynch在這種情況下很好,因爲您不知道轉換可能需要多長時間。爲什麼讓用戶等待?讓他們稍後再回來看看。一個AJAX調用來檢查新的PDF將是優雅的。
0
你如何添加配置文件-c的conf \ fop.xconf或-c C:\ FOP \的conf \ fop.xconf 上述優秀作品
TA的!
相關問題
- 1. 如何從ASP按鈕調用JQuery?
- 2. 如何從Java調用C++?
- 3. 如何從java調用DLL?
- 4. 如何從Java調用DataFrameFunctions.createCassandraTable?
- 5. 如何從Java調用
- 6. 如何從java調用webservice
- 7. 如何從Java調用Perl?
- 8. 如何從Java調用
- 9. 從Jquery調用ASP服務
- 10. 從經典ASP調用ASP.net
- 11. 如何使用IKVM從java調用C#
- 12. 如何從Java調用/使用MRI Ruby?
- 13. 如何使用SWIG從C++調用Java?
- 14. 如何使用JNI從Java調用MEMCMP
- 15. 如何調用從Web服務使用ASP/VBScript中
- 16. 無法從ASP頁面調用Java方法:
- 17. 如何調試經典ASP?
- 18. 如何響應ASP中的HTTPGET調用?
- 19. 如何調用編譯ASP文件
- 20. 如何從NDK C++調用Java?
- 21. 如何調用從普通的java類
- 22. 如何從node.js調用java程序?
- 23. 如何從jmeter調用java類?
- 24. 如何從Windows Powershell調用Java進程?
- 25. 如何從C++調用Java方法
- 26. 如何從Xpand調用Java代碼?
- 27. 如何從Java Bean調用ad hoc SSJS
- 28. 如何從java調用C++功能
- 29. 如何從Java調用Gradle腳本?
- 30. 如何從JSP調用Java類
這比我們這個應用程序需要的複雜一點。只需要創建工單的pdf並將副本通過電子郵件發送給請求者。想用最少的硬件來做到這一點。 沒有必要用大炮殺死一隻螞蟻。 – molson 2009-01-09 15:42:44