Prac 7
Prac 7
7
Implement the following EJB applications with different types of Beans.
Part A:
Aim: Develop simple EJB application to demonstrate Servlet Hit count using Singleton
Session Beans.
Files Used:
Code: index.html
<!DOCTYPE html>
<html>
<head>
<title>Hit Counter</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="counterServlet">
<input type="submit" value="Check Hit Counter">
</form>
</body>
</html>
counterServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ejb.EJB;
import mybean.CounterBean;
CounterBean.java
package mybean;
import javax.ejb.Singleton;
@Singleton
public class CounterBean {
private int hitcount=0;
public int getCount()
Output:
Part B:
Aim: Develop simple visitor Statistics application using Message Driven Bean [Stateless
Files Used:
index.jsp
BasicMessageBean
VisitorStatBean.java
Code:
SQL Queries:
mysql> create database visitorstats;
Query OK, 1 row affected (0.03 sec)
mysql> use visitorstats;
Database changed
mysql> create table userstats(hostname varchar(30) PRIMARY KEY, visits int);
Query OK, 0 rows affected (0.06 sec)
index.jsp:
<%@page import="javax.jms.JMSException, javax.naming.InitialContext,
javax.jms.TextMessage, javax.jms.MessageProducer, javax.jms.Session,
javax.jms.Connection, javax.jms.Queue, javax.jms.ConnectionFactory" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%!
private static ConnectionFactory connectionFactory;
private static Queue queue;
Connection connection = null;
Session mysession = null;
MessageProducer messageProducer = null;
TextMessage message = null;
%>
<html>
<head>
BasicMessageBean.java
package ejb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJB;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue =
"javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue =
"jms/Queue")
})
public class BasicMessageBean implements MessageListener {
@EJB
VisitorStatBean vs;
@Resource
private MessageDrivenContext mdc;
public BasicMessageBean() {
}
@Override
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage msg = (TextMessage) message;
vs.addVisitor(msg.getText());
}
} catch (JMSException e) {
mdc.setRollbackOnly();
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Stateless;
@Stateless
public class VisitorStatBean {
private Connection conn = null;
private ResultSet rs;
private Statement stmt = null;
private String query = null;
@PostConstruct
public void connect() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost/visitorstats", "root",
"root");
System.out.println("Database connection established successfully.");
} catch(Exception e) {
System.err.println("Sorry failed to connect to the Database.");
}
}
Output:
Aim: Develop simple Marks Entry Application to demonstrate accessing Database using
EJB.
Files Used:
Code: index.html
<!DOCTYPE html>
<html>
<head>
<title>Marks Entry</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="MarksEntry">
<center>
<h2>Student Details</h2><br>
Enter Student Name: <input type="text" name="txtName"><br><br>
Enter Subject 1 Marks: <input type="text" name="marks1"><br><br>
Enter Subject 2 Marks: <input type="text" name="marks2"><br><br>
Enter Subject 3 Marks: <input type="text" name="marks3"><br><br>
Enter Subject 4 Marks: <input type="text" name="marks4"><br><br>
Enter Subject 5 Marks: <input type="text" name="marks5"><br><br>
<input type="submit" value="Insert"> <input type="reset" value="Clear">
package demoM;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ejb.EJB;
import mybean.MarksBean;
String msg="";
String Studname=request.getParameter("txtName");
int marks1=Integer.parseInt(request.getParameter("marks1"));
int marks2=Integer.parseInt(request.getParameter("marks2"));
int marks3=Integer.parseInt(request.getParameter("marks3"));
int marks4=Integer.parseInt(request.getParameter("marks4"));
int marks5=Integer.parseInt(request.getParameter("marks5"));
int totalmarks=marks1+marks2+marks3+marks4+marks5;
msg=obj.marksEntry(Studname,marks1,marks2,marks3,marks4,marks5,totalmarks);
package mybean;
import javax.ejb.Stateless;
import java.sql.*;
@Stateless
public class MarksBean {
public String marksEntry(String name,int mrk1, int mrk2,int mrk3, int mrk4, int mrk5, int
total)
{
String confirmationMsg="";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/StudentMarks","root","root
");
PreparedStatement pstm=con.prepareStatement("insert into stdmarks
value(?,?,?,?,?,?,?)");
pstm.setString(1,name);
pstm.setInt(2,mrk1);
pstm.setInt(3,mrk2);
pstm.setInt(4,mrk3);
pstm.setInt(5, mrk4);
pstm.setInt(6, mrk5);
pstm.setInt(7,total);
int r=pstm.executeUpdate();
if(r==1)
{
confirmationMsg=" <h2><b> Marks of Student Name: " + name + " have been
updated successfully</b><h2>";
Output:
MySQL