Accessing Database using EJB
This is a simple EJB Application that access the
database. Just go through the EJB example given below to find out the steps involved in accessing Database.
Creating a simple Database driven application in EJB
1)Create an interface named AccountStatusRemote.java
AccountStatusRemote.java :-This is the Remote Interface for the Bean.
Here we have used @Remote annotation to declare the class as a Remote Interface. The use of annotation here is that through it we can create a
java source file which contain the bean implementation logic.
String getStatus(); String getAddress(); List getData();:-These are the
method which is to be defined in the Bean and is called in the client
application.
AccountStatusRemote.java
package bean;
import javax.ejb.Remote;
import java.util.*;
@Remote
public interface AccountStatusRemote {
String getStatus();
String getAddress();
List getData();
}
|
2)Create a Bean named AccountStatusBean.java
AccountStatusBean.java:-This is the session
bean we have created. By session bean we mean the bean which act as an agents to
the client. it is generally used in controlling the business process and filling
the gaps between the data of the entity beans. Here
@Stateless is the session type.
@RolesAllowed(value = {"USERS"}):-This is also the annotation which means that only users in the security role USERS can access the
method declared in the Bean .This is to be declared in the the
sun-application.xml file.
<security-role-mapping>
<role-name>USERS</role-name>
<group-name>bank_users</group-name>
</security-role-mapping> |
@SuppressWarnings:-SuppressWarnings are the
warning which is to fix the cause of the warning.
AccountStatusBean.java
package bean;
import java.sql.*;
import java.util.*;
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
@Stateless
public class AccountStatusBean implements AccountStatusRemote {
private String name = "Roseindia.net";
private String address = "sec-3,D-16/116,Rohini";
private List list = new ArrayList();
@RolesAllowed(value = {"USERS"})
public String getStatus() {
return "Name of the company is: " + name;
}
public String getAddress() {
return "Address of the company is: " + address;
}
@SuppressWarnings(value = "unchecked")
public List getData() {
Connection con = null;
String url = "jdbc:mysql://192.168.10.75:3306/";
String dbName = "komal";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "root";
try {
Class.forName(driver).newInstance();
con = DriverManager
.getConnection(url + dbName, userName, password);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select* from employees");
HashMap row;
while (rs.next()) {
row = new HashMap();
row.put("First_Name", rs.getString(1));
row.put("Last_Name", rs.getString(2));
row.put("Address",rs.getString(3));
row.put("Nationality",rs.getString(4));
list.add(row);
}
st.close();
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
|
3)Create a client application named Main.java
Main.java:-This is the client application
through which we can access the methods which are defined in the bean.
@EJB:-This is the annotation that configure the
EJB values for a field or a method. Normally this annotation is a Resource
annotation where it is known that the resultant is an EJB interface.
private static AccountStatusRemote accountStatusBean:-By
this we have created an instance of the interface AccountStatusRemote .
Main.java
package secure;
import bean.AccountStatusRemote;
import javax.ejb.EJB;
import java.util.*;
public class Main {
@EJB
private static AccountStatusRemote accountStatusBean;
public static void main(String[] args) {
System.out.println(accountStatusBean.getStatus());
System.out.println(accountStatusBean.getAddress());
List list = accountStatusBean.getData();
HashMap row;
System.out.println("First_Name" + "\t" + "Last_Name"
+ "\t" + "Address"+ "\t\t" + "Nationality");
System.out.println("=============================================; ");
for (int i = 0; i < list.size(); i++) {
row = (HashMap) list.get(i);
String a = (String) row.get("First_Name");
String s = (String) row.get("Last_Name");
String b = (String) row.get("Address");
String d = (String) row.get("Nationality");
System.out.println(a + "\t\t"
+ s + "\t\t" + b + "\t\t" + d);
}
System.out.println("=============================================");
}
}
|
Output of the program
Name of the company is: Roseindia.net
Address of the company is: sec-3,D-16/116,Rohini
First_Name Last_Name Address
Nationality
==============================================================
Girish Tewari
Rohini Indian
Komal Singh
Rohini Indian
Sandeep kumar
Rohini Indian
Amit Singh
Rohini Indian
Girish Tewari
Rohini Indian
Darshan Tewari
Rohini Indian
==============================================================
|
Download Source code