Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Dùng SERVLET – JSP triệu gọi EJB

DÙNG SERVLET – JSP TRIỆU GỌI EJB

PDF version here

Trong bài này, tôi sẽ hướng dẫn cách thức sử dụng JSP&Servlet để truy xuất EJB.

Thực ra, cách thức truy cập EJB cũng giống như trong java application. Đầu tiên ta phải thiết lập môi trường, sau đó dùng JNDI lookup bean trong JBOSS được đối tượng home, tiếp theo dùng phương thức create để tạo đối tượng remote hoặc triệu gọi các phương thức. Nhưng bởi vì là Servlet nên cách thức viết code và cấu hình cũng có vài điểm khác biệt.

Chúng ta sẽ sử dụng lại Order EJB đã thảo luận trong bài trước.

Tạo Servlet

1.    Trong thư mục webapps của %TOMCAT_HOME%, ta tạo thư mục TestServlet. Trong thư mục này ta tạo file TestServlet.jsp có nội dung sau:

<%@ page session=”true” errorPage=”error.html”%><html>

<head>

<title>Call EJB From Servlet</title>

</head>

<body>

<font face=”Times New Roman,Times” size=”+3″>

Call EJB From Servlet

</font>

<hr><p>

<center>

<form action=”test” method=”POST”>

<input type=”submit” name=”Submit” value=”Call EJB”>

</form>

</center>

<p>

</body>

</html>

1.    Tạo thư mục WEB-INF trong thư mục TestServlet

2.    Tạo thư mục classes trong thư mục WEB-INF

3.    Trong thư mục classes ta tạo tập tin MyServlet.java có nội dung sau:

import javax.servlet.*;import javax.servlet.http.*;

import java.io.*;

import order.*;

import javax.naming.*;

import java.util.*;

public class MyServlet extends HttpServlet{

private OrderHome orderHome;

private Context ctx;

private Order order = null;

public void init(ServletConfig config) throws ServletException {

System.out.println(“SERVLET INIT”);

super.init(config);

try {

System.setProperty(“java.naming.factory.initial”,

“org.jnp.interfaces.NamingContextFactory”);

System.setProperty(“java.naming.provider.url”,

“localhost:1099”);

System.out.println (“Starting Client . . .\n”);

ctx = new InitialContext();

Object object = ctx.lookup(“order/Order”);

orderHome = (OrderHome)

javax.rmi.PortableRemoteObject.narrow(object,OrderHome.class);

}

catch (Exception e) {

throw new ServletException(e.toString());

}

}

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

doGet(req,res);

}

public void doGet (HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

try{

String html=”<tr><td>OrderId</td><td>StudentId</td>”+

“<td>Amount</td><td>OrderDate</td><td>Status</td></tr>”;

Collection col=orderHome.findByStatus(“Submitted”);

Enumeration orders=Collections.enumeration(col);

while( orders.hasMoreElements() ) {

order=(Order)orders.nextElement();

html+=”<tr><td>”+order.getOrderId()+”</td>”

+”<td>”+order.getStudentId()+”</td>”

+”<td>”+order.getAmount()+”</td>”

+”<td>”+order.getOrderDate()+”</td>”

+”<td>”+order.getStatus()+”</td>”

+”</tr>”;

}

res.setContentType (“text/html”);

PrintWriter out = res.getWriter();

out.println (“<html>”);

out.println (“<head> <title> EJB Servlet Demontraction</title></head>”);

out.println (“<Body>”);

out.println (“<h1>Call EJB From Servlet</h1>”);

out.println (“List of findByStatus() method”);

out.println (“<table border=’1′ width=’80%’>”);

out.println (html);

out.println (“</table>”);

out.println (“</body> </html>”);

}catch(Exception ex){

}

}

}

4.    Copy thư mục order gồm có 2 tập tin Order và OrderHome vào thư mục classes

5.    Biên dịch file MyServlet.java bằng cách gõ lệnh javac MyServlet.java

6.    Trong thư mục WEB-INF tạo tập tin web.xml có nội dung sau

<?xml version=”1.0″ encoding=”UTF-8″?><web-app xmlns=”http://java.sun.com/xml/ns/j2ee&#8221;

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221;

xsi:schemaLocation=”http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&#8221;

version=”2.4″>

<display-name>Test servlet Application</display-name>

<description>

Test servlet Application

</description>

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>MyServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>

</web-app>

7.    Tạo thư mục lib trong WEB-INF, copy các file jar có liên quan trong thư mục %JBOSS_HOME%\client để thực thi ứng dụng EJB vào đó như : activation.jar, concurrent.jar, jboss-client.jar, jboss-common-client.jar, jboss-j2ee.jar, jboss-remoting.jar, jboss-serialization.jar, jbosssx-client.jar, jnp-client.jar, jboss-transaction-client.jar)

8.    Đóng gói thư mục order ở bước 4 bằng cách gõ lệnh jar cvf order.jar order/*.*

9.    Copy order.jar vào thư mục lib ở bước 7

10.  Start Tomcat

11.  Tham khảo địa chỉ : http://localhost:8086/TestServlet/TestServlet.jsp

CHÚC THÀNH CÔNG!

2 Responses to “Dùng SERVLET – JSP triệu gọi EJB”

  1. ncth01 said

    thay huong dan dum ban em thuc hanh cach tao mot trang web dung jsp

  2. Nguyễn Phước Đại said

    Em muốn tạo 1 table trong trang jsp thì làm như thế nào vậy thầy?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: