管道Java输出到调用脚本

管道Java输出到调用脚本,java,apache,servlets,batch-file,Java,Apache,Servlets,Batch File,我的目标是在ApacheWebServer上运行CGI。我的CGI是用Java编写的。我正在使用一个批处理文件(稍后可能是一个perl脚本),它启动了处理所有业务的JavaCGI 批处理文件工作并启动JavaCGI。java程序本身就可以工作。但我的java代码不会将任何内容发送回浏览器。我正在做一个简单的System.out.println来将内容发送到浏览器。我用它作为参考 我的批处理文件 echo内容类型:text/html 回声。 回音^^^^ 回声你好世界!!! java-cp My.

我的目标是在ApacheWebServer上运行CGI。我的CGI是用Java编写的。我正在使用一个批处理文件(稍后可能是一个perl脚本),它启动了处理所有业务的JavaCGI

批处理文件工作并启动JavaCGI。java程序本身就可以工作。但我的java代码不会将任何内容发送回浏览器。我正在做一个简单的System.out.println来将内容发送到浏览器。我用它作为参考

我的批处理文件
echo内容类型:text/html
回声。
回音^^^^
回声你好世界!!!
java-cp My.jar MyClass
回音^^
我的Java文件
新文件(“C:\\wamp\\www\\cgi-bin\\”+新日期().getTime()).mkdir();
System.out.println(“来自Java的Hello world”);
旁注-我这样做是因为(不使用servlet容器等)我的任务有2到3分钟长,我不想阻止servlet。同时,我需要向用户更新任务的进度。这是非公开的,我不想让它变得太复杂,通过使用JMS、ajax等在容器中运行它…

我想知道,
如果
java-cp My.jar MyClass
显示它作为一个单独命令应该显示的内容,但在批处理中不起作用,那么/f可能会有一个解决方法

@echo off
  rem  This works in Wampserver's Apache cgi-bin...
  rem     http://localhost/cgi-bin/testbat.bat
echo Content-Type: text/html
echo.
echo ^<html^>^<head^>^</head^>^<body^>
echo ^<H1^>Hello world!!!^</H1^>
echo ^<PRE^>
FOR /F "usebackq delims==" %%i IN (`dir`) do echo %%i
echo ^</PRE^>
echo ^</body^>^</html^>
@echo关闭
rem这在Wampserver的ApacheCGI中工作。。。
雷姆http://localhost/cgi-bin/testbat.bat
echo内容类型:text/html
回声。
回音^^^^
回声^你好,世界^
回音^
对于(`dir`)中的/F“usebackq delims==”%%i,执行echo%%i
回音^
回音^^
无论如何,很高兴你解决了这个问题:)
干杯

为什么不使用Servlet 3.0和异步支持?我想到了这一点。我还没有用过,所以需要调查一下。但是现在,我正在寻找一个快速的设置/解决方案,让我直接在apache下运行它,就像CGI给我的一样。我很好奇,你在尝试这种事情吗。。。我也看到了。。在您提供的第二个链接中找到答案。“使用批处理是错误的。请使用Perl、PHP、Ruby或Python(甚至vbscript-asp)”。我使用了Perl,就这样做到了。现在添加一个答案,以便我可以接受它。谢谢。
    new File("C:\\wamp\\www\\cgi-bin\\" + new Date().getTime()).mkdir();
    System.out.println("<b>Hello world from Java</b>");
@echo off
  rem  This works in Wampserver's Apache cgi-bin...
  rem     http://localhost/cgi-bin/testbat.bat
echo Content-Type: text/html
echo.
echo ^<html^>^<head^>^</head^>^<body^>
echo ^<H1^>Hello world!!!^</H1^>
echo ^<PRE^>
FOR /F "usebackq delims==" %%i IN (`dir`) do echo %%i
echo ^</PRE^>
echo ^</body^>^</html^>