2013-04-20 2 views
0

여기가 저의 첫 번째 질문입니다. 어딘가 잘못되었을 때 용서해주십시오. Ajax를 사용하여 html 페이지에서 서버의 쉘 스크립트를 호출하려고합니다. Ajax 함수가 java 조치를 호출하고 있으며이 Java 조치 클래스가 쉘 스크립트를 호출 중입니다. 쉘 스크립트는 실행되는 출력을 작성합니다. 쉘에 표시된 것과 같은 방식으로 브라우저에 출력 결과를 표시하려고합니다.브라우저에 쉘 스크립트의 출력을 보여줍니다.

내가 지금하고있는 방법은 파일의 셸 출력을 작성한 다음 웹 페이지에 해당 파일의 내용을 표시하는 것입니다. 그러나 원하는 모든 것은 웹 페이지의 출력을 즉시 표시하는 것입니다. 스크립트는 그것을 씁니다. 스크립트는 실행하는 데 2 ​​분이 걸리고 실행 중에 셸의 출력을 계속 작성합니다.

감사

답변

0

한 가지 방법은 ProcessBuilder 클래스를 통해 start() 쉘 스크립트로 할 것이다.

일단 Process 인스턴스가 있으면 getOutputStream()getErrorStream()을 통해 표준 출력 및 표준 오류 스트림을 각각 얻을 수 있습니다.

이러한 InputStream에는 찾고있는 출력이 포함되어 있습니다. 이를 읽으면 서블릿 또는 JSP의 응답 출력 스트림에 출력을 쓸 수 있습니다. waitFor()과 같은 작업을 수행하고 출력을 읽고 서블릿의 응답에 쓰레드를 생성해야합니다.

+0

답장을 보내 주셔서 감사 드리며 해결해 드리겠습니다. – user2110167

+0

printwriter, 을 사용하여 내 셸 스크립트의 스트림을 HTML 응답으로 리디렉션 할 수 있습니다. 그러나 스트림이 완료되지 않은 한 내 페이지가 멈추게됩니다 (서버에서 전체 응답이 올 때까지) 스크립트에서 한 줄은 "나는 자고있다"라고 말하며 그리고 나서 5 분 동안 자고있다. . 내가 웹 페이지에 쓰여지 자마자 "나는 자고있다"를 인쇄하고 싶다. 다음 출력을 기다린다. 셸 스트림이 응답 스트림에 쓰고 있다면, 나는 어떤 데이터를 얻을 수 있는가? 응답 스트림에서 스트림이 플러시되거나 닫히기 전에? – user2110167

관련 문제