1. Trang chủ
  2. » Công Nghệ Thông Tin

Thực hành EJB (Enterprise Java Bean) Lab 8

15 198 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 1,09 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

IT Research Department @BKAP 2015 Page 1 / 15Mục tiêu - Cấu hình JDBC Connection Pool trên GlassFish Server - Tạo và thực thi Session Bean với Bean-Managed Transasction Phần I Bài tập

Trang 1

IT Research Department @BKAP 2015 Page 1 / 15

Mục tiêu

- Cấu hình JDBC Connection Pool trên GlassFish Server

- Tạo và thực thi Session Bean với Bean-Managed Transasction

Phần I Bài tập step by step

Bài 5.1 Xây dựng một ứng dụng chuyển tiền tài khoản

Step 1: Tạo Database Banking

 Tạo bảng Accounts có các trường

 AccountNo: Nvarchar(10), Primary Key

 Balance: Numeric(20,2)

 Tạo 2 bản ghi bảng Accounts

Trang 2

Step 2: Copy sqljdbc4.jar vào thư mục lib của server glassfish

Step 3: Tạo Connection Pool

 Netbean  Services  Servers  RC GlassFish Server  View Domain Admin Console

 Resources  JDBC  JDBC Connection Pools  New

Trang 3

IT Research Department @BKAP 2015 Page 3 / 15

 Test Connection Pool BankingPool

Trang 4

Step 4: Tạo JDBC Resources

Step 5: Tạo Enterprise Application

 File  New Project  Java EE  Enterprise Application

Trang 5

IT Research Department @BKAP 2015 Page 5 / 15

Trang 6

Step 6: Tạo Stateless Session Bean trong package beanpack

 PaymentApplication-ejb  New  Other  Enterprise JavaBeans  Session Bean

Trang 7

IT Research Department @BKAP 2015 Page 7 / 15

 AccountBean.java

package beanpack;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.annotation.PostConstruct;

import javax.annotation.Resource;

import javax.ejb.Stateless;

import javax.ejb.LocalBean;

import javax.ejb.TransactionManagement;

import javax.ejb.TransactionManagementType;

import javax.sql.DataSource;

import javax.transaction.SystemException;

import javax.transaction.UserTransaction;

/**

*

* @author Quang

*/

@Stateless

@LocalBean

@TransactionManagement(value = TransactionManagementType.BEAN)

public class AccountBean {

Trang 8

//Khai bao Connection

private Connection conn;

//khai bao datasource

@Resource(mappedName = "jdbc/Banking")

private DataSource dataSource;

//Khai bao User Transaction

@Resource

private UserTransaction userTransaction;

//Phuong thuc khoi tao connection

@PostConstruct

public void initializeResources() {

System.out.println("PostConstruct callback");

try {

conn = dataSource.getConnection();

} catch (SQLException ex) {

Logger.getLogger(AccountBean.class.getName()).log(Level SEVERE, null, ex);

}

}

//Phuong thuc kiem tra so tai khoan co ton tai hay khoong

public boolean confirmAccount(String accountNo) {

//Khai bao bien kiem tra so tai khoan

boolean validAcc = false;

if (accountNo != null && !accountNo.isEmpty()) {

try {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT AccountNo FROM Accounts WHERE AccountNo = '" + accountNo +

"'");

if (rs.next()) {

validAcc = true;

}

rs.close();

} catch (SQLException ex) {

Logger.getLogger(AccountBean.class.getName()).log(Level SEVERE, null, ex);

throw new javax.ejb.EJBException(ex.getMessage());

}

}

return validAcc;

}

//Phuong thuc chuyen khoan

public void transferFund(String fromAcc, double balance, String toAacc) {

try {

userTransaction.begin();

if (confirmAccount(fromAcc) && confirmAccount(toAacc)) {

Statement stmt = null;

stmt = conn.createStatement();

//Tru tien tai khoan chuyen

stmt.executeUpdate("UPDATE Accounts SET Balance = Balance - " + balance + " WHERE AccountNo = '" + fromAcc + "'");

//Cong tien tai khoan duoc chuyen

stmt.executeUpdate("UPDATE Accounts SET Balance = Balance + " + balance + " WHERE AccountNo = '" + toAacc + "'");

userTransaction.commit();

} else {

throw new SQLException("Invalid Account Number");

Trang 9

IT Research Department @BKAP 2015 Page 9 / 15

}

}

}

}

Step 7: Tạo trang PaymentForm.jsp

 PaymentApplication-war  Web Pages  New  Other  Web  JSP

 PaymentForm.jsp

<%@ pagecontentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Payment Form</title>

</head>

<body>

<h2>Payment Form</h2>

<form name="PaymentForm" action="FundTransferServlet" method="submit">

From Account Number: <input name="fromAcc" size="20" value=""/><br/>

Amount to be transferred: <input name="balance" size="20" value=""/><br/>

To Account Number: <input name="toAcc" size="20" value=""/><br/>

<hr>

<input type="submit" value="Submit"/>

</form>

</body>

</html>

Step 8: Tạo Servlet tên FundTransferServlet trong package servlet

 PaymentApplication-war  Source Packages  New  Other  Servlet

Trang 11

IT Research Department @BKAP 2015 Page 11 / 15

 FundTransferServlet.java

package servlet;

import beanpack.AccountBean;

import java.io.IOException;

import java.io.PrintWriter;

import javax.ejb.EJB;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

*

* @author Quang

*/

public class FundTransferServlet extends HttpServlet {

//goi Enterprise Session Bean

@EJB

private AccountBean accountBean;

/**

* Processes requests for both HTTP <code>GET</code> and <code>POST</code>

* methods

*

* @param request servlet request

Trang 12

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs

* @throws IOException if an I/O error occurs

*/

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

//Lay cac thong tin tren form

String fromAcc = request.getParameter("fromAcc");

String balance = request.getParameter("balance");

String toAcc = request.getParameter("toAcc");

PrintWriter out = response.getWriter();

try {

/* TODO output your page here You may use following sample code */

out.println("<!DOCTYPE html>");

out.println("<html>");

out.println("<head>");

out.println("<title>Servlet FundTransferServlet</title>");

out.println("</head>");

out.println("<body>");

accountBean.transferFund(fromAcc, Double.valueOf(balance), toAcc);

out.println("<h2>Fund Transferred Succcessfully</h2>");

} catch (Exception ex) {

out.println("<h2>Error in transferring fund</h2>");

} finally {

out.println("</body>");

out.println("</html>");

out.close();

}

}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods Click on the + sign on the left to edit the code.">

/**

* Handles the HTTP <code>GET</code> method

*

* @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs

* @throws IOException if an I/O error occurs

*/

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

processRequest(request, response);

}

/**

* Handles the HTTP <code>POST</code> method

*

* @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs

* @throws IOException if an I/O error occurs

*/

@Override

Trang 13

IT Research Department @BKAP 2015 Page 13 / 15

@Override

public String getServletInfo() {

return "Short description";

}// </editor-fold>

}

Step 9: Đặt PaymentForm.jsp làm trang home

 web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

<servlet>

<servlet-name>FundTransferServlet</servlet-name>

<servlet-class>servlet.FundTransferServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>FundTransferServlet</servlet-name>

<url-pattern>/FundTransferServlet</url-pattern>

</servlet-mapping>

<session-config>

<session-timeout>

30

</session-timeout>

</session-config>

<welcome-file-list>

<welcome-file>PaymentForm.jsp</welcome-file>

</welcome-file-list>

</web-app>

Trang 14

 Ứng dụng sau khi hoàn thành

Step 10: Build and Run Application

Trang 15

IT Research Department @BKAP 2015 Page 15 / 15

Ngày đăng: 07/05/2018, 16:32

TỪ KHÓA LIÊN QUAN

w