2013-06-11 64 views
13

Tôi đang xây dựng một dịch vụ web với Java không sử dụng JSP hoặc các servlet và muốn chạy nó trên máy chủ Apache HTTP của tôi mà không cần phải cài đặt và cấu hình Tomcat. Điều này có thể (dễ dàng), và làm thế nào tôi có thể đi về nó?Làm cách nào để chạy ứng dụng Java trên Apache 2.2 mà không có Tomcat?

Tôi đã tìm kiếm thông tin về điều này và điều duy nhất tôi gặp phải là trình kết nối Tomcat mod_jk vẫn yêu cầu cài đặt Tomcat. Tui bỏ lỡ điều gì vậy?

+1

Tôi thấy không chắc rằng bạn đang xây dựng một trang web bất cứ thứ gì trong Java mà không có servlet, vì vậy câu trả lời gần như chắc chắn là không. Nếu bạn có thể giải thích làm thế nào bạn không sử dụng servlets, thì có thể có một câu trả lời cho bạn. –

+0

Những gì apache được sử dụng cho hoặc là a) cung cấp nội dung tĩnh (hình ảnh, âm thanh, vv) và b) cân bằng tải, vì nó nhanh hơn Tomcat. Nhưng điều này được thực hiện * phối hợp * với Tomcat phục vụ nội dung do java tạo ra. – SJuan76

+0

Có thể, nếu bạn muốn phát minh lại bánh xe và làm những gì Tomcat đã làm. _Điều này có thể (dễ dàng) _ dễ dàng hơn việc cài đặt và cấu hình Tomcat, không. –

Trả lời

6

Trước hết, Servlets là những điều cơ bản về Java để phát triển Web. Vì vậy, bất kể phát triển web bạn đang làm, như Dịch vụ Web, bạn sẽ cần một Servlet Container, như Tomcat.

Vì vậy, câu trả lời cho câu hỏi của bạn là "bạn không thể chạy nó chỉ trên Apache HTTP Server", bởi vì nó không phải là một Servlet Container.

0

Không, Tomcat, cầu cảng, JBoss hoặc Glassfish là khá nhiều bắt buộc

3

Nó không phải là hoàn toàn rõ ràng những gì bạn muốn làm, nhưng tôi sẽ đoán rằng bạn muốn chạy một ứng dụng Java độc lập có thể xử lý các yêu cầu HTTP và hiển thị nó thông qua Apache. Nếu đó là trường hợp, bạn có thể làm điều đó bằng cách cấu hình Apache với mod_proxy. This có thể là một ví dụ tốt về cách thực hiện điều này.

11

Tất nhiên Điều đó là có thể. Bạn có thể làm điều đó bằng cách sử dụng mod_cgi.

Một ví dụ rất đơn giản sẽ là như thế này:

public class HelloWorld 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello Java CGI world!"); 
    } 
} 

và sau đó một tập tin script (HelloWorld.shtml -Không quên thực hiện phép) mà thực hiện các lớp Java

#!/bin/bash 
echo "Content-type: text/html" 
echo "" 

/usr/bin/java HelloWorld 

Trong Apache conf, chỉ cần xác định thư mục tập lệnh của bạn, như sau:

ScriptAlias /cgi-bin/ /Users/hectorsuarez/Proyectos/test/cgi-bin/ 
<Directory "/Users/hectorsuarez/Proyectos/test/cgi-bin"> 
    SetHandler cgi-script 
    Options ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 

Đó là tôi t !. Đây là một ví dụ rất đơn giản và tầm thường.

Điều này sẽ trở nên phức tạp vì bạn có thể cần một công cụ tạo mẫu và cách tốt hơn để quản lý các cuộc gọi CGI đến. Nhưng có, nó là có thể.

+2

Tránh làm điều này trong Perl là lý do tại sao servlets (và servlet container) được phát minh ở nơi đầu tiên (bởi "ở nơi đầu tiên", tôi có nghĩa là những năm 1990). Điều này sẽ không mở rộng. – michael

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