我对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. 如何从Java调用Perl?
- 2. 如何从Java调用
- 3. 如何从Java调用C++?
- 4. 从经典ASP调用ASP.net
- 5. 如何使用SWIG从C++调用Java?
- 6. 如何从Java调用/使用MRI Ruby?
- 7. 如何使用JNI从Java调用MEMCMP
- 8. 如何调用从Web服务使用ASP/VBScript中
- 9. 无法从ASP页面调用Java方法:
- 10. 如何调试经典ASP?
- 11. 如何响应ASP中的HTTPGET调用?
- 12. 如何从jmeter调用java类?
- 13. 如何从java控制器调用JSP
- 14. 如何调用从普通的java类
- 15. 如何从Java Applet调用JS函数?
- 16. 如何从java类调用javafx类?
- 17. 如何从Android活动调用Java类
- 18. 如何从PowerShell调用Java程序?
- 19. 如何从java调用C++功能
- 20. 如何从JSP调用Java类
- 21. 如何从c调用Java函数
- 22. 如何从java调用asp.net函数
- 23. 如何从Java程序调用calabash xml
- 24. 如何从jni端调用java方法?
- 25. 如何从jQuery调用java函数?
- 26. 如何从JavaScript调用Java方法
- 27. 如何从Java Bean调用ad hoc SSJS
- 28. 如何从java中调用PLSQL函数
- 29. 如何从Java调用Scala对象?
- 30. 如何从javascript调用java函数?
这比我们这个应用程序需要的复杂一点。只需要创建工单的pdf并将副本通过电子邮件发送给请求者。想用最少的硬件来做到这一点。 没有必要用大炮杀死一只蚂蚁。 – molson 2009-01-09 15:42:44