Anda di halaman 1dari 109

Servlet Programs

1.Write a servlet Program to display UserName and Password.

HTML File:
<html>
<head>
<title>prr colleges</title>
<body>
<form name=”F” method=”get” action=”mca”>
User name:
<input type=”text” name=uname”><br>
Password:
<input type=”text” name=”pwd”><br>
<input type=”button” value=”submit”>
</form></body></html>

JAVA File:
Import java.io.*;
Import javax.srvlet.*;
Import javax.servlet.http.*;

Public class Login extends HttpServlet


{
Public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException,
ServletException
Res.setContentRType(“text/html”);
String uname=req.getParameter(“uname”);
String pwd=req.getParameter(“pwd”);
PrintWriter out = response.getWriter();
out.println(“<html");
out.println("<head>");
out.println("<title>prr</title>");
out.println(“</head>”);
out.println(“<body>”);
out.println(uname);
out.println(pwd);
out.println(“<body>”);
out.println(“</html>”);
}
}

1
WEB.XML File:

<web-app>
<servlet>
<servlet-name>prr1</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>prr1<servlet-name>
<url-pattern>/mca</url-pattern>
</servlet-mapping>
<web-app>

2
2. Write a servlet Program to validate username and password.

HTML File:
<html>
<head>
<title>prr colleges</title>
<body>
<form name=”F” method=”get” action=”mca”>
User name:
<input type=”text” name=uname”><br>
Password:
<input type=”text” name=”pwd”><br>
<input type=”button” value=”submit”>
</form></body></html>

JAVA File:
Import java.io.*;
Import javax.srvlet.*;
Import javax.servlet.http.*;

Public class Login extends HttpServlet


{
Public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException,
ServletException
res.setContentType(“text/html”);
String uname=req.getParameter(“uname”);
String pwd=req.getParameter(“pwd”);
PrintWriter out = response.getWriter();
If(uname==null||uname!=(”srinivas”)||pwd==null||pwd!=(”prr”))
{
Out.println(“username and password are not valid”);
}
Else
{
Out.println(“username and password are valid”);
}
}

3
WEB.XML File:

<web-app>
<servlet>
<servlet-name>prr1</servlet-name>
<servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>prr1<servlet-name>
<url-pattern>/mca</url-pattern>
</servlet-mapping>
<web-app>

4
3.Write a Servlet Program for DataBase Connection.

HTML File:
<html>
<head>
<title>prr colleges</title>
<body>
<form name=”F” method=”get” action=”mca”>
User name:
<input type=”text” name=uname”><br>
Password:
<input type=”text” name=”pwd”><br>
<input type=”button” value=”submit”>
</form></body></html>

Java Class(dbs.java):
Import jav.io.*;
Import java.sql.Connction;
Import java.sql.DriverManager;
Import java.sql.result;
Import java.Statement;
Import java.util.*;
Import java.sql.*;

Public class DBS extends HTTPServlet


{
Public viod doGet(HttpServletRequest req, HttpServletResponse res) throws IOException,
ServletException
{
Printwriter out=res.getWriter();
Connection con=null;
Statement stmt=null;
Result rs=null;

Out.println(“<h1><center>Welcome to PRR</center></h1>”);

String uri=”jdbc:oracle:thin:@localhost:1521:orcl”;

try{
class.forName(“oracle.jdbc.driver.OracleDriver”);
out.println(“Welcome to PRR”);
con=DriverManager.getConnection(uri,”scott”,”tiger”);
stmt=con.createStatement();
5
out.println(“Elcome”);
rs=stmt.executeQuery(“select * from emp”);
out.println(“Welcome to PRR”);
while{
out.println(rs.getInt(“empno”));
out.println(rs.getString(“ename”));
out.println(rs.getString(“job”));

}
}catch(Exception e)
{
System.out.println(“Error”+e);
}
System.out.println(“Hello World”);
}

WEB.XML File:

<web-app>
<servlet>
<servlet-name>prr1</servlet-name>
<servlet-class>DBS</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>prr1<servlet-name>
<url-pattern>/mca</url-pattern>
</servlet-mapping>
<web-app>

6
Stateless Session Bean Programs

4.Write an EJB Program for Hello using Stateless Session Bean

HomeInterface(HelloHome.java)

import javax.ejb.*;
import java.rmi.*;

public interface HelloHome extends EJBHome


{
public HelloRemote create() throws CreateException,RemoteException;
}

RemoteInterface(Helloremote.java)

import javax.ejb.*;
import java.rmi.*;

public interface HelloRemote extends EJBObject


{
public String hello() throws RemoteException;
}
EJB Implementation Class(HelloBean.java)

import javax.ejb.*;
import java.rmi.*;
import java.util.*;

public class HelloBean implements SessionBean


{
private SessionContext ctx;

public void ejbCreate()


{
System.out.println("ejb create called");
}
public void ejbActivate()
{
System.out.println("ejb Activate called");
}
public void ejbPassivate()

7
{
System.out.println("ejb Passivate called");
}
public void ejbRemove()
{
System.out.println("ejb Removed called");
}
public void setSessionContext(SessionContext ctx)
{
this.ctx=ctx;
}
public String hello()
{
System.out.println("Hello called");
return "I LOVE Enterprise Java Beans";
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Client Program(HelloClient.java)

import java.rmi.*;
import javax.ejb.*;
import javax.naming.Context;
import javax.naming.*;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

public class HelloClient


{
public static void main(String[] args) throws Exception
{

8
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
Context ctx = new InitialContext(prop);
System.out.println("Got Initial Context");
Object obj=ctx.lookup("Hello");
HelloHome home=(HelloHome) javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
HelloRemote hello=home.create();
System.out.println(hello.hello());
hello.remove();
}
}

Deployement Descriptors

Application.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE application PUBLIC '-//Sun Microsystems,

Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com

/j2ee/dtds/application_1_2.dtd'>

<application>
<display-name>Stateless Session Bean Example</dislay-name>
<module>
<web>
<web-uri>Hello.war</web-uri>
<context-root>/Hello</context-root>
</web>
</module>
<module>
<ejb>Hello.jar</ejb>
</module>
</application>

Ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">

9
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>HelloHome</home>
<remote>HelloRemote</remote>
<ejb-class>HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>Hello</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml

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


<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<!-- Generated XML! -->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>Hello</ejb-name>
<stateless-session-descriptor>
<pool>
</pool>
<stateless-clustering>
</stateless-clustering>
</stateless-session-descriptor>
<transaction-descriptor>
</transaction-descriptor>
<jndi-name>Hello</jndi-name>
</weblogic-enterprise-bean>
10
</weblogic-ejb-jar>
5.Write an EJB Program for Order Management by using Stateless Session Bean

Home Interface(OrderManagementHome.java)
import javax.ejb.*;
import java.rmi.*;
import java.util.*;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface OrderManagementHome extends EJBHome


{
public OrderManagementRemote create() throws RemoteException, CreateException;

Remote Interface(OrderManagementRemote.java)

import javax.ejb.*;
import java.rmi.*;
import java.util.*;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface OrderManagementRemote extends EJBObject


{
public void placeOrder(String custName,String prodName,int quantity) throws
RemoteException;
public void cancelOrder(String custName,String prodName) throws RemoteException;
public boolean isShipped(String custName,String prodName) throws
RemoteException;

EJB Imlementation Class(OrderManagementBean.java)

import javax.ejb.*;
import java.rmi.*;
import java.util.*;

11
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class OrderManagementBean implements SessionBean


{
private SessionContext ctx;

public void placeOrder(String custName,String prodName,int quantity)


{
System.out.println("order placed for"+quantity+"copies of"+prodName+"to be
shipped to"+custName);
}
public void cancelOrder(String custName,String prodName)
{
System.out.println(custName+"order cancelled"+prodName+"prodName");
}
public boolean isShipped(String custName,String prodName)
{
System.out.println("order shipped");
return true;
}

public void ejbCreate()


{
System.out.print("ejbcreate()");
}

public void ejbActivate() throws EJBException, RemoteException

{
System.out.print("ejbActivate()");
}

public void ejbPassivate() throws EJBException, RemoteException


{
System.out.print("ejbPassivate()");
}

public void ejbRemove() throws EJBException, RemoteException


{

12
System.out.print("ejbRemove()");
}

public void setSessionContext(SessionContext ctx)


{
System.out.print("set session called()");
}

Client Class(OrderManagementClient.java)

import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

public class OrderManagementClient


{
public static void main(String args[])
{
BufferedReader stdin;

try
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);

Context ctx = new InitialContext(prop);


System.out.println("Got Initial Context");
OrderManagementHome home = (OrderManagementHome)
ctx.lookup("OrderManagement");
OrderManagementRemote rem = home.create();
System.out.println("create called client");

rem.placeOrder("Ramesh","PRR College",1000);
rem.remove();
rem.cancelOrder("Ramesh","PRR");
rem.isShipped("Ramesh","PRR");
13
rem.remove();
}
catch(Exception e)
{
System.out.println("error:"+e);
}
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Deployement descriptors

Application.xml

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

<!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN'


'http://java.sun.com/dtd/application_1_3.dtd'>

<application>
<display-name>Stateless Session Bean Example</dislay-name>
<module>
<web>
<web-uri>OrderManagement.war</web-uri>
<context-root>/OrderManagement</context-root>
</web>
</module>

<module>
<ejb>OrderManagement.jar</ejb>
</module>

</application>

14
Ejb-jar.xml

<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>OrderManagement</ejb-name>
<home>OrderManagementHome</home>
<remote>OrderManagementRemote</remote>
<ejb-class>OrderManagementBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>OrderManagement</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>OrderManagement</ejb-name>
<enable-call-by-reference>True</enable-call-by-reference>
<jndi-name>OrderManagement</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

15
6.Write an EJB Program for Student Information by Using Stateless Session Bean

Home Interface(StudHome.java)

import javax.ejb.*;
import java.rmi.*;
import java.io.Serializable;
public interface StudHome extends EJBHome
{
public StudRemote create() throws RemoteException, CreateException;
}

Remote Interface(StudRemote.java)

import javax.ejb.*;
import java.rmi.*;

public interface StudRemote extends EJBObject


{
public String PDetails(String details) throws RemoteException;
}

EJB Implementation Class(StudEJB.java)


import javax.ejb.*;
import javax.naming.*;
import java.rmi.*;
public class StudEJB implements SessionBean
{
private SessionContext ctx;
public String PDetails(String details)
{
String name;
name="PRR Colleges";
return name;
}
public StudEJB()
{
}

16
public void ejbActivate()
{
System.out.println("ejbActivate called.");
}
public void ejbRemove()
{
System.out.println("ejbRemove Called.");
}
public void ejbPassivate()
{
System.out.println("ejbPassivate called.");
}
public void setSessionContext(SessionContext ctx)
{
System.out.println("setSessionContext() called.");
this.ctx = ctx;
}
public void ejbCreate() throws CreateException
{
System.out.println("ejbCreate() called");
}
}

Client Class(StudClient.java)

import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;
public class StudClient
{
public static void main(String args[])
{
BufferedReader stdin;
try
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
Context ctx = new InitialContext(prop);

17
System.out.println("Got Initial Context");
StudHome home = (StudHome) ctx.lookup("StudEJB7");
StudRemote rem = home.create();
System.out.println("create called");
try
{
String f="Welcome . . . . . ";
String cont="";
stdin=new BufferedReader(new InputStreamReader(System.in));
do
{
System.out.print(f+" \n\n Enter the Name of the Student: ");
f=(String)stdin.readLine();
String studname=rem.PDetails(f);
System.out.println("The Name of the Student: "+studname);
System.out.println(" Press y To Continue : ");
cont=(String)stdin.readLine();
}while(cont.equals("y"));
}
catch(Exception e)
{
System.out.println("error:"+e);
}
rem.remove();
System.out.println("RemoveCalled");
}
catch(Exception er)
{
System.out.println("Called From Client Catch");
er.printStackTrace();
}
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

18
Deployement Descriptors

Application.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE application PUBLIC '-//Sun Microsystems,

Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com

/j2ee/dtds/application_1_2.dtd'>

<application>
<display-name>Stateless Session Bean Example</dislay-name>
<module>
<web>
<web-uri>student.war</web-uri>
<context-root>/student</context-root>
</web>
</module>

<module>
<ejb>student.jar</ejb>
</module>

</application>

Ejb-jar.xml

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


<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>StudEJB7</ejb-name>
<home>StudHome</home>
<remote>StudRemote</remote>
<ejb-class>StudEJB</ejb-class>
<session-type>Stateless</session-type>

19
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>StudEJB7</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml

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


<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<!-- Generated XML! -->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>StudEJB7</ejb-name>
<stateless-session-descriptor>
<pool>
</pool>
<stateless-clustering>
</stateless-clustering>
</stateless-session-descriptor>
<transaction-descriptor>
</transaction-descriptor>
<jndi-name>StudEJB7</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

20
7. Write an EJB program for Addition using stateless session Bean.

Home Interface
import javax.ejb.*;
import java.rmi.*;
public interface addHome extends EJBHome
{
addRemote create() throws CreateException,RemoteException;
}

Remote Interface:
import javax.ejb.*;
import java.rmi.*;
public interface addRemote extends EJBObject
{
public double add(int a,int b) throws RemoteException;
public double result()throws RemoteException;
}

EJB Implementation Class(addEJB.java)

import javax.ejb.*;
import java.rmi.*;
import java.util.*;
public class addBean implements SessionBean
{
public SessionContext ctx;
public double add(int a,int b)
{
int c;
c=a+b;
return c;
}

public double result()


{
int a=10;
int b=20;
System.out.println(add(a,b));
return add(a,b);
}
public void ejbCreate()

21
{}
public void ejbActivate()
{}
public void ejbPassivate()
{}
public void ejbRemove()
{}
public void setSessionContext(SessionContext ctx)
{}

EJBClient(addClient) :

import java.rmi.*;
import javax.ejb.*;
import javax.naming.Context;
import javax.naming.*;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

public class addClient


{
public static void main(String[] args) throws Exception
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
Context ctx = new InitialContext(prop);
System.out.println("Got Initial Context");
Object obj=ctx.lookup("add");
addHome home=(addHome)
javax.rmi.PortableRemoteObject.narrow(obj,addHome.class);
addRemote hello=home.create();
hello.add(5,9);
System.out.println(hello.result());
hello.remove();
}
}
22
JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Deployement Descriptors

Application.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE application PUBLIC '-//Sun Microsystems,

Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com

/j2ee/dtds/application_1_2.dtd'>

<application>
<display-name>Stateless Session Bean Example</dislay-name>
<module>
<web>
<web-uri>add.war</web-uri>
<context-root>/student</context-root>
</web>
</module>

<module>
<ejb>add.jar</ejb>
</module>

ejb-jar.xml

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


<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>

23
<ejb-name>add</ejb-name>
<home>addHome</home>
<remote>addRemote</remote>
<ejb-class>addBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>add</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml

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


<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>add</ejb-name>
<jndi-name>add</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

24
StateFull Session Bean Programs:

8.Write an EJB Program for Calculate Fee by using Statefull Session Bean

Home Interface(CalculateHome.java)
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface CalculatorHome extends EJBHome


{
public CalculatorRemote create(String applicant) throws RemoteException, CreateException;

Remote Interface(CalculateRemote)

import java.util.*;
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface CalculatorRemote extends EJBObject
{
public void setStudentSummerWork(double studentSummerWork) throws RemoteException;
public void setAttendanceCosts(double tuitionFees,double booksSupplies,double roomBoard)
throws RemoteException;
public void setParentIncome(double income) throws RemoteException,
TooManyParentsException;
public void setGroupAssets(double liquidAssets,double primaryHomeValue,double
otherAssets) throws RemoteException;
public String getMessage() throws RemoteException;
}

EJB Implementation Class(CalculateEJB.java)


import java.util.*;
import javax.ejb.*;
public class CalculatorEJB implements SessionBean
{

String applicant;
double studentSummerWork;
double tuitionFees;

25
double booksSupplies;
double roomBoard;

double parent1Income;
boolean parent1Set;

double parent2Income;
boolean parent2Set;

double liquidAssets;
double primaryHomeValue;
double otherAssets;

public void ejbActivate() {}


public void ejbPassivate() {}
public void ejbRemove() {System.out.println("remove() called");}

public void ejbCreate(String applicant)


{
System.out.println("create() called");
this.applicant=applicant;
parent1Set=false;
parent2Set=false;
}

public void setStudentSummerWork(double studentSummeWork)


{
this.studentSummerWork=studentSummerWork;
}

public void setAttendanceCosts(double tuitionFees,double booksSupplies,double roomBoard)


{
this.tuitionFees=tuitionFees;
this.booksSupplies=booksSupplies;
this.roomBoard=roomBoard;
}

public void setParentIncome(double income) throws TooManyParentsException


{
if(parent2Set)
{
throw new TooManyParentsException();
}
else if(parent1Set)

26
{
this.parent2Income=income;
this.parent2Set=true;
}
else
{
this.parent1Income=income;
this.parent1Set=true;
}
}

public void setGroupAssets(double liquidAssets,double primaryHomeValue,double


otherAssets)
{
this.liquidAssets=liquidAssets;
this.primaryHomeValue=primaryHomeValue;
this.otherAssets=otherAssets;
}

public String getMessage()


{
double
attendanceCost=this.calculateAttendanceCost(tuitionFees,booksSupplies,roomBoard);
double parent1=this.calculateParentContribution(parent1Income);
double parent2=this.calculateParentContribution(parent2Income);
double
group=this.calculateGroupContribution(liquidAssets,primaryHomeValue,otherAssets);
double
parentsContribution=this.calculateParentsContribution(parent1,parent2,group);
double
need=this.calculateNeed(attendanceCost,parentsContribution,studentSummerWork);

return this.getMessage(applicant,need);
}

public void setSessionContext(SessionContext ctx){System.out.println("sessionContext()


called"); }

private double calculateNeed(double attendanceCost,double parentsContribution,double


studentSummerWork)
{
double need=attendanceCost-(parentsContribution+studentSummerWork);
System.out.println("calculateNeed"+need);
return (need < 0.0) ? 0.0 : need;

27
}
private double calculateAttendanceCost(double tuitionFees,double
booksSupplies,double roomBoard)
{
System.out.println("AttendanceCost"+tuitionFees+booksSupplies+roomBoard);
return tuitionFees+booksSupplies+roomBoard;
}

private double calculateParentsContribution(double parent1Contribution,double


parent2Contribution,double groupContribution)
{

System.out.println("ParentsContribution"+parent1Contribution+parent2Contribution+groupCo
ntribution);
return parent1Contribution+parent2Contribution+groupContribution;
}

private double calculateParentContribution(double income)


{
System.out.println("ParentContribution"+income*0.2);
return (income*0.2);
}
private double calculateGroupContribution(double liquidAssets,double
primaryHomeValue,double otherAssets)
{
System.out.println("GroupContribution"+(liquidAssets * 0.3) +
(primaryHomeValue * 0.05) + (otherAssets * 0.075));
return (liquidAssets * 0.3) + (primaryHomeValue * 0.05) + (otherAssets * 0.075);
}

private String getMessage(String applicant,double need)


{
System.out.println("Dear\t\t" + applicant + "'your need has been calculated at:'"
+ need + ".");
return "Dear\t\t" + applicant + "'your need has been calculated at:'" + need + ".";
}

28
Too Many Parents Exception Class(TooManyparents.java)
public class TooManyParentsException extends Exception
{
public TooManyParentsException()
{

}
}

JNDI File(jndi.properties)
java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Client Class(TestClient.java)
import java.util.*;
import java.io.*;
import javax.naming.Context;
import javax.naming.InitialContext;
public class TestClient
{
public static void main(String[] args)
{
try
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);

Context ctx = new InitialContext(prop);


System.out.println("Got Initial Context");

CalculatorHome home=(CalculatorHome) ctx.lookup("calculatorNeed");


CalculatorRemote remote=home.create("praveen");
remote.setParentIncome(55000.0);
remote.setParentIncome(35000.0);
remote.setGroupAssets(10000.0,150000.0,6000.0);
remote.setAttendanceCosts(30000,500.0,2000.0);
remote.setStudentSummerWork(2500.0);

29
System.out.println(remote.getMessage());

remote.remove();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Deployment Descriptors
Application.xml

<?xml version="1.0" encoding="ISO-8859-1"?>


<!DOCTYPE application PUBLIC '-//Sun Microsystems,
Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com
/j2ee/dtds/application_1_2.dtd'>
<application>
<display-name>Stateless Session Bean Example</dislay-name>
<module>
<web>
<web-uri>student.war</web-uri>
<context-root>/student</context-root>
</web>
</module>

<module>
<ejb>student.jar</ejb>
</module>

</application>

Ejb-jar.xml

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


<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<!-- Generated XML! -->
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>StudEJB7</ejb-name>
30
<home>StudHome</home>
<remote>StudRemote</remote>
<ejb-class>StudEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>StudEJB7</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<!-- Generated XML! -->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>StudEJB7</ejb-name>
<stateless-session-descriptor>
<pool>
</pool>
<stateless-clustering>
</stateless-clustering>
</stateless-session-descriptor>
<transaction-descriptor>
</transaction-descriptor>
<jndi-name>StudEJB7</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

31
Entity Bean programs:

9.Write an EJB Program for Sports Team By using Entity Bean(BMP)

Home Interface(SportTeamHome.java)

import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface SportTeamHome extends EJBHome
{

SportTeamRemote create(String sport, String nickName)


throws RemoteException, CreateException;
SportTeamRemote create(String sport, String nickName,String ownerName,String
franchisePlayer)
throws RemoteException, CreateException;

SportTeamRemote findByPrimaryKey(SportTeamPK sportTeam)


throws FinderException, RemoteException;
}

Remote Interface(SportTeamRemote.java)

import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;

public interface SportTeamRemote extends EJBObject


{
public void setOwnerName(String ownerName) throws RemoteException;
public String getOwnerName()throws RemoteException;
public void setFranchisePlayer(String playerName) throws RemoteException;
public String getFranchisePlayer()throws RemoteException;
}

Primary Key Class()

import java.io.Serializable;
32
public class SportTeamPK implements Serializable
{
public String sport;
public String nickName;

public SportTeamPK()
{}

public SportTeamPK(String sport,String nickName)


{
this.sport=sport;
this.nickName=nickName;
}
public String getSport()
{
return sport;
}
public String getNickName()
{
return nickName;
}
public int hashCode()
{
return (sport+nickName).hashCode();
}
public boolean equals (Object o)
{
if((o==null)||!(o instanceof SportTeamPK))
{
return false;
}
SportTeamPK otherPK=(SportTeamPK) o;
return sport.equals(otherPK.sport)&&nickName.equals(otherPK.nickName);
}
}

EJB Implementation Class(SportTeamEJB.java)

import java.util.Collection;
import java.rmi.RemoteException;
import javax.ejb.*;
import java.sql.*;
import java.sql.Connection;
33
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
import javax.transaction.*;

public class SportTeamEJB implements EntityBean


{
public String sport;
public String nickName;
public String ownerName;
public String franchisePlayer;

//private static final String DATASOURCE="java:comp/env/jdbc/sportsJDBC";


EntityContext ctx;

//home interface methods

public SportTeamPK ejbCreate(String sport,String nickName) throws CreateException


{
this.sport=sport;
this.nickName=nickName;
ownerName=null;
franchisePlayer=null;

Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("insert into sportsteams(sport,nickName)
VALUES(?,?)");
pst.setString(1,sport);
pst.setString(2,nickName);
if(pst.executeUpdate()!=1)
{
throw new CreateException("failed to create sports team");
}
}
catch (SQLException sqle)
{
System.out.println("in create(2)");

34
throw new EJBException(sqle);
}
finally
{
try
{
if(con!=null)
{
con.close();
}
}
catch (SQLException sqle)
{}
}

return new SportTeamPK(sport,nickName);


}

public void ejbPostCreate(String sport,String nickName)


{}

public SportTeamPK ejbCreate(String sport,String nickName,String ownerName,String


franchisePlayer) throws CreateException
{
this.sport=sport;
this.nickName=nickName;
this.ownerName=ownerName;
this.franchisePlayer=franchisePlayer;

Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("insert into
sportsteams(sport,nickName,ownerName,franchisePlayer)VALUES(?,?,?,?)");
pst.setString(1,sport);
pst.setString(2,nickName);
pst.setString(3,ownerName);
pst.setString(4,franchisePlayer);

if(pst.executeUpdate()!=1)
{
throw new CreateException("failed to create sports team");

35
}
}
catch (SQLException sqle)
{
System.out.println("in create(3)");

}
finally
{
try
{
if(con!=null)
{
con.close();
}
}
catch (SQLException sqle)
{}
}

return new SportTeamPK(sport,nickName);


}

public void ejbPostCreate(String sport,String nickName,String ownerName,String


franchisePlayer)
{}

public SportTeamPK ejbFindByPrimaryKey(SportTeamPK primaryKey) throws


FinderException
{
Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("select sport from sportsteams where sport=? and
nickName=?");
pst.setString(1,primaryKey.getSport());
pst.setString(2,primaryKey.getNickName());
ResultSet resultset=pst.executeQuery();
if(!resultset.next())
{
throw new ObjectNotFoundException();

36
}
resultset.close();
pst.close();
return primaryKey;
}
catch(SQLException sqle)
{
System.out.println("in primarykey()");
throw new EJBException(sqle);
}
finally
{
try
{
if(con!=null)
{
con.close();
}
}
catch (SQLException sqle)
{}
}
}

public void setEntityContext(EntityContext ctx)


{
this.ctx=ctx;
}

public void unsetEntityContext()


{
ctx=null;
}
public void ejbActivate()
{}
public void ejbPassivate()
{}

//remote interface methods

public void setOwnerName(String ownerName)


{
this.ownerName=ownerName;
}

37
public String getOwnerName()
{
return ownerName;
}
public void setFranchisePlayer(String playerName)
{
this.franchisePlayer=playerName;
}
public String getFranchisePlayer()
{
return franchisePlayer;
}

//database calls
public void ejbLoad()
{
SportTeamPK primaryKey=(SportTeamPK)ctx.getPrimaryKey();
Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("select ownerName, franchisePlayer from
sportsteams where sport=? and nickName=?");
pst.setString(1,primaryKey.getSport());
pst.setString(2,primaryKey.getNickName());
ResultSet resultset=pst.executeQuery();
if(!resultset.next())
{
throw new EJBException("object not found");
}
sport=primaryKey.getSport();
nickName=primaryKey.getNickName();
ownerName=resultset.getString(1);
franchisePlayer=resultset.getString(2);

resultset.close();
pst.close();
}
catch(SQLException sqle)
{
System.out.println("in ejbLoad()");
throw new EJBException(sqle);

38
}
finally
{
try
{
if(con!=null)
{
con.close();
}
}
catch (SQLException sqle)
{}
}
}

public void ejbStore()


{
Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("UPDATE sportsteams SET ownerName=?,
franchisePlayer=? WHERE sport=? AND nickName=?");
pst.setString(1,ownerName);
pst.setString(2,franchisePlayer);
pst.setString(3,sport);
pst.setString(4,nickName);

if(pst.executeUpdate()!=1)
{
throw new EJBException("failed to save object state");
}
pst.close();
}

catch(SQLException sqle)
{
System.out.println("in ejbStore()");
throw new EJBException(sqle);
}
finally
{
try

39
{
if(con!=null)
{
con.close();
}
}
catch (SQLException sqle)
{}
}
}

public void ejbRemove()


{
Connection con=null;
PreparedStatement pst=null;
try
{
con=getConnection();
pst=con.prepareStatement("delete from sportsteams where sport=? and
nickName=?");
pst.setString(1,sport);
pst.setString(2,nickName);

if (pst.executeUpdate()!=1)
{
throw new EJBException("failed to remove object state");
}
pst.close();
}
catch(SQLException sqle)
{
System.out.println("in ejbRemove()");
throw new EJBException(sqle);
}
finally
{
try
{
if(con!=null)
{
con.close();
}
}

40
catch (SQLException sqle)
{}
}
}

private Connection getConnection()


{
try
{
Context initial=new InitialContext();
DataSource datasource=(DataSource)
initial.lookup("java:comp/env/sportsbmp");
return datasource.getConnection();
}
catch (javax.naming.NamingException ne)
{
System.out.println("in getConnection");
ne.printStackTrace();
throw new EJBException(ne);
}
catch(java.sql.SQLException sqle)
{
System.out.println("in getConnection");
sqle.printStackTrace();
throw new EJBException(sqle);
}
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Client Class(TestClient.java)
import java.util.Collection;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;

41
import java.lang.*;

import java.rmi.RemoteException;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.ejb.CreateException;
import java.sql.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
import java.io.*;

public class TestClient


{
public static void main(String[] args)
{
BufferedReader stdin;
try
{
/*System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);*/
Properties prop=new Properties();

prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory")
prop.setProperty(Context.PROVIDER_URL,"t3://localhost:7001");
prop.setProperty(Context.SECURITY_PRINCIPAL,"praveen");
prop.setProperty(Context.SECURITY_CREDENTIALS,"veshprsaanna");

Context ctx = new InitialContext(prop);

System.out.println("Got Initial Context");


Object obj=ctx.lookup("BMPSportsBean");
System.out.println("Got Initial Context2");

SportTeamHome
home=(SportTeamHome)PortableRemoteObject.narrow(obj,SportTeamHome.class);
System.out.println("Got Initial Context3");

42
SportTeamRemote
rem=home.create("cricket","pavan","Ambani","naveen");

//System.out.println("nick name:"+rem.getNickName());

System.out.println("ownerName:"+rem.getOwnerName());
System.out.println("franchisePlayer:"+rem.getFranchisePlayer());

//rem.setNickName("snake");
rem.setFranchisePlayer("praveen");

System.out.println("franchisePlayer:"+rem.getFranchisePlayer());
System.out.println();

rem.setOwnerName("mukhesh");
System.out.println("current sport:"+rem.getOwnerName());
}
catch (RemoteException re)
{
re.printStackTrace();
}
catch(NamingException ne)
{
ne.printStackTrace();
}
catch(CreateException ce)
{
ce.printStackTrace();
}

}
}

Depleyment Descriptors
Ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>

43
<entity>
<ejb-name>BMPSportsBean</ejb-name>
<home>SportTeamHome</home>
<remote>SportTeamRemote</remote>
<ejb-class>SportTeamEJB</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>SportTeamPK</prim-key-class>
<reentrant>False</reentrant>
<resource-ref>
<res-ref-name>sportsbmp</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
</enterprise-beans>

<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>BMPSportsBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>BMPSportsBean</ejb-name>
<reference-descriptor>
<resource-description>
<res-ref-name>sportsbmp</res-ref-name>
<jndi-name>sportsbmp</jndi-name>
</resource-description>
</reference-descriptor>
<jndi-name>BMPSportsBean</jndi-name>

44
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

10.Write an EJB Program for Student Information by using Entity Bean( BMP).

Home Interface ():


import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.ejb.EJBHome;
import java.rmi.RemoteException;
import java.util.Collection;

public interface StudentHome extends EJBHome


{
public StudentRemote create(StudentPK studentPk) throws CreateException,
RemoteException;
public StudentRemote findByPrimaryKey(Integer primaryKey) throws
FinderException,RemoteException;
public Collection findByName(String firstName, String lastName) throws
FinderException,RemoteException;
}

Remote Interface ():


import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface StudentRemote extends EJBObject


{
public Integer getId() throws RemoteException;
public String getFirstName() throws RemoteException;
public void setFirstName(String firstName) throws RemoteException;
public String getLastName() throws RemoteException;
public void setLastName(String lastName) throws RemoteException;
public StudentPK getStudentData() throws RemoteException;
public void setStudentData(StudentPK studentPK) throws RemoteException;
}

EJB Implementation Class ():


import java.sql.*;
import java.util.*;
import javax.ejb.*;

45
import javax.sql.*;
import javax.naming.*;

public class StudentBean implements EntityBean


{
private EntityContext ctx;
private static final String DATASOURCE="java:comp/env/TxDataSource";

private Integer Id;


private String FirstName;
private String LastName;

public void setEntityContext(EntityContext ctx)


{
this.ctx=ctx;
}

public void unsetEntityContext()


{
this.ctx=null;
}

public void ejbActivate() {}


public void ejbPassivate() {}

public Integer ejbCreate(StudentPK pk) throws CreateException


{
System.out.println("StudentEJB ejbCreate StudentPK :: "+pk.toString());

Connection conn=null;
PreparedStatement ps=null;

try{
conn=getConnection();

Id=pk.getId();
FirstName=pk.getFirstName();
LastName=pk.getLastName();
ps=conn.prepareStatement("insert into Student(id,firstname,lastname)
values(?,?,?)");
ps.setInt(1,Id.intValue());
ps.setString(2,FirstName);
ps.setString(3,LastName);

46
int numrows=ps.executeUpdate();

if(numrows != 1)
{
throw new CreateException("Cannot Insert Student Record :: " +
numrows);
}
ps.close();

return Id;

}catch(Exception e){
throw new CreateException("Cannot create Student " + e.getMessage());
}

finally {
closeResources(ps, conn);
}

public void ejbPostCreate(StudentPK pk)


{
}

public void ejbLoad() {

Integer id = (Integer)ctx.getPrimaryKey();

try {
readFromDb(id.intValue());
} catch (Exception e) {
throw new EJBException(e);
}
}

public void ejbStore() {


Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();

47
ps = conn.prepareStatement("UPDATE student SET FIRSTNAME = ?,
LASTNAME = ? WHERE ID = ?");

ps.setString(1, FirstName);
ps.setString(2, LastName);

Integer id = (Integer)ctx.getPrimaryKey();
ps.setInt(3, id.intValue());

int numrows = ps.executeUpdate();


if (numrows != 1)
throw new EJBException("Cannot update Student, id = " +
id.toString());
} catch (Exception e) {
throw new EJBException(e);
} finally {
closeResources(ps, conn);
}
}

public void ejbRemove() {


Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("DELETE FROM Student WHERE ID = ?");

Integer id = (Integer)ctx.getPrimaryKey();
ps.setInt(1, id.intValue());

int numrows = ps.executeUpdate();


if (numrows != 1)
throw new EJBException("Cannot delete Student, id = " +
id.toString());
} catch (Exception e) {
throw new EJBException(e);
} finally {
closeResources(ps, conn);
}
}

public Integer ejbFindByPrimaryKey(Integer id) throws FinderException {


try {

48
readFromDb(id.intValue());
return id;
} catch(Exception e) {
throw new FinderException(e.getMessage());
}

public Collection ejbFindByName(String firstName, String lastName) throws


FinderException {
Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("SELECT id FROM Student WHERE
UPPER(firstName) LIKE UPPER(?) AND UPPER(lastName) LIKE UPPER(?)");
ps.setString(1, firstName);
ps.setString(2, lastName);

Vector Students = new Vector();


ResultSet rset = ps.executeQuery();
while(rset.next()) {
Integer id = new Integer(rset.getInt(1));
Students.addElement(id);
}
rset.close();
return Students;

} catch (Exception e) {
throw new FinderException(e.getMessage());
} finally {
closeResources(ps, conn);
}
}

public Integer getId() { return Id; }

public String getFirstName() { return FirstName; }


public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}

public String getLastName() { return LastName; }

49
public void setLastName(String LastName) {
this.LastName= LastName;
}

public StudentPK getStudentData() {


StudentPK pk = new StudentPK();
pk.setId(getId());
pk.setFirstName(getFirstName());
pk.setLastName(getLastName());
return pk;
}

public void setStudentData(StudentPK pk) {


//pk.setId(getId());
setFirstName(pk.getFirstName());
setLastName(pk.getLastName());
}

private Connection getConnection() {


try {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup(DATASOURCE);
return ds.getConnection();
} catch (Exception e) {
throw new EJBException(e.getMessage());
}
}

private void readFromDb(int id) throws CreateException {

Connection conn = null;


PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("SELECT ID, FIRSTNAME, LASTNAME FROM
Student WHERE id = ?");
ps.setInt(1, id);

ResultSet rset = ps.executeQuery();


if(!rset.next()) {
throw new FinderException("Student not found, id = " + id);

} else {

50
readFields(rset);
}

} catch (Exception e) {
throw new CreateException(e.getMessage());

} finally {
closeResources(ps, conn);
}
}

private void closeResources(PreparedStatement ps, Connection conn) throws


EJBException {
try {
if (ps != null)
ps.close();

if (conn != null)
conn.close();

} catch (Exception e) {
throw new EJBException(e);
}
}

private void readFields(ResultSet rset) throws SQLException {


Id = new Integer(rset.getInt(1));
FirstName = rset.getString(2);
LastName = rset.getString(3);
}
}

EJB Primary Key Class():


import java.io.Serializable;

public class StudentPK implements Serializable


{
private Integer id;
private String firstName;
private String lastName;

public StudentPK() {
}

51
public Integer getId(){
return id;
}

public void setId(Integer id) {


this.id = id;
}

public String getFirstName(){


return firstName;
}

public void setFirstName(String firstName){


this.firstName = firstName;
}

public String getLastName(){


return lastName;
}

public void setLastName(String lastName){


this.lastName = lastName;
}

public String toString() {


StringBuffer result = new StringBuffer("[StudentPK");
result.append(" id: " + id);
result.append(" firstName:" + firstName);
result.append(" lastName:" + lastName);
result.append("]");
return result.toString();
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

52
EJB Client ():
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

public class StudentClient


{
public static void main(String args[])
{

try
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
Context ctx = new InitialContext(prop);
System.out.println("Got Initial Context");
Object obj=ctx.lookup("StudentHome");
StudentHome home=(StudentHome)obj;
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));

String action;
while (true) {
System.out.println(" ");
System.out.print("[A]dd | [S]earch| [E]dit | [D]elete | [Q]uit: ");
System.out.flush();
action = br.readLine();
if (action.length() == 0) break;
StudentRemote rec;
Integer id;
String FirstName;
String LastName;

switch (action.toUpperCase().charAt(0)) {
case 'A':
StudentPK v=new StudentPK();
System.out.print("Enter integer value for ID: ");
System.out.flush();
id = new Integer(br.readLine());
53
v.setId(id);

System.out.print("Enter string value for First Name: ");


System.out.flush();
FirstName = br.readLine();
v.setFirstName(FirstName);

System.out.print("Enter float value for Last Name: ");


System.out.flush();
LastName = br.readLine();
v.setLastName(LastName);

rec =
(StudentRemote) PortableRemoteObject.narrow(home.create(v),
StudentRemote.class);

System.out.println("StudentClient.main(): created " + id);


break;

case 'S':
System.out.print("Enter string value for First Name: ");
FirstName = br.readLine();

System.out.print("Enter float value for Last Name: ");


LastName = br.readLine();

Collection recs=home.findByName(FirstName, LastName);


Iterator iterator = recs.iterator();
int i = 0;
while(iterator.hasNext()) {
rec =(StudentRemote)
PortableRemoteObject.narrow(iterator.next(), StudentRemote.class);
System.out.println("row-" + i++ + " " + rec.getId()
+ " " + rec.getFirstName()
+ " " + rec.getLastName());
}
System.out.println("TemplateClient.main(): found " + recs.size());

break;

case 'D':
System.out.print("Enter integer value for ID: ");
System.out.flush();
id = new Integer(br.readLine());

54
StudentRemote rem=home.findByPrimaryKey(id);
rem.remove();
System.out.println("StudentClient.main(): removed " + id);
break;
case 'E':
System.out.print("Enter integer value for ID: ");
System.out.flush();
id = new Integer(br.readLine());
System.out.print("Enter string value for FIRST NAME: ");
System.out.flush();
FirstName = br.readLine();

System.out.print("Enter float value for LAST NAME: ");


System.out.flush();
LastName = br.readLine();

rec =(StudentRemote) home.findByPrimaryKey(id);


rec.setFirstName(FirstName);
rec.setLastName(LastName);
System.out.println("StudentClient.main(): edited " + id);
break;
case 'Q':
System.exit(0);
default:
continue;
}
}
}
catch(Exception er)
{
System.out.println("Called From Client Catch");
er.printStackTrace();
}
}
}

Deployment Descriptors:

Ejb-jar.xml:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

55
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>StudentBean</ejb-name>
<home>StudentHome</home>
<remote>StudentRemote</remote>
<ejb-class>StudentBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<resource-ref>
<res-ref-name>TxDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>StudentBean</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml:
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" >
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>StudentBean</ejb-name>
<reference-descriptor>
<resource-description>
<res-ref-name>TxDataSource</res-ref-name>
<jndi-name>org/students/orapool</jndi-name>
</resource-description>
</reference-descriptor>
<jndi-name>StudentHome</jndi-name>

56
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

11.Write an EJB Program for Library Application using BMP

Home Interface();
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.ejb.EJBHome;
import java.rmi.RemoteException;
import java.util.Collection;

public interface LibraryHome extends EJBHome


{
public LibraryRemote create(LibraryPK libraryPk) throws CreateException,
RemoteException;
public LibraryRemote findByPrimaryKey(Integer primaryKey) throws FinderException,
RemoteException;
public Collection findByName(String Publisher, String Author, String BookName) throws
FinderException, RemoteException;
}

Remote interface();
import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface LibraryRemote extends EJBObject


{
public Integer getAccessionNo() throws RemoteException;
public String getPublisher() throws RemoteException;
public void setPublisher(String publisher) throws RemoteException;
public String getAuthor() throws RemoteException;
public void setAuthor(String author) throws RemoteException;
public String getBookName() throws RemoteException;
public void setBookName(String BookName) throws RemoteException;
public LibraryPK getLibraryData() throws RemoteException;
public void setLibraryData(LibraryPK libraryPK) throws RemoteException;
}

EJB Implementation Class();


import java.sql.*;

57
import java.util.*;
import javax.ejb.*;
import javax.sql.*;
import javax.naming.*;

public class LibraryBean implements EntityBean


{
private EntityContext ctx;
private static final String DATASOURCE="java:comp/env/TxDataSource";

private Integer AccessionNo;


private String Publisher;
private String Author;
private String BookName;

public void setEntityContext(EntityContext ctx)


{
this.ctx=ctx;
}

public void unsetEntityContext()


{
this.ctx=null;
}

public void ejbActivate() {}


public void ejbPassivate() {}

public Integer ejbCreate(LibraryPK pk) throws CreateException


{
System.out.println("LibraryEJB ejbCreate LibraryPK :: "+pk.toString());

Connection conn=null;
PreparedStatement ps=null;

try{
conn=getConnection();

AccessionNo=pk.getAccessionNo();
Publisher=pk.getPublisher();
Author=pk.getAuthor();
BookName=pk.getBookName();

58
ps=conn.prepareStatement("insert into
Library(AccessionNo,Publisher,Author,BookName) values(?,?,?,?)");
ps.setInt(1,AccessionNo.intValue());
ps.setString(2,Publisher);
ps.setString(3,Author);
ps.setString(4,BookName);

int numrows=ps.executeUpdate();

if(numrows != 1)
{
throw new CreateException("Cannot Insert Library Record :: " +
numrows);
}
ps.close();

return AccessionNo;

}catch(Exception e){
throw new CreateException("Cannot create Entry " + e.getMessage());
}

finally {
closeResources(ps, conn);
}

public void ejbPostCreate(LibraryPK pk)


{
}

public void ejbLoad() {

Integer AccessionNo = (Integer)ctx.getPrimaryKey();

try {
readFromDb(AccessionNo.intValue());
} catch (Exception e) {
throw new EJBException(e);
}
}

public void ejbStore() {

59
Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("UPDATE Library SET Publisher = ?, Author =
?, BookName=? WHERE AccessionNo = ?");

ps.setString(1, Publisher);
ps.setString(2, Author);
ps.setString(3, BookName);

Integer id = (Integer)ctx.getPrimaryKey();
ps.setInt(4, AccessionNo.intValue());

int numrows = ps.executeUpdate();


if (numrows != 1)
throw new EJBException("Cannot update Library, id = " +
AccessionNo.toString());
} catch (Exception e) {
throw new EJBException(e);
} finally {
closeResources(ps, conn);
}
}

public void ejbRemove() {


Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("DELETE FROM Book WHERE AccessionNo
= ?");

Integer AccessionNo = (Integer)ctx.getPrimaryKey();


ps.setInt(1, AccessionNo.intValue());

int numrows = ps.executeUpdate();


if (numrows != 1)
throw new EJBException("Cannot delete Book, AccessionNo = " +
AccessionNo.toString());
} catch (Exception e) {
throw new EJBException(e);

60
} finally {
closeResources(ps, conn);
}
}

public Integer ejbFindByPrimaryKey(Integer AccessionNo) throws FinderException {


try {
readFromDb(AccessionNo.intValue());
return AccessionNo;
} catch(Exception e) {
throw new FinderException(e.getMessage());
}

public Collection ejbFindByName(String Publisher, String Author, String BookName)


throws FinderException {
Connection conn = null;
PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("SELECT AccessionNo FROM Library WHERE
UPPER(Publiser) LIKE UPPER(?) AND UPPER(Author) LIKE UPPER(?) AND UPPER(BookName) LIKE
UPPER(?)");
ps.setString(1, Publisher);
ps.setString(2, Author);
ps.setString(3, BookName);

Vector Lib = new Vector();


ResultSet rset = ps.executeQuery();
while(rset.next()) {
Integer AccessionNo = new Integer(rset.getInt(1));
Lib.addElement(AccessionNo);
}
rset.close();
return Lib;

} catch (Exception e) {
throw new FinderException(e.getMessage());
} finally {
closeResources(ps, conn);
}
}

61
public Integer getAccessionNo() { return AccessionNo; }

public String getPublisher() { return Publisher; }


public void setPublisher(String Publisher) {
this.Publisher = Publisher;
}

public String getAuthor() { return Author; }


public void setAuthor(String Author) {
this.Author= Author;
}

public String getBookName() { return BookName; }


public void setBookName(String BookName) {
this.BookName= BookName;
}

public LibraryPK getLibraryData() {


LibraryPK pk = new LibraryPK();
pk.setAccessionNo(getAccessionNo());
pk.setPublisher(getPublisher());
pk.setAuthor(getAuthor());
pk.setBookName(getBookName());
return pk;
}

public void setLibraryData(LibraryPK pk) {

setPublisher(pk.getPublisher());
setAuthor(pk.getAuthor());
setBookName(pk.getBookName());
}

private Connection getConnection() {


try {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup(DATASOURCE);
return ds.getConnection();
} catch (Exception e) {
throw new EJBException(e.getMessage());
}
}

62
private void readFromDb(int AccessionNo) throws CreateException {

Connection conn = null;


PreparedStatement ps = null;

try {
conn = getConnection();
ps = conn.prepareStatement("SELECT AccessionNo, Publisher, Author,
BookName FROM Library WHERE AccessionNo = ?");
ps.setInt(1, AccessionNo);

ResultSet rset = ps.executeQuery();


if(!rset.next()) {
throw new FinderException("Library not found, id = " +
AccessionNo);
} else {
readFields(rset);
}

} catch (Exception e) {
throw new CreateException(e.getMessage());

} finally {
closeResources(ps, conn);
}
}

private void closeResources(PreparedStatement ps, Connection conn) throws


EJBException {
try {
if (ps != null)
ps.close();

if (conn != null)
conn.close();

} catch (Exception e) {
throw new EJBException(e);
}
}

private void readFields(ResultSet rset) throws SQLException {


AccessionNo = new Integer(rset.getInt(1));
Publisher = rset.getString(2);

63
Author = rset.getString(3);
BookName = rset.getString(4);
}
}

Primary Key Class():


import java.io.Serializable;

public class LibraryPK implements Serializable


{
private Integer AccessionNo;
private String Publisher;
private String Author;
private String BookName;

public LibraryPK() {
}

public Integer getAccessionNo(){


return AccessionNo;
}

public void setAccessionNo(Integer AccessionNo) {


this.AccessionNo = AccessionNo;
}

public String getPublisher(){


return Publisher;
}

public void setPublisher(String Publisher){


this.Publisher = Publisher;
}

public String getAuthor(){


return Author;
}

public void setAuthor(String Author){


this.Author = Author;
}

public String getBookName(){

64
return BookName;
}

public void setBookName(String BookName){


this.BookName = BookName;
}

public String toString() {


StringBuffer result = new StringBuffer("[LibraryPK");
result.append(" AccessionNo: " + AccessionNo);
result.append(" Publisher:" + Publisher);
result.append(" Author:" + Author);
result.append(" BookName:" + BookName);
result.append("]");
return result.toString();
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

EJB Client():
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

public class LibraryClient


{
public static void main(String args[])
{

try

65
{
System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
Context ctx = new InitialContext(prop);
System.out.println("Got Initial Context");
Object obj=ctx.lookup("StudentHome");
LibraryHome home=(LibraryHome)obj;
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));

String action;
while (true) {
System.out.println(" ");
System.out.print("[A]dd | [S]earch| [E]dit | [D]elete | [Q]uit: ");
System.out.flush();
action = br.readLine();
if (action.length() == 0) break;
LibraryRemote rec;
Integer AccessionNo;
String Publisher;
String Author;
String BookName;

switch (action.toUpperCase().charAt(0)) {
case 'A':
LibraryPK v=new LibraryPK();
System.out.print("Enter integer value for ID: ");
System.out.flush();
AccessionNo = new Integer(br.readLine());
v.setAccessionNo(AccessionNo);

System.out.print("Enter string value for Publisher: ");


System.out.flush();
Publisher = br.readLine();
v.setPublisher(Publisher);

System.out.print("Enter float value for Author: ");


System.out.flush();
Author = br.readLine();
v.setAuthor(Author);

rec =

66
(LibraryRemote) PortableRemoteObject.narrow(home.create(v),
LibraryRemote.class);

System.out.println("LibraryClient.main(): created " + AccessionNo);


break;

case 'S':
System.out.print("Enter string value for Publisher: ");
Publisher = br.readLine();

System.out.print("Enter float value for Author: ");


Author = br.readLine();

System.out.print("Enter float value for BookName: ");


BookName = br.readLine();

Collection recs=home.findByName(Publisher, Author, BookName);


Iterator iterator = recs.iterator();
int i = 0;
while(iterator.hasNext()) {
rec =(LibraryRemote)
PortableRemoteObject.narrow(iterator.next(), LibraryRemote.class);
System.out.println("row-" + i++ + " " + rec.getAccessionNo()
+ " " + rec.getPublisher()
+ " " + rec.getAuthor()

+ " " + rec.getBookName());


}
System.out.println("LibraryClient.main(): found " + recs.size());

break;

case 'D':
System.out.print("Enter integer value for ID: ");
System.out.flush();
AccessionNo = new Integer(br.readLine());
LibraryRemote rem=home.findByPrimaryKey(AccessionNo);
rem.remove();
System.out.println("StudentClient.main(): removed " + AccessionNo);
break;
case 'E':
System.out.print("Enter integer value for ID: ");
System.out.flush();
AccessionNo = new Integer(br.readLine());

67
System.out.print("Enter string value for Publisher: ");
System.out.flush();
Publisher = br.readLine();

System.out.print("Enter float value for Author: ");


System.out.flush();
Author = br.readLine();

System.out.print("Enter float value for Book Name: ");


System.out.flush();
BookName = br.readLine();

rec =(LibraryRemote) home.findByPrimaryKey(AccessionNo);


rec.setPublisher(Publisher);
rec.setAuthor(Author);
System.out.println("StudentClient.main(): edited " + AccessionNo);
break;
case 'Q':
System.exit(0);
default:
continue;
}
}
}
catch(Exception er)
{
System.out.println("Called From Client Catch");
er.printStackTrace();
}
}
}

Deployement Descriptors:

Ejb-jar.xml:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>LibraryBean</ejb-name>

68
<home>LibraryHome</home>
<remote>LibraryRemote</remote>
<ejb-class>LibraryBean</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<resource-ref>
<res-ref-name>TxDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>LibraryBean</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-ja.xml:
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" >
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>LibraryBean</ejb-name>
<reference-descriptor>
<resource-description>
<res-ref-name>TxDataSource</res-ref-name>
<jndi-name>org/students/orapool</jndi-name>
</resource-description>
</reference-descriptor>
<jndi-name>LibraryHome</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

69
Entity Beans(CMP)

12.Develop an EJB Library Application using CMP.

Home Interface(LibraryHome.java):

import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface LibraryHome extends EJBHome
{
LibraryRemote create(int bid,String bName,String author,int price) throws
RemoteException,CreateException;
LibraryRemote findByPrimaryKey(LibraryPK bid)throws
FinderException,RemoteException;

RemoteInterface(LibraryRemote.java):

import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface LibraryRemote extends EJBObject
{

public void setBName(String bName) throws RemoteException;


public String getBName() throws RemoteException;
public void setAuthor(String author) throws RemoteException;
public String getAuthor() throws RemoteException;
}
EJB Implementation Class(LibraryEjb.java):

import java.util.Collection;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.sql.*;
70
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.sql.DataSource;
public abstract class LibraryEJB implements EntityBean
{

public LibraryPK ejbCreate(int bid,String bName,String author,int price)throws


CreateException
{
setBid(bid);
setBName(bName);
setAuthor(author);
setPrice(price);
return null;
}
public void ejbPostCreate(int bid,String bName,String author,int price)
{}
//public LibraryPK ejbCreate(int bid,String bName,String author,int price)throws
CreateException
//{

abstract public int getBid();


abstract public String getBName();
abstract public String getAuthor();
abstract public int getPrice();
abstract public void setBid(int bid);
abstract public void setBName(String bName);
abstract public void setAuthor(String author);
abstract public void setPrice(int price);
public void ejbLoad()
{}
public void ejbStore()
{}
public void ejbRemove()
{}
public void ejbActive()
{}
public void ejbPassivate()
{}
public void setEntityContext(EntityContext ctx)
{}

71
public void unsetEntityContext()
{}
//}
}

Primary Key Class(LibraryPK.java):

import java.io.Serializable;
public class LibraryPK implements Serializable
{
public int bid;
public String bName;

public LibraryPK()
{
}

public LibraryPK(int bid,String bName)


{
this.bid=bid;
this.bName=bName;
}
public int getBid()
{
return bid;
}

public String getBName()


{
return bName;
}

public int hashCode()


{
return(bid+bName).hashCode();
}

public boolean equals(Object o)


{
if((o==null) || !(o instanceof LibraryPK))
{
return false;
}
72
//LibraryPK otherPK=(LibraryPK)o;
return true; //bid.equals(otherPK.bid)&&bName.equals(otherPK.bName);
}
}

EJBClient(LibraryClient.java):

import java.util.Collection;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;
import java.rmi.RemoteException;
import javax.ejb.*;
import javax.ejb.CreateException;
import java.sql.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import java.sql.DataSource;

public class LibraryCmpClient


{
public static void main(String[] args)
{
BufferedReader stdin;

try
{
Properties prop=new Properties();

prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory")
;
prop.setProperty(Context.PROVIDER_URL,"t3://localhost:7001");
prop.setProperty(Context.SECURITY_PRINCIPAL,"srikanth");
prop.setProperty(Context.SECURITY_CREDENTIALS,"administration");

73
Context ctx=new InitialContext(prop);

System.out.println("Got Initial Context");

Object obg=ctx.lookup("CMPLibraryBean");
System.out.println("Got Initial Context2");

LibraryHome
home=(LibraryHome)PortableRemoteObject.narrow(obj,LibraryHome.class);
System.out.println("Creating a Row");

LibraryRemote rem=home.create(103,"abcd","prav",120);
System.out.println("looking up by primary key");

LibraryRemote rem=home.findByPrimaryKey(new LibraryPK(101,"daa"));

System.out.println("franchisePlayer:"+rem.getBidName());

System.out.println("looking up by book name.....");

Collection col=home.findByBName("daa");

if(o==col.size())
{
System.out.println("find no such book");
}
else
{
Iterator it=col.iterator();
while(it.hasNext())
{
Object o=it.next();

LibraryRemote
rem2=(LibraryRemote)PortableRemoteObject.narrow(o,LibraryRemote.class);
System.out.println("Book Name:"+rem2.getBName());
}
}
}
catch(RemoteException re)
{
re.printStackTrace();
}
catch(NamingException ne)

74
{
ne.printStackTrace();
}
catch(CreateException ce)
{
ce.printStackTrace();
}
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

EJB-Jar.XML:

<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC


"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>CMPLibraryBean</ejb-name>
<home>LibraryHome</home>
<remote>LibraryRemote</remote>
<ejb-class>LibraryEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>LibraryPK</prim-key-class>
<reentrant>False</reentrant>
<abstract-schema-name>libraryEJB</abstract-schema-name>
<cmp-field>
<field-name>bid</field-name>
</cmp-field>
<cmp-field>

75
<field-name>bName</field-name>
</cmp-field>
<cmp-field>
<field-name>author</field-name>
</cmp-field>
<cmp-field>
<field-name>price</field-name>
</cmp-field>
<query>
<query-method>
<method-name>bName</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(o) FROM libraryEJB AS o WHERE o.bid=?1]]>
</ejb-ql>
</query>
</entity>
</enterprise-beans>

<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>CMPLibraryBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

WebLogic-EJB-jar.XML:
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
"-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd" >
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>CMPLibraryBean</ejb-name>
<entity-descriptor>
<persistence>
<persistence-use>
76
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>6.0</type-version>
<type-storage>META-INF/weblogic-cmp.xml</type-storage>

</persistence-use>
</persistence>
</entity-descriptor>
<jndi-name>CMPLibraryBean</jndi-name>
</weblogic-enterprise-bean>

</weblogic-ejb-jar>

WebLogic-CMP.XML:
<?xml version="1.0"?>
<!DOCTYPE weblogic-rdbms-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd'>

<weblogic-rdbms-jar>

<weblogic-rdbms-bean>

<ejb-name>CMPLibraryBean</ejb-name>
<data-source-name>librarycmp</data-source-name>
<table-map>
<table-name>library</table-name>
<field-map>
<cmp-field>bid</cmp-field>
<dbms-column>BID</dbms-column>
</field-map>
<field-map>
<cmp-field>bName</cmp-field>
<dbms-column>BNAME</dbms-column>
</field-map>
<field-map>
<cmp-field>author</cmp-field>
<dbms-column>AUTHOR</dbms-column>
</field-map>
<field-map>
<cmp-field>price</cmp-field>
<dbms-column>PRICE</dbms-column>
</field-map>
</table-map>
</weblogic-rdbms-bean>
77
</weblogic-rdbms-jar>

13.Write an EJB Program for sports teams using cmp.

Home Interface(SportTeamHome.java):
import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;

public interface SportTeamHome extends EJBHome


{

SportTeamRemote create(String sport, String nickName)


throws RemoteException, CreateException;
SportTeamRemote create(String sport, String nickName,String ownerName,String
franchisePlayer)
throws RemoteException, CreateException;

SportTeamRemote findByPrimaryKey(SportTeamPK sportTeam)throws


FinderException,RemoteException;

Collection findByOwnerName(String ownerName)throws


RemoteException,FinderException;
}

Remote Interface(SportTeamRemote.java):
import java.util.Collection;
import java.math.BigDecimal;
import java.rmi.RemoteException;
import javax.ejb.*;

public interface SportTeamRemote extends EJBObject


{
public void setOwnerName(String ownerName) throws RemoteException;
public String getOwnerName()throws RemoteException;
public void setFranchisePlayer(String playerName) throws RemoteException;
public String getFranchisePlayer()throws RemoteException;
}

78
EJB Implementation Class(SportTeamEjb.java):
import java.util.Collection;
import java.rmi.RemoteException;
import javax.ejb.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.sql.DataSource;
public abstract class SportTeamEJB implements EntityBean
{
public SportTeamPK ejbCreate(String sport,String nickName) throws CreateException
{
setSport(sport);
setNickName(nickName);
setOwnerName(null);
setFranchisePlayer(null);

return null;
}
public void ejbPostCreate(String sport,String nickName)
{}

public SportTeamPK ejbCreate(String sport,String nickName,String ownerName,String


franchisePlayer)throws CreateException
{
setSport(sport);
setNickName(nickName);
setOwnerName(ownerName);
setFranchisePlayer(franchisePlayer);

return null;
}

public void ejbPostCreate(String sport,String nickName,String ownerName,String


franchisePlayer)
{}

abstract public String getSport();


abstract public String getNickName();
abstract public String getOwnerName();
79
abstract public String getFranchisePlayer();

abstract public void setSport(String sport);


abstract public void setNickName(String nickName);
abstract public void setOwnerName(String ownerName);
abstract public void setFranchisePlayer(String player);

public void ejbLoad()


{}
public void ejbStore()
{}
public void ejbRemove()
{}
public void ejbActivate()
{}
public void ejbPassivate()
{}
public void setEntityContext(EntityContext ctx)
{}
public void unsetEntityContext()
{}
}
Primary Key Class(SportTeamPK.java):
import java.io.Serializable;

public class SportTeamPK implements Serializable


{
public String sport;
public String nickName;

public SportTeamPK()
{}

public SportTeamPK(String sport,String nickName)


{
this.sport=sport;
this.nickName=nickName;
}
public String getSport()
{
return sport;
}
public String getNickName()
80
{
return nickName;
}
public int hashCode()
{
return (sport+nickName).hashCode();
}
public boolean equals (Object o)
{
if((o==null)||!(o instanceof SportTeamPK))
{
return false;
}
SportTeamPK otherPK=(SportTeamPK) o;
return sport.equals(otherPK.sport)&&nickName.equals(otherPK.nickName);
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

Client Class():

import java.util.Collection;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

import java.rmi.RemoteException;
//import java.rmi.PortableRemoteObject;
import javax.ejb.*;
import javax.ejb.CreateException;
import java.sql.*;

81
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
import java.io.*;

public class TestClient


{
public static void main(String[] args) throws CreateException,FinderException
{
BufferedReader stdin;
try
{
/*System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
*/
Properties prop=new Properties();

prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory")
;
prop.setProperty(Context.PROVIDER_URL,"t3://localhost:7001");
prop.setProperty(Context.SECURITY_PRINCIPAL,"praveen");
prop.setProperty(Context.SECURITY_CREDENTIALS,"veshprsaanna");

Context ctx = new InitialContext(prop);

System.out.println("Got Initial Context");


Object obj=ctx.lookup("CMPSportBean1");
System.out.println("Got Initial Context2");

SportTeamHome
home=(SportTeamHome)PortableRemoteObject.narrow(obj,SportTeamHome.class);
System.out.println("Creating a row");
SportTeamRemote
rem1=home.create("BasketBall","seenu","pravan","PRR");

//System.out.println("looking for primarykey...");

82
System.out.println("looking up by primarykey...");
SportTeamRemote rem=home.findByPrimaryKey(new
SportTeamPK("chess","seenu"));

System.out.println("franchisePlayer:"+rem.getFranchisePlayer());

System.out.println("looking up by owner Name...");

Collection col=home.findByOwnerName("praveen");
if(0==col.size())
{
System.out.println("find no such owner..");
}
else
{
Iterator it=col.iterator();
while(it.hasNext())
{
Object o=it.next();
SportTeamRemote rem2=(SportTeamRemote)
PortableRemoteObject.narrow(o,SportTeamRemote.class);

System.out.println("ownerName:"+rem2.getOwnerName());
}
}

//System.out.println("ownerName:"+rem.getOwnerName());
//System.out.println("franchisePlayer:"+rem.getFranchisePlayer());

//rem.setSport("volleyball");
//rem.setFranchisePlayer("Dravid");
//System.out.println("franchisePlayer:"+rem.getFranchisePlayer());
//rem.setOwnerName("srinu");
//System.out.println("current sport:"+rem.getOwnerName());
//System.out.println("looking for owner");
//Collection col=home.findByOwnerName("abcd");
}
catch (RemoteException re)
{
re.printStackTrace();
}
catch(NamingException ne)

83
{
ne.printStackTrace();
}
catch(CreateException ce)
{
ce.printStackTrace();
}

}
}
Deploymetn Descriptors:

Ejb-jar.xml:
<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC


"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>

<entity>
<ejb-name>CMPSportBean</ejb-name>
<home>SportTeamHome</home>
<remote>SportTeamRemote</remote>
<ejb-class>SportTeamEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>SportTeamPK</prim-key-class>
<reentrant>False</reentrant>
<abstract-schema-name>sportEJB</abstract-schema-name>
<cmp-field><field-name>sport</field-name></cmp-field>
<cmp-field><field-name>nickName</field-name></cmp-field>
<cmp-field><field-name>ownerName</field-name></cmp-field>
<cmp-field><field-name>franchisePlayer</field-name></cmp-field>
<query>
<query-method>
<method-name>findByOwnerName</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(o) FROM sportEJB AS o WHERE o.ownerName=?1]]>

84
</ejb-ql>
</query>
</entity>
</enterprise-beans>

<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>CMPSportBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml:
<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC


'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>

<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>CMPSportBean</ejb-name>
<entity-descriptor>
<persistence>

<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/weblogic-cmp.xml</type-storage>
</persistence-use>
</persistence>
</entity-descriptor>

<jndi-name>CMPSportBean1</jndi-name>

</weblogic-enterprise-bean>
</weblogic-ejb-jar>

Weblogic-cmp.xml:

85
<?xml version="1.0"?>

<!DOCTYPE weblogic-rdbms-jar PUBLIC


'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd'>

<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>CMPSportBean</ejb-name>
<data-source-name>sportscmp</data-source-name>
<table-map>
<table-name>sportsteams</table-name>
<field-map>
<cmp-field>sport</cmp-field>
<dbms-column>SPORT</dbms-column>
</field-map>
<field-map>
<cmp-field>nickName</cmp-field>
<dbms-column>NICKNAME</dbms-column>
</field-map>
<field-map>
<cmp-field>ownerName</cmp-field>
<dbms-column>OWNERNAME</dbms-column>
</field-map>
<field-map>
<cmp-field>franchisePlayer</cmp-field>
<dbms-column>FRANCHISEPLAYER</dbms-column>
</field-map>
</table-map>
</weblogic-rdbms-bean>
</weblogic-rdbms-jar>

86
14.Write an EJB Program for student information using cmp.

Home Interface ():


import javax.ejb.CreateException;
import javax.ejb.FinderException;
import javax.ejb.EJBHome;
import java.rmi.RemoteException;
import java.util.Collection;

public interface StudentHome extends EJBHome


{
public StudentRemote create(StudentPK studentPk) throws CreateException,
RemoteException;
public StudentRemote findByPrimaryKey(Integer primaryKey) throws
FinderException,RemoteException;
public Collection findByName(String firstName, String lastName) throws
FinderException,RemoteException;
}

Remote Interface ():


import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface StudentRemote extends EJBObject


{
public Integer getId() throws RemoteException;
public String getFirstName() throws RemoteException;
public void setFirstName(String firstName) throws RemoteException;
public String getLastName() throws RemoteException;
public void setLastName(String lastName) throws RemoteException;
public StudentPK getStudentData() throws RemoteException;
public void setStudentData(StudentPK studentPK) throws RemoteException;
}

EJB Implementation Class ():

87
import java.sql.*;
import java.util.*;
import javax.ejb.*;
import javax.sql.*;
import javax.naming.*;

public class StudentBean implements EntityBean


{

public StudentPK ejbCreate(integer Id,String name) throws CreateException


{
setId(Id);
setFirstName(name);
setLastName(null);

return null;
}
public void ejbPostCreate(String sport,String nickName)
{}

public StudentPK ejbCreate(Integer Id,String name,String lname)throws CreateException


{
setId(Id);
setFirstName(name);
setLastName(lname);

return null;
}

public void ejbPostCreate(IntegerId,String name,String lname)


{}

abstract public Integer getId();


abstract public String getFirstName();
abstract public String getLastName()

abstract public void setId(Integer Id);


abstract public void setFirstName(String name);
abstract public void setLastName(String lname);
abstract public void setFranchisePlayer(String player);;

88
public void ejbLoad()
{}
public void ejbStore()
{}
public void ejbRemove()
{}
public void ejbActivate()
{}
public void ejbPassivate()
{}
public void setEntityContext(EntityContext ctx)
{}
public void unsetEntityContext()
{}
}

EJB Primary Key Class():


import java.io.Serializable;

public class StudentPK implements Serializable


{
private Integer id;
private String firstName;
private String lastName;

public StudentPK() {
}

public Integer getId(){


return id;
}

public void setId(Integer id) {


this.id = id;
}

public String getFirstName(){


return firstName;
}

public void setFirstName(String firstName){


this.firstName = firstName;
}
89
public String getLastName(){
return lastName;
}

public void setLastName(String lastName){


this.lastName = lastName;
}

public String toString() {


StringBuffer result = new StringBuffer("[StudentPK");
result.append(" id: " + id);
result.append(" firstName:" + firstName);
result.append(" lastName:" + lastName);
result.append("]");
return result.toString();
}
}

JNDI File(jndi.properties)

java.naming.provider.url=t3://localhost:7001/
java.naming.security.principal=Srinivas
java.naming.security.credentials=Manmadh
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory

EJB Client ():

import java.util.Collection;
import javax.naming.*;
import java.io.*;
import javax.rmi.*;
import java.rmi.*;
import java.util.*;
import java.lang.*;

import java.rmi.RemoteException;
//import java.rmi.PortableRemoteObject;
import javax.ejb.*;
import javax.ejb.CreateException;
import java.sql.*;

90
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
import java.io.*;

public class TestClient


{
public static void main(String[] args) throws CreateException,FinderException
{
BufferedReader stdin;
try
{
/*System.out.println("Before lookup");
FileInputStream fis=new FileInputStream("Jndi.properties");
Properties prop = new Properties();
prop.load(fis);
*/
Properties prop=new Properties();

prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory")
;
prop.setProperty(Context.PROVIDER_URL,"t3://localhost:7001");
prop.setProperty(Context.SECURITY_PRINCIPAL,"praveen");
prop.setProperty(Context.SECURITY_CREDENTIALS,"administration");

Context ctx = new InitialContext(prop);

System.out.println("Got Initial Context");


Object obj=ctx.lookup("StudentBean1");
System.out.println("Got Initial Context2");

StudentHome home=(SportTeamHome) PortableRemoteObject.narrow(obj,


StudentHome.class);
System.out.println("Creating a row");
StudentRemote rem1=home.create("015","praveen","gangishetti");

System.out.println("looking up by primarykey...");
StudentRemote rem=home.findByPrimaryKey(new StudentPK("015”);

91
System.out.println("ID"+rem.getID());

System.out.println("looking up by First Name...");

Collection col=home.findByFirstName("praveen");
if(0==col.size())
{
System.out.println("find no such name..");
}
else
{
Iterator it=col.iterator();
while(it.hasNext())
{
Object o=it.next();
StudentRemote rem2=(StudentRemote)
PortableRemoteObject.narrow(o, StudentRemote.class);

System.out.println("First Name"+rem2.getFirstName());
}
}

}
catch (RemoteException re)
{
re.printStackTrace();
}
catch(NamingException ne)
{
ne.printStackTrace();
}
catch(CreateException ce)
{
ce.printStackTrace();
}

}
}

92
Deployment Descriptors:

Ejb-jar.xml:
<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC


"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>

<entity>
<ejb-name>CMStudentBean</ejb-name>
<home>StudentHome</home>
<remote>StudentRemote</remote>
<ejb-class>StudentEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>StudentPK</prim-key-class>
<reentrant>False</reentrant>
<abstract-schema-name>studentEJB</abstract-schema-name>
<cmp-field><field-name>student</field-name></cmp-field>
<cmp-field><field-name>firstName</field-name></cmp-field>
<cmp-field><field-name>lastName</field-name></cmp-field>
<query>
<query-method>
<method-name>findById</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(o) FROM sportEJB AS o WHERE o.ownerName=?1]]>
</ejb-ql>
</query>
</entity>
</enterprise-beans>

<assembly-descriptor>
<container-transaction>
93
<method>
<ejb-name>CMPStudentBean</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

Weblogic-ejb-jar.xml:
<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC


'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>

<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>CMPStudentBean</ejb-name>
<entity-descriptor>
<persistence>

<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
<type-storage>META-INF/weblogic-cmp.xml</type-storage>
</persistence-use>
</persistence>
</entity-descriptor>

<jndi-name>CMPStudentBean1</jndi-name>

</weblogic-enterprise-bean>
</weblogic-ejb-jar>

Weblogic-cmp.xml:

<?xml version="1.0"?>

<!DOCTYPE weblogic-rdbms-jar PUBLIC


'-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB RDBMS Persistence//EN'
'http://www.bea.com/servers/wls810/dtd/weblogic-rdbms20-persistence-810.dtd'>

94
<weblogic-rdbms-jar>
<weblogic-rdbms-bean>
<ejb-name>CMPStudentBean</ejb-name>
<data-source-name>studentcmp</data-source-name>
<table-map>
<table-name>student</table-name>
<field-map>
<cmp-field>Id</cmp-field>
<dbms-column>ID</dbms-column>
</field-map>
<field-map>
<cmp-field>firstName</cmp-field>
<dbms-column>FIRSTNAME</dbms-column>
</field-map>
<field-map>
<cmp-field>lastName</cmp-field>
<dbms-column>LASTNAME</dbms-column>
</field-map>
<field-map>
<cmp-field>franchisePlayer</cmp-field>
<dbms-column>FRANCHISEPLAYER</dbms-column>
</field-map>
</table-map>
</weblogic-rdbms-bean>
</weblogic-rdbms-jar>

95
CORBA PROGRAMS

15.Develop a Hello program using corbaIDL technologies.

IDL File(Hello.idl):
module HelloApp
{
interface Hello
{
string sayHello();
oneway void shutdown();
};
};

Server Program(HelloServer.java):

// HelloServer.java
// Copyright and License
import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;

import java.util.Properties;

class HelloImpl extends HelloPOA {


private ORB orb;

public void setORB(ORB orb_val) {


orb = orb_val;
}

// implement sayHello() method


public String sayHello() {
return "\nHello world !!\n";
}

96
// implement shutdown() method
public void shutdown() {
orb.shutdown(false);
}
}

public class HelloServer {

public static void main(String args[]) {


try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);

// get reference to rootpoa & activate the POAManager


POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();

// create servant and register it with the ORB


HelloImpl helloImpl = new HelloImpl();
helloImpl.setORB(orb);

// get object reference from the servant


org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);
Hello href = HelloHelper.narrow(ref);

// get the root naming context


org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
// Use NamingContextExt which is part of the Interoperable
// Naming Service (INS) specification.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// bind the Object Reference in Naming


String name = "Hello";
NameComponent path[] = ncRef.to_name( name );
ncRef.rebind(path, href);

System.out.println("HelloServer ready and waiting ...");

// wait for invocations from clients


orb.run();
}

97
catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}

System.out.println("HelloServer Exiting ...");

}
}
Cient Class(HelloClient.java):

import HelloApp.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;

public class HelloClient


{
static Hello helloImpl;

public static void main(String args[])


{
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);

// get the root naming context


org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
// Use NamingContextExt instead of NamingContext. This is
// part of the Interoperable naming Service.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// resolve the Object Reference in Naming


String name = "Hello";
helloImpl = HelloHelper.narrow(ncRef.resolve_str(name));

System.out.println("Obtained a handle on server object: " + helloImpl);


System.out.println(helloImpl.sayHello());
helloImpl.shutdown();

} catch (Exception e) {
System.out.println("ERROR : " + e) ;
98
e.printStackTrace(System.out);
}
}
}

16.Write a program for bank application using corbaIDL technologies

IDL File(Bank.idl):
module BankApp
{
interface Bank
{
string deposit();
float withDraw();
float Balance();
oneway void shutdown();
};
};

Server Program(BankServer.java):

// HelloServer.java
// Copyright and License
import BankApp.*;
import java.util.Vector;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import org.omg.PortableServer.POA;

import java.util.Properties;

class BankImpl extends BankPOA {


private ORB orb;
// Stock symbols and their respective values.

Vector myStockSymbols;

Vector myStockValues;

// Characters from which StockSymbol names are built.

99
static char ourCharacters[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };

// Path name for StockServer objects.

private static String ourPathName = "BankServer";

public BankImpl()
{
}

public void setORB(ORB orb_val) {


orb = orb_val;
}

// implement getInfo() method


public String deposit() {

/* myStockSymbols = new Vector();


myStockValues = new Vector();

// Initialize the symbols and values with some random values.

for (int i = 0; i < 10; i++) {

// Generate a string of four random characters.

StringBuffer stockSymbol = new StringBuffer(" ");

for (int j = 0; j < 4; j++) {

stockSymbol.setCharAt(j, ourCharacters[(int)(Math.random()* 26f)]);

myStockSymbols.addElement(stockSymbol.toString());

// Give the stock a value between 0 and 100. In this example,

// the stock will retain this value for the duration of the application.

myStockValues.addElement(new Float(Math.random() * 100f));

100
}

// Print out the stock symbols generated above.

System.out.println("Stock Market Exchange Information ::");*/


String genvalues="hi Srinivas.........";

/* for (int i = 0; i < 10; i++) {

System.out.println(i+" " + myStockSymbols.elementAt(i) + " " +


myStockValues.elementAt(i));

genvalues+=myStockSymbols.elementAt(i) + " " + myStockValues.elementAt(i)+"::";

}
*/
System.out.println();
// String a="\n Stock world Welcome Srinivas !!\n";
return genvalues;
}

// implement withDraw() method


public float withDraw() {
float amount=105.5f;
return amount;
}
// implement Balance() method
public float Balance() {
float bal=105.5f;
return bal;
}
// implement shutdown() method
public void shutdown() {
orb.shutdown(false);
}
}

public class BankServer {

public static void main(String args[]) {


try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);

101
// get reference to rootpoa & activate the POAManager
POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();

// create servant and register it with the ORB


BankImpl Impl = new BankImpl();
Impl.setORB(orb);

// get object reference from the servant


org.omg.CORBA.Object ref = rootpoa.servant_to_reference(Impl);
Bank href = BankHelper.narrow(ref);

// get the root naming context


org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
// Use NamingContextExt which is part of the Interoperable
// Naming Service (INS) specification.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// bind the Object Reference in Naming


String name = "Bank";
NameComponent path[] = ncRef.to_name( name );
ncRef.rebind(path, href);

System.out.println("StockServer ready and waiting ...");

// wait for invocations from clients


orb.run();
}

catch (Exception e) {
System.err.println("ERROR: " + e);
e.printStackTrace(System.out);
}

System.out.println("StockServer Exiting ...");

}
}

Client Class(BankClient.java):
import BankApp.*;

102
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
import org.omg.CORBA.*;
import java.util.StringTokenizer;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class BankClient


{
static Bank BankImpl;

public static void main(String args[])


{
try{
// create and initialize the ORB
ORB orb = ORB.init(args, null);

// get the root naming context


org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
// Use NamingContextExt instead of NamingContext. This is
// part of the Interoperable naming Service.
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// resolve the Object Reference in Naming


String name = "Bank";
BankImpl = BankHelper.narrow(ncRef.resolve_str(name));

// System.out.println("Obtained a handle on server object: " + stockImpl);


System.out.println(" ");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String ch;
while (true) {
System.out.println(" ");
System.out.print("[R]efresh | [C]lose Client | [Q]uit All : ");
System.out.flush();
ch = br.readLine();
if (ch.length() == 0) break;

switch(ch.toUpperCase().charAt(0))
{
case 'R':
String generatedValues=BankImpl.deposit();

103
System.out.println("\n\n Account Information :: \n \n");
StringTokenizer st=new StringTokenizer(generatedValues,"::");
while(st.hasMoreTokens())
System.out.println(" "+st.nextToken());
break;
case 'C':
System.exit(0);
break;
case 'Q':
BankImpl.shutdown();
System.exit(0);
break;
default:
System.out.println("\n\nEnter the Correct Choice....\n\n");
continue;
}
}

} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}

104
.NET Programs

17.Develop a component for browsing CD catalogue using COM/.NET

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace cd
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)


{
// place File folder control (button1)
// draw a label box in the screen (label1)
folderBrowserDialog1.ShowDialog();
label1.Text = folderBrowserDialog1.SelectedPath;

private void button2_Click(object sender, EventArgs e)


{
// place a End button ( button2)
Application.Exit();

}
}

105
}

18.Develop a component for Converting currency from dollar to rupee and vice-
versa

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//place three textboxes in the form and two buttons


//Accept rupees in first text box and dollar in the second text box.
// Display result in the third text box.

private void button1_Click(object sender, EventArgs e)


{
// Rupees button (Button1)
textBox3.Text = (double.Parse(textBox2.Text) * 45).ToString();

private void button2_Click(object sender, EventArgs e)


{
// Dollar button (Button2)
textBox3.Text = (double.Parse(textBox1.Text) / 45).ToString();

}
}
}

106
19. Develop a component for Retrieving information from a Message box
usi ng DCOM/.NET

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace dcom
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{

{
// Display a message box asking users if they
// want to exit the application.
MessageBox.Show("Hai...Welcome to C# World");

if (MessageBox.Show ("Do you want to exit?", "My Application",


MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
{
Application.Exit();
}
}

107
}

20. Develop a com component for addition in C#.Net

We will create a component called csAddComp1 and package it into a dll (Dynamic Linked
Library). This component has two properties and a method. Properties take input for the
addition and method called Sum().
To create properties in C# you use the get and set accessors. The get accessor is used for getting
(reading). The set accessor for setting (writing) the property.
In my example we have two properties, varI and varJ. These properties need to be written to
and read from. To implement the reading and writing we need to use both get and set
accessors for each property. I am using a namespace in my example int order to hide the
classes being are creating inside. For easy understanding I made more comments in example
code.

Component Program

using System;
namespace CompCS
{
public class csAddComp1
{
private int i=0,j=0;
public int varI
{
get { return i; } //this is property get for varI
set { i=value; } //this is property set for varI
}
public int varJ
{
get { return j; } // this is property get for varJ
set { j=value; } // this is property set for varJ
}
public int Sum()
{
return i+j; //this returns the sum of two variables
}
} //end of class
} //end of namespace
To package the component as dll there is slight change in usual compilation process. Its little
complicated process when compared to normal stand-alone program compilation.

108
csc /out:csAddComp1.dll /target:library csAddComp1.cs
Here the /out switch to put the compiled component in the relative subdirectory and file for
convenience. Likewise, we need the /target:library switch to actually create a DLL rather than
an executable with a .dll file extension.
In client program we will use a simple keyword called using <namespace> <namespace>. Which
will refer to the component.

Client Program 

using System;
using CompCS;

class clAddComp1
{
public static void Main()
{
csAddComp1 addComp= new csAddComp1();
addComp.varI=10; //property set for varI
addComp.varJ=20; //property set for varJ

//below property get for varI


Console.WriteLine("variable I value : {0}",addComp.varI);

//below property get for varJ


Console.WriteLine("variable J value : {0}",addComp.varJ);

// calling Sum(..) method


Console.WriteLine("The Sum : {0}",addComp.Sum());
} //end of Main
} // end of Class
Program Output :
C:\csharp\progs>clAddComp1
variable I value : 10
variable J value : 20
The Sum : 30
Since the component is residing in csAddComp1.dll, the client program has to refer it at the
time of compilation. The /reference compilation switch will make this reference:

109

Anda mungkin juga menyukai