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>");
}
}
-----------------------------------------------------------------