HelloHome.java代码:public interface HelloHome extends javax.ejb.EJBHome{
public Hello create()
throws java.rmi.RemoteException,javax.jb.CreateException;
}
假设我们保存到D:\ejb\Hello\src\HelloHome.java
-----------------------------------------------------------
开发组件接口:
Hello.javapublic interface Hello extends javax.ejb.EJBObject{
public String getHello() throws java.rmi.RemoteException;
}
假设我们保存到D:\ejb\Hello\src\Hello.java
------------------------------------------------------------
开发Bean实现类
HelloEJB.java代码:
import javax.ejb.*;
public class HelloEJB implements SessionBean
{
public void ejbCreate(){}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void setSessionContext(SessionContext ctx){} public String getHello()
{
return new String("Hello,EJB");
}
}
假设我们保存到D:\ejb\Hello\src\Hello.java
------------------------------------------------------------
使用以下命令运行编译:
cd bean\Hello
mkdir classes
cd src
javac -classpath%CLASSPATH%;../classes -d ../classes *.java
-----------------------------------------------------------------
一个完整的ejb是由java类和一个描述其特性的ejb-jar.xml文件组成,部署工具将根据这些文件部署容器中,并自动生成容器所需的类
ejb-jar.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"><ejb-jar>
<description>
This is Hello EJB example
</description>
<display-name>HelloBean</display-name>
<enterprise-beans>
<session>
<display-name>Hello</display-name>
<ejb-name>Hello</ejb-name>
<home>HelloHome</home>
<remote>Hello</remote>
<ejb-class> HelloEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
--------------------------------------------------------------------
一个EJB组件是没有任何运行界面的,所有组件的实例都被容器所管理,所以我们要测试这个Bean组件,需要写一段测试程序,下边是servlet代码:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.ejb.*;
import javax.naming.InitialContext;public class HelloServlet extends HttpServlet{
public void service(HttpServletRequest req,HttpServletResponse res) throws
IOException{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.println("<html><head><title>the first EJB</title></head>");
try{
InitialContext ctx=new InitialContext();
Object objRef=ctx.lookup("java:comp/env/ejb/hell");
//主接口
HelloHello
home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(
objRef,HelloHome.class);
//组件接口
Hello bean=home.create();
out.println(bean.getHello());
}catch(javax.naming.NamingException ne){
out.println("Naming Exception caught:"+ ne);
ne.printStackTrace(out);
}catch(javax.ejb.CreateException ce){
out.println("Create Exception caught:"+ ce);
ce.printStackTrace(out);
}catch(javax.rmi.RemoteException re){
out.println("Remote Exception caught:"+re);
re.printStackTrace(out);
}
out.println("</body></html>");
}
}
-----------------------------------------------------------------
public Hello create()
throws java.rmi.RemoteException,javax.jb.CreateException;
}
假设我们保存到D:\ejb\Hello\src\HelloHome.java
-----------------------------------------------------------
开发组件接口:
Hello.javapublic interface Hello extends javax.ejb.EJBObject{
public String getHello() throws java.rmi.RemoteException;
}
假设我们保存到D:\ejb\Hello\src\Hello.java
------------------------------------------------------------
开发Bean实现类
HelloEJB.java代码:
import javax.ejb.*;
public class HelloEJB implements SessionBean
{
public void ejbCreate(){}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void setSessionContext(SessionContext ctx){} public String getHello()
{
return new String("Hello,EJB");
}
}
假设我们保存到D:\ejb\Hello\src\Hello.java
------------------------------------------------------------
使用以下命令运行编译:
cd bean\Hello
mkdir classes
cd src
javac -classpath%CLASSPATH%;../classes -d ../classes *.java
-----------------------------------------------------------------
一个完整的ejb是由java类和一个描述其特性的ejb-jar.xml文件组成,部署工具将根据这些文件部署容器中,并自动生成容器所需的类
ejb-jar.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"><ejb-jar>
<description>
This is Hello EJB example
</description>
<display-name>HelloBean</display-name>
<enterprise-beans>
<session>
<display-name>Hello</display-name>
<ejb-name>Hello</ejb-name>
<home>HelloHome</home>
<remote>Hello</remote>
<ejb-class> HelloEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
--------------------------------------------------------------------
一个EJB组件是没有任何运行界面的,所有组件的实例都被容器所管理,所以我们要测试这个Bean组件,需要写一段测试程序,下边是servlet代码:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.ejb.*;
import javax.naming.InitialContext;public class HelloServlet extends HttpServlet{
public void service(HttpServletRequest req,HttpServletResponse res) throws
IOException{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
out.println("<html><head><title>the first EJB</title></head>");
try{
InitialContext ctx=new InitialContext();
Object objRef=ctx.lookup("java:comp/env/ejb/hell");
//主接口
HelloHello
home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(
objRef,HelloHome.class);
//组件接口
Hello bean=home.create();
out.println(bean.getHello());
}catch(javax.naming.NamingException ne){
out.println("Naming Exception caught:"+ ne);
ne.printStackTrace(out);
}catch(javax.ejb.CreateException ce){
out.println("Create Exception caught:"+ ce);
ce.printStackTrace(out);
}catch(javax.rmi.RemoteException re){
out.println("Remote Exception caught:"+re);
re.printStackTrace(out);
}
out.println("</body></html>");
}
}
-----------------------------------------------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货