2012-11-21 3 views
0

애플릿을 가지고 있는데, 동일한 서버에있는 프로그램이 exec입니다.서버에서 애플릿을 실행하는 애플릿

Runtime c = Runtime.getRuntime(); 
window.finishedQuery("Got Runtime..."); 
Process p = c.exec(String.format("cmd"); 
window.finishedQuery("Excecuted CMD"); 

두 번째 라인은 브라우저에서 작동하지 않지만 넷빈즈 애플릿 뷰어에서는 작동합니다.

window은 내 애플릿이고 got runtime은 표시하지만 excecuted CMD은 표시하지 않습니다. 나는 다음과 같은 메시지가 나타나면 구글 크롬에서

: 나는 사용자의 PC/프로그램에 접근하려는

access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute") 

내가 애플릿을 추측 "생각"을,하지만 난에 프로그램을 시작 할 섬기는 사람.

무엇을해야합니까?

+1

"작동하지 않음"에 대해 자세히 설명해 주시겠습니까? 어떻게 알았어? 너는 무엇을 기대하고 실제로 무엇이 일어나는가? – GargantuChet

+0

글쎄, 창문은 내 애플릿이고, "EXCELED CMD"는 아니지만 "자세한 내용을 표시하는 방법을 모르겠다"라는 표시가 있습니다 ... 애플릿이 "사용자가 접근하고 싶다"고 생각합니다. PC/programms,하지만 서버에서 programm을 시작하고 싶습니다 : S – user1843351

+0

괜찮습니다. Google 크롬에서 다음 메시지가 나타납니다. "액세스가 거부되었습니다 ("java.io.FilePermission ""< ""실행 ")" – user1843351

답변

2

애플릿으로 작성된 경우 Process클라이언트 시스템의 JVM에 작성됩니다. 해당 VM은 서버에서 메소드를 호출 할 수 없습니다.

가장 좋은 방법은 샌드 박스 애플릿이 웹 서버 (서블릿, JSP, PHP, ASP ..)를 호출하는 것과 동일한 호스트에서 호출하도록하는 것입니다. 웹 서비스에서 Process 을 생성하고 소비/표시를 위해 애플릿에 출력을 제공하십시오.

1. 또한, 모든 권장 사항을 구현하는 runtime.exec Wiki & 링크 된 자바 세계의 기사를 통해 이동하지만, 1.5의 Process을 만들 ProcessBuilder를 사용합니다.

+0

To 당신이 바로 : 나는이 프로세스를 구현하는 두 번째 애플릿을 작성해야한다. 첫 번째 애플릿에서 두 번째 애플릿을 호출하고 그 결과를 얻습니다. 애플릿 중 하나에 권한을 부여해야합니까? 쉬운 방법이 있습니까? – user1843351

+0

아니오 두 개의 애플릿을 의미하지는 않습니다. 업데이트를 참조하십시오. Java World 관련 기사를 아직 읽지 않았습니까? 업데이트 된 코드를 질문 편집으로 표시하십시오. –

+0

자, 도와 줘서 고마워. 자바에서 서비스를 만들기위한 튜토리얼을 발견 했어. – user1843351

0

좋아요, 나는 프로세스를 생성하고 wsimport를 통해 "클라이언트 클래스"를 만들었습니다 ... 모든 것이 넷빈 애플릿 관리자에서 잘 작동하지만, 브라우저에서 애플릿을 시작할 때 애플릿이 서비스, ​​심지어 내 애플릿을 로컬 웹 서버 (xampp)에 넣고 동일한 클라이언트에서 서비스를 시작할 때도 마찬가지입니다. 둘 다 같은 클라이언트에 있다면 애플릿에 서명하지 않아도 될까요? (이 질문을 새로운 질문이나 내 질문에 대한 답변으로 만들어야하는지 확인하십시오)

관련 문제