JavaServer Pages (JSP) là một công nghệ lập trình mã kịch bản phía máy chủ cho phép các nhà phát triển tạo ra các ứng dụng dựa trên Web đồng thời cho phép tận dụng các thành phần được phát triển bằng ngôn ngữ Java, tuân thủ theo đặc tả ngôn ngữ JavaBeans. Xét trên một vài khía cạnh thì JSP có thể so sánh với các ngôn ngữ scripting phía máy chủ khác như ASP và PHP. JSP giống như PHP ở khía cạnh cú pháp kiểu C của ngôn ngữ Java nhưng JSP lại có thể được thiết kế để có khả năng mở rộng thêm bằng cách dùng các thành phần như kiểu của ASP.
Nhưng khi bạn tiếp cận với nó, bạn sẽ thấy nó không giống các ngôn ngữ khác cùng loại. Cực nhanh, độc lập nền tảng, tính tương thích quy mô rất cao với sự trợ giúp từ các hàm xây dựng sẵn cho các công việc xử lý phân tán, tương thích với tất cả các web server quan trọng nhất và MIỄN PHÍ cho tất cả mọi người, cho tất cả các công việc kể cả thương mại.
Nhưng hiện tại JSP chưa đạt được mức độ phổ cập như chính ưu điểm của nó. Có 2 lý do chính:
1. Để tận dụng được tối đa ưu thế của JSP, một nhà phát triển cần làm việc thật tốt trên Java. Không may, điều này không khác gì một đòi hỏi khá cao đối với một nhà phát triển Web khi mà đa số họ chỉ muốn tập trung vào việc thiết kế và có thể dùng tới 1 hoặc 2 ngôn ngữ scripting language khi cần. Có nhiều sách và tài liệu miễn phí để học Java nhưng việc đầu tư cho Java chỉ để hướng đến JSP lại khá là mất nhiều thời gian, và nó tuỳ thuộc vào khả năng của mỗi cá nhân nên sẽ có khá nhiều thách thức do bản chất hướng đối tượng thuần tuý của Java .
2. Thiết lập một môi trường server để phát triển và kiểm nghiệm JSP có thể khá phức tạp, đặc biệt là một phần lớn các tài liệu thì lại viết bằng một thứ văn xuôi kĩ thuật khó hiểu với những đòi hỏi rằng bạn đã biết ít nhiều về JSP rồi. Nếu bạn mới bắt đầu học JSP, bạn muốn có một hướng dẫn từng bước một trong việc sử dụng và thiết lập một server chạy tốt trên máy tính của bạn để bạn có thể yên tâm học ngôn ngữ trước khi tìm hiểu các chi tiết khác về cấu hình server đó.
Trong bài báo này tôi sẽ cố gắng hướng dẫn các bạn thật tỉ mỉ cách thiết lập một Web server hỗ trợ JSP trên một PC dùng Windows. Hi vọng đây là một bài ở cấp độ jump-start vào thế giới JSP.
Tải về và cài đặt Apache Server
################################################################################
Trong khi có rất nhiều các server thương mại tuyệt vời khác cho việc kiểm tra đánh giá các trang JSP (gồm có IBM WebSphere, BEA WebLogic, và nhiều cái khác), thì bạn có thể dùng một công cụ web server miễn phí, mã nguồn mở và bảo mật cực mạnh, tương thích với nhiều nền tảng là Apache Server. Bằng cách dùng chung nó với Tomcat Server của Dự án Jakarta (ta sẽ thảo luận sau), chúng ta có thể trao cho nó khả năng xử lý các trang JSP, cũng như các công nghệ có liên quan khác như Java Servlets và Enterprise Java Beans (EJBs)!
Để có một bản Apache, bạn lên Dự án Apache HTTP Server tại http://httpd.apache.org để tải về bản Apache Server for Win32 mới nhất.
http://apache.towardex.com/httpd/binaries/…-x86-no_ssl.msi
Chạy file .msi mà bạn có; phần documentation thì có trên website của Apache Server. Bạn hãy chạy Apache như là một Windows service nhé.
Chú ý: Do cách thức Tomcat Server (chúng ta sẽ nó đến việc cài đặt ở phần sau) tương tác với Apache, nên thư mục cài đặt Apache phải không chứa một khoảng trống nào. Vì thế bạn không thể cài đặt nó trong thư mục Program Files theo mặc định của Apache. Ví dụ, bạn hãy cài vào C:\, khi đó chương trình Apache 2.x sẽ copy các file của nó trong thư mục C:\Apache2\
Khi quá trình cài đặt này kết thúc thì bạn đã có trong máy tính của mình một Web server. Có thể bạn sẽ thấy một dòng lỗi nói rằng không có một dịch vụ nào được lập ra có tên là “Apache2″. Đừng ngại, chúng ta sẽ xử lý sau.
Để cái server này làm việc theo ý bạn thì bạn cần ra quyết định cho nhiệm vụ của nó; nghĩa là config cho nó. Trên Start menu, vào Programs, Apache HTTP Server 2.0.47, Configure Apache Server, vào Edit the Apache httpd.conf Configuration File. Tìm dòng có chuỗi Listen 80. 80 là cổng mà Apache được nhiệm vụ gác. Nếu bạn đã cài một web server khác thì cổng 80 đã có thể được sử dụng rồi và bạn phải chọn một cổng khác cho Apache. Cổng phổ dụng nhất cho một web server thứ hai là 8080 nhưng ở đây chúng ta giả sử là chọn 8000.
Xuống dưới chút bạn sẽ thấy một dòng có chữ ServerName. Nếu có kí hiệu chú thích cho dòng đó hãy bỏ nó đi. Hãy đưa nó thành 127.0.0.1:8000 (trong đó 8000 là Listen port bạn đã lập ở trên) nếu như server của bạn không có hostname hoặc địa chỉ IP cố định.
Thế là xong phần httpd.conf. Lưu giữ lại sự thay đổi đó. Khởi động lại Apache. Nếu installer gặp khó khăn trong vấn đề khởi động server lúc ban đầu (ví dụ bạn nhận được thông báo ‘no installed service named “Apache2″‘), đầu tiên bạn sẽ cần cài đặt dịch vụ. Để làm vậy, bạn cần mở Command Prompt.
Để cài đặt dịch vụ Apache Server, bạn chạy apache.exe với tham số là -k install, tệp này nằm trong thư mục con mang tên bin trong thư mục cài đặt Apache2
C:\>cd \Apache\Apache2
C:\Apache\Apache2>bin\apache.exe -k install
C:\Apache\Apache2>exit
Khởi động lại server: Vào Start menu, vào Programs, Apache HTTPD Server, Control Apache Server, Restart. Apache Server Monitor trong khay hệ thống của Windows sẽ chuyển màu xanh thay vì màu đỏ. Apache đã chạy. Mở trình duyệt và gõ http://localhost (hay http://localhost:8000 nếu bạn đã thay đổi dòng Listen trong httpd.conf ).
Một trang với logo có chữ Powered by Apache ở cuối trang sẽ xuất hiện, nghĩa là Apache đã được cài đặt đúng. Xong việc!
Tải về và cài đặt Tomcat
################################################################################
Bởi vì chú Apache không phải là một gã đa năng. Gã chỉ là một người chỉ tay năm ngón (JSP quá phức tạp để có thể chỉ dùng một module Apache đơn giản làm công việc hỗ trợ), làm công việc quản lý nên muốn lão giải quyết ba cái vụ JSP cho bạn thì hãy tuyển cho lão một nhân vật chuyên về JSP để đến khi chúng cần phân tích một trang JSP, chúng ta gửi một yêu cầu đến Apache và Apache sẽ xem xét. Thấy nó có đuôi JSP, gã sẽ tự động chuyển đến anh chàng phụ trách JSP. Vậy, chúng cần đến một chương trình hoàn toàn mới để xử lý các tác vụ liên quan đến JSP (nghe thì có vẻ như CGI nhưng hoàn toàn không phải thế). Chương trình đó có tên Tomcat, và là một dự án do Apache Group viết.
Tomcat trên thực tế tự nó đã là một Web server đơn giản. Nó không hỗ trợ tất cả các tính năng cao cấp của Apache, vì đấy đâu phải nghề của nó! Kết hợp Tomcat và Apache lại, bạn có một hệ thống hỗ trợ JSP đầy đủ trong khi vẫn bảo đảm được hiệu suất làm việc cũng như tính khả mở (PHP, Perl, SSL, etc.) của Apache.
Để chạy được chương trình Mèo Tôm, vốn là một lão Java và giúp Mèo Tôm xử lý được vụ JerrySP, đầu tiên bạn cần cài đặt Java 2 Software Development Kit (Java 2 SDK). Nhớ cài Java 2 SDK cho Win32 chứ không phải là JRE nhé. Giả sử ta nhốt chú J2SE này trong C:\j2sdk1.4.2. Hãy đưa thư mục C:\j2sdk1.4.2\bin vào PATH hệ thống của bạn (tôi đã viết trong một bài khác – CEO).
Tải về bản TomCat mới nhất từ trang dự án Jakarta: http://jakarta.apache.org/builds/jakarta-t…se/v4.1.24/bin/ hay http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/. Bản 5.0.x hiện đã có đến bản 5.0.4 Alpha và bạn nên cài đặt bản này vì Tomcat thế hệ thứ 3 và 4 sẽ trở thành các phiên bản cũ kĩ khi mà vào cuối năm nay Sun và hệ thống các công ty hỗ trợ Java sẽ chính thức tung ra đặc tả JSP 2.0 và Servlet 2.4 với nhiều thay đỏi và các tính năng mạnh mẽ hơn. Cách cài Tomcat 5.0.3 thì tôi đã viết trong một bài khác. Ở đây tôi giới thiệu các cài jakarta-tomcat-4.1.18-LE-jdk14, bản Tomcat được dùng phổ biến nhất hiện nay.
Lấy về xong thì giải nén vào C:\Apache2. TomCat sẽ được đưa vào một thư mục có tên jakarta-tomcat-4.1.18-LE-jdk14.
Tomcat đòi hỏi bạn phải thiết lập một số biến môi trường trước thì nó mói chịu chạy đúng cho. Làm thế nào thì còn tuỳ thuộc vào phiên bản Windows mà bạn dùng. Windows 98 trở về trước thì mở C:\autoexec.bat trong Notepad và thêm vào 2 dòng kiểu như:
SET JAVA_HOME=C:\j2sdk1.4.2
SET CATALINA_HOME=C:\Apache2\Tomcat
Khởi động lại hệ thống.
Trong ME, bạn chạy MSConfig (Start -> Run -> gõ msconfig and click OK). Trong tab ‘Environment’ , thêm vào 2 biến trên (JAVA_HOME, CATALINA_HOME) cùng với giá trị đi kèm với chúng, và đánh dấu check để chúng enabled. Kích OK rồi reboot. Nếu Windows vẫn không kích hoạt các thay đổi này thì bạn cần làm lại thêm lần nữa.
Trong Windows NT/2000/XP, 2 biến trên cần được đưa vào vị trí của các biến môi trường cấp hệ thống. Hãy đăng nhập vào dưới tư cách là một administrator và đưa các biến hệ thống vào thông qua tab Environment của cửa sổ System Properties (trong XP, kích nút Environment Variables ở cuối tab này và bổ sung thêm một số biến môi trường thì coi như bạn đã có Tomcat.
Để thử nghiệm, bạn mở cửa sổ MS-DOS Prompt gõ dòng sau và ấn Enter:
“%CATALINA_HOME%”\bin\startup (minh họa)
Bạn có thể thấy một thông báo lỗi “Out of environment space”, và cửa sổ mở ra để chạy Tomcat sẽ nhanh chóng đóng lại vì lỗi trên. Để sửa lỗi, hãy kích chuột vào icon bé tẹo bên góc trái cao nhất của cửa sổ MS-DOS Prompt và chọn Properties từ menu. Trên tab Memory, thay đổi thiết lập môi trường Initial thành 4096. Kích OK, và đóng cửa sổ đó lại và mở một cửa sổ mới trước khi bắt đầu làm lại.
Nếu mọi việc xuôn xẻ, câu lệnh startup sẽ hiển thị các giá trị của một số biến môi trường, và sau đó Tomcat sẽ mở ra một cửa sổ mới có tiêu đề Tomcat. Cửa sổ đó sẽ hiển thị một số thông báo ngắn rằng ‘Tomcat-Standalone’ đang chạy. Chúc mừng ## Tomcat đang hoạt động!
Tomcat tự nó đã là một web server đơn giản, và chúng ta có thể sử dụng tính năng này để xem nó hoạt động đã đúng chưa. Web server của Tomcat được thiết lập để sử dụng cổng 8080 làm mặc định, do vậy hãy mở Web browser của bạn và gõ địa chỉ http://localhost:8080/. Bạn sẽ thấy trang chủ của Tomcat, với các liên kết đến một số ví dụ đã nằm sẵn trên server đó.
Bạn hãy thử dùng các ví dụ đó và chú ý rằng trong lần đầu tiên thì các ví dụ JSP chạy khá chậm nhưng trong những lần truy cập sau đó thì tốc độ lại cực kì nhanh. Điều này là do khi một trang JSP được truy cập lần đầu tiên thì Tomcat cần biên dịch nó thành một Java Servlet, vốn là một mẩu mã Java thuần tuý mà có thể chạy rất nhanh để xử lý các yêu cầu. Servlet đó sau đấy sẽ được giữ trong bộ nhớ để xử lý các yêu cầu đến sau đó hướng đến cùng một trang JSP với một tốc độ nhanh khủng khiếp.
Sau khi thực hiện xong các thiết lập với Tomcat, bạn hãy đóng chương trình này lại bằng cách chạy lệnh shutdown theo cùng một cách mà bạn đã dùng lệnh startup (”%CATALINA_HOME%”\bin\shutdown). Của sổ Tomcat sẽ đóng lại một ít giây sau đó.
Chạy Tomcat một cách tự động
Nếu bạn đã cài đặt Apache để nó chạy tự động như là một dịch vụ thì bạn có thể muốn làm được một điều tương tự với Tomcat. Không may là không có cách nào tự động hoá quá trình chuyển Tomcat thành một dịch vụ dưới Windows 95/98/ME. Một số người sành sử dụng một công cụ biên tập registry có thể đưa nó chạy tự động lúc startup, nhưng vấn đề environment space đã sửa chữa ở trên lại có thể xuất hiện trở lại. Thay thế cho cách làm này chúng ta hãy tạo ra một file startup.bat file trong thư mục bin của Tomcat và đặt shortcut của nó vào thư mục Startup của bạn. Hãy điều chỉnh environment space của shortcut đó như mô tả ở trên nếu cần. Bạn sẽ liên tục phải thấy một cửa sổ ‘java’ window mà Tomcat hiển thị khi chạy (mặc dù nhiều người phiêu lưu có thể cố gắng viết lại mã kịch bản trong startup.bat của Tomcat để sử dụng javaw.exe thay vì java.exe để chạy chương trình mà không có cửa sổ DOS!).
Trong Windows NT/2000/XP, Tomcat có thể chạy như là một dịch vụ giống như Apache. Bình thường thì khi tôi cài đặt Tomcat 5.0.3 trên Windows XP SP1 thì chỉ cần chọn cài đặt Tomcat như là một dịch vụ đã đủ. Nhưng với Tomcat 4 và các hệ điều hành khác XP thì các bạn có thể phải làm thêm một số bước. Để làm được điều này bạn cần phải gõ một lô một lốc các câu lệnh khó chịu trong MS-DOS Command Prompt, nhưng bạn cũng phải làm điều đó một lần mà tốt nhất là copy các dòng lệnh dưới đây vào một file .bat để thực thi. Đây là câu lệnh:
“%CATALINA_HOME%\bin\tomcat.exe” -install Tomcat “%JAVA_HOME%\jre\bin\server\jvm.dll” -Djava.class.path=”%CATALINA_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar” -Dcatalina.home=”%CATALINA_HOME%” -start org.apache.catalina.startup.BootstrapService -params start -stop org.apache.catalina.startup.BootstrapService -params stop -out “%CATALINA_HOME%”\logs\stdout.log -err “%CATALINA_HOME%”\logs\stderr.log
Khi bạn chạy câu lệnh này, bạn sẽ nhận được một dòng thông báo sau “The service was successfully installed.” Kể từ thời điểm đó, Tomcat sẽ tự động chạy mỗi lần hệ thống khởi động lại, và có thể chạy khi bạn khởi động nó và làm ngừng nó từ applet Services trong Windows Control Panel (dưới Administrative Tools). Bạn có thể chạy hoặc làm ngừng Tomcat bằng cách gõ NET START TOMCAT và NET STOP TOMCAT ở MS-DOS Command Prompt. Nếu bạn cài đặt Tomcat vào thư mục Tomcat4 thì bạn gõ NET START TOMCAT4…Minh họa
Nếu có một lúc nào đó bạn muốn uninstall dịch vụ Tomcat, bạn hãy dùng câu lệnh sau:
“%CATALINA_HOME%\bin\tomcat.exe” -uninstall Tomcat
Liên kết Apache và Tomcat bằng mod_jk
Bây giờ khi bạn đã có Apache và Tomcat chạy song song bên nhau, bạn cần liên kết chúng lại với nhau để Apache có thể xử lý các yêu cầu JSP bằng cách chuyển chúng về Tomcat. Thực sự ban có tới vài ba cách để làm điều đó, và tất cả điều liên quan đến việc cài đặt một môn đun Apache. Giải pháp đầu tiên là dùng mod_jk, một môn đun được thiết kế để Tomcat 3.x có thể làm việc được với nhiều server và nó sử dụng một giao thức khá hiệu quả để giao tiếp với Tomcat.
Với Tomcat 4.0, một cơ chế mới dùng vào việc liên kết Apache và Tomcat đã đưa đưa ra: mod_webapp. Mô đun Apache này cung cấp một đường truyền thông hiệu quả giữa Apache và Tomcat, và nó cực kì dễ lên cấu hình. Không may, nhà phát triển phụ trách về mod_webapp lại rất không ưa Windows, do vậy mod_webapp không làm việc một cách ổn định trên nền tảng đó.
Cuối cùng, một cơ chế hoạt động chắp vá của mod_jk có tên mod_jk2 đã xuất hiện trong Tomcat 4.1. Nó được viết ra đê có tính mô đun hơn, tạo hiệu quả hoạt động cao hơn, và cải thiện tính dễ sử dụng. Không may, tài liệu về mod_jk2 vẫn chỉ là một bản phác thảo; do vậy, mod_jk sẽ là môn đun mà chúng ra sẽ cài đặt trong bài viết này.
Cơ chế mod_jk
mod_jk chia làm 2 phần: một trình bổ trợ connector dùng cho Tomcat và một môn đun Apache. Trình bổ trợ connector có trong tất cả các bản Tomcat 4.1. Phần còn lại là một môn đun Apache module, ta sẽ bàn sau.
Do Apache 2.0 còn đang trong quá trình xây dựng nên nó liên tục thay đổi, các phiên bản cũ hơn của môn đun mod_jk sẽ có thể thường xuyên không tương thích với các phiên bản mới hơn của Apache 2.0. Nói chung là bạn cần phải có một bản mod_jk đã được biên dịch sau phiên bản Apache 2.0 mà bạn muốn sử dụng. Nhóm Jakarta luôn cố gắng phát hành một bản mod_jk tải về được và tương thích với phiên bản Apache 2.0 mới nhất trên web site của họ.
http://jakarta.apache.org/builds/jakarta-t….2.2/bin/win32/. Hiện tại file này có tên mod_jk-2.0.45.dll để nói rõ rằng nó được biên dịch để làm việc với Apache 2.0.45. Tải file này về và đặt tên nó là mod_jk.dll, và sao chép nó vào thư mục con modules trong thư mục cài đặt Apache 2.0 (C:\Apache\Apache2\modules).
Khi môn đun Apache đã được cài đặt và trình bổ trợ của Tomcat cũng đã được đưa vào trong server, thì chúng ta phải cấu hình cho cả Apache lẫn Tomcat để có thể sử dụng mod_jk trong việc kết nối hoạt động của hai chương trình này với nhau.
Lên cấu hình cho Tomcat
Để dùng mod_jk với Tomcat, bạn hãy đặt file server.xml vào thư mục con conf nằm trong thư mục chứa Tomcat và mở nó trong một trình soạn thảo text nào đó như Notepad.
Tìm đến thẻ <Server port=”8005″ …> nằm gần đầu file và thêm vào như sau:
<Listener className=”org.apache.ajp.tomcat4.config.ApacheConfig” modJk=”c:/Apache/Apache2/modules/mod_jk.dll” jkDebug=”info” workersConfig=”c:/Apache/Tomcat/conf/jk/workers.properties” jkLog=”c:/Apache/Tomcat/logs/mod_jk.log” />
Hoặc thay thế các đường dẫn in đậm với các dòng trên nếu chúng khác biệt.
Tìm đến giữa file, tìm thẻ <Host name=”localhost” …> và thêm dòng sau đây vào ngay sau đó:
<Listener className=”org.apache.ajp.tomcat4.config.ApacheConfig” append=”true” />
Đóng server.xml, và sau đó tạo ra một thư mục mới có tên jk nằm trong thư mục đó (conf). Thư mục này là nơi chúng ta sẽ tạo ra file workers.properties đã nhắc đến trong thẻ <Listener> đầu tiên ở trên. Mở trình soạn thảo text ưa thích của bạn (notepad, editplus..) và gõ đoạn mã sau vào:
workers.tomcat_home=c:\Apache\Tomcat workers.java_home=$(JAVA_HOME) workers.th=$(workers.tomcat_home) ps=\ worker.list=ajp13, ajp14 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.lbfactor=1 worker.ajp14.port=8010 worker.ajp14.host=localhost worker.ajp14.type=ajp14 worker.ajp14.secretkey=secret worker.ajp14.credentials=myveryrandomentropy worker.ajp14.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=ajp13 worker.inprocess.type=jni worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar worker.inprocess.cmd_line=start worker.inprocess.jvm_lib=$(workers.th)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll worker.inprocess.stdout=$(workers.th)$(ps)logs$(ps)inprocess.stdout worker.inprocess.stderr=$(workers.th)$(ps)logs$(ps)inprocess.stderr
Điều chỉnh dòng tomcat_home in đậm ở trên cho phù hợp với cách cài đặt TomCat của bạn. Lưu file chứa các dòng trên vào một file có tên workers.properties nằm trong thư mục jk mới tạo.
Khởi động lại Tomcat. Nếu bạn bỏ qua một bước nào đó thì Tomcat sẽ tự động tạo ra một thư mục khác nằm trong thư mục conf của nó có tên là auto và trong đó thì có một file là mod_jk.conf. File này chứa mọi thứ mà Apache cần biết để sử dụng Tomcat trong việc xử lý các trang JSP.
Lên cấu hình cho Apache
Do Tomcat tự động tạo ra tất cả các thông tin cấu hình cho Apache trong tệp tin mod_jk.conf, nên tất cả những gì mà chúng ta cần làm là chỉ cho Apache biết file đó! Trên menu Start, vào Programs, Apache HTTP Server, Configure Apache Server, Edit the Apache httpd.conf Configuration File. Cuộn xuống chừng 1/4 file để đến mục có tiêu đề Dynamic Shared Object (DSO) Support. Sau các dòng LoadModule xuất hiện dưới tiêu đề này, bạn thêm dòng sau (nhớ điều chỉnh cho phù hợp với thư mục Tomcat của bạn):
Include “C:/Apache/Tomcat/conf/auto/mod_jk.conf”
Sau đó hãy lưu sự thay đổi này vào httpd.conf, và khởi động lại Apache. Bạn có thể sử dụng icon Test Configuration trên Start Menu dưới mục Configure Apache Server nếu bạn thấy việc khởi động lại Apache gây phiền phức. Để thử nghiệm bạn nên truy cập đến http://localhost%3