2010-01-24 24 views
42

Tôi có một trang web và muốn cho phép người dùng chạy tệp Java trên máy chủ từ trang web.Chạy tệp lớp Java từ tập lệnh PHP trên trang web

Tôi muốn người dùng nhấp vào một nút sẽ chạy tệp Java trên máy chủ VÀ mọi thứ được in ra tiêu chuẩn bởi chương trình Java sẽ được in trên trang web để người dùng xem.

Làm cách nào để thực hiện điều này (gọi chương trình Java từ PHP và nạp tiêu chuẩn từ tệp Java trở lại trang web PHP trong thời gian thực)?

Cập nhật:

Cảm ơn câu trả lời về cách chạy chương trình Java từ PHP. Tuy nhiên, tôi cũng muốn có thể, như chương trình Java đang in để stdout, nơi nó sẽ in ra rất nhiều văn bản khi nó đang thực thi, để có thể in ra trên trang web để người dùng có thể xem giai đoạn nào Chương trình Java đang được thực thi.

Làm cách nào để thực hiện điều này và yêu cầu bất kỳ AJAX hoặc JavaScript bổ sung hay bất kỳ thứ gì như thế?

Trả lời

44

Các PHP exec() chức năng là con đường để đi, nhưng bạn nên rất cẩn thận đến những gì bạn cho phép để thực hiện .. nói cách khác không dựa vào người dùng nhập vào vì nó có khả năng có thể thỏa hiệp của bạn toàn bộ máy chủ.

Gọi trình chạy ứng dụng Java bằng exec, bạn có thể thực thi bất kỳ ứng dụng Java nào từ PHP, ví dụ:

<?php exec("java -jar file.jar arguments", $output); ?> 
+1

HI james, thực hiện java là đem lại cho tôi sự cho phép lỗi bị từ chối. người dùng của tôi là apache. –

14

Kể từ khi bạn đề cập đến thời gian thực tôi sẽ đề nghị thiết lập một PHP để cầu Java. Khởi tạo JVM ở mỗi yêu cầu chiếm rất nhiều tài nguyên.

PHP/Java Bridge

Cầu PHP/Java là một thực hiện của một streaming, giao thức mạng dựa trên XML, có thể được sử dụng để kết nối một nguồn gốc động cơ kịch bản , ví dụ PHP, Đề án hoặc Python, với một máy ảo Java hoặc ECMA 335 . Nhanh hơn 50 lần nhanh hơn RPC cục bộ qua SOAP, yêu cầu ít tài nguyên hơn ở phía máy chủ web . Nó nhanh hơn và đáng tin cậy hơn giao tiếp trực tiếp qua Giao diện Java Native và không yêu cầu thành phần bổ sung để gọi thủ tục Java từ thủ tục PHP hoặc PHP từ Java.

4

Tôi thà quấn lớp Java trong một applet Java, mà sau đó có thể được gọi từ một cuộc gọi javascript trên các mặt hàng: xem http://www.rgagnon.com/javadetails/java-0170.html

Ngược lại, nếu cuộc gọi ném rất nhiều văn bản để đầu ra tiêu chuẩn hoặc lớp phải được chạy trên máy chủ vì phụ thuộc hệ thống, gọi từ php exec là con đường để đi, nhưng bạn có thể sẽ cần một cái gì đó như để hiển thị văn bản trên máy khách trong thời gian thực. Có các triển khai cho các bộ công cụ javascript khác nhau như Dojo hoặc jQuery.

Đối với phía máy chủ, có vẻ như là một triển khai sao chổi trong php here.

Tôi hy vọng điều này sẽ giúp ...

Philippe

Các vấn đề liên quan