Practical No.: 07
Practical No.: 07
: 07
Name: Sairaj Rajendra Khedekar Date: / / .
Class: TY BSC IT Subject: Advanced Java Technology Roll No.: 05
Aim: A) Develop simple EJB application to demonstrate Servlet Hit count using Singleton Session
Beans.
Code:
CountServletHitsBean.java
package ejb;
import javax.ejb.Singleton;
@Singleton
public class CountServletHitsBean {
ServletClient.java
package servlet;
import ejb.CountServletHitsBean;
import java.io.*;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@EJB
CountServletHitsBean obj;
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws
ServletException,
IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.print("<b>Number of times this Servlet is accessed </b>: " + obj.getCount());
}
}
Output:
Aim: B) Develop simple visitor Statistics application using Message Driven Bean [Stateless
Session Bean].
Code:
index.jsp
<%@page import="javax.jms.JMSException"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.jms.Connection"%>
<%@page import="javax.jms.TextMessage"%>
<%@page import="javax.jms.MessageProducer"%>
<%@page import="javax.jms.Session"%>
<%@page import="javax.jms.Queue"%>
<%@page import="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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
Welcome to My Home Page
<%
try {
InitialContext ic = new InitialContext();
queue = (Queue) ic.lookup("jms/Queue");
connectionFactory = (ConnectionFactory) ic.lookup("jms/QueueFactory");
connection = connectionFactory.createConnection();
mySession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
messageProducer = mySession.createProducer(queue);
message = mySession.createTextMessage();
message.setText(request.getRemoteAddr());
messageProducer.send(message);
} catch (JMSException e) {
System.out.println("Exception Occoured " + e.toString());
}
%>
</body>
</html>
VisitorStatBean.java
package ejb;
import java.sql.*;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Stateless;
@Stateless
public class VisitorStatBean {
@PostConstruct
public void connect() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost/visitorstat", "root", "tiger");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
@PreDestroy
public void disconnect() {
try {
conn.close();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
BasicMessageBean.java
package ejb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJB;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue =
"jms/Queue")
,
@ActivationConfigProperty(propertyName = "destinationType", propertyValue
= "javax.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();
}
}
}
Output:
Aim: C) Develop simple Marks Entry Application to demonstrate accessing Database using EJB.
Code:
SQL Command
create database marksdb;
use marksdb;
create table marks (id int primary key auto_increment, sname varchar(35), marks1 int, marks2 int,
marks3 int);
index.jsp
<%@page import="ejb.MarksEntryBean"%>
<%@page import="javax.naming.InitialContext"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%!
private static MarksEntryBean obj;
MarksEntryBean.java
package ejb;
import java.sql.*;
import javax.ejb.Stateful;
@Stateful
public class MarksEntryBean {
String sname;
int m1, m2, m3;
Connection con = null;
Statement st = null;
String query = "";
public void addMarks(String sname, int m1, int m2, int m3) {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:derby://localhost:1527/marksdb", "root",
"123456789");
st = con.createStatement();
query ="insert into marks (sname,marks1,marks2,marks3) values ('"+sname+"' ,'"+m1+"'
,'"+m2+"' ,'"+m3+"' )";
st.executeUpdate(query);
System.out.print("Marks entered sucessfully!!");
} catch (Exception e) {
System.out.println(e);
}
}
}
Output: