【 tulaoshi.com - 编程语言 】
                             
                            EJB的名声很不好,尤其在Spring框架出现以后,而EJB3似乎脱胎换骨了。而我现在学习的仍然是EJB2,原因是EJB3的书很难找。暑假时大概把《精通EJB》和《EJB》这两本书看过一下,现在想复习,加深理解,就从第一个HelloWorld开始。 文件结构: 
E:.│ build.XML│└─src    ├─META-INF    │      application.xml    │      ejb-jar.xml    │      jboss.xml    │    ├─powerwind    │      ClientServlet.Java    │      Hello.java    │      HelloBean.java    │      HelloHome.java    │    └─WEB-INF            jboss-web.xml            web.xml ant文件build.xml?xml version="1.0"?project name="Hello" default="prepare" basedir="."     property environment="env" /    property name="src.dir" value="${basedir}/src" /    property name="jboss.home" value="${env.JBOSS_HOME}" /    property name="build.dir" value="${basedir}/build" /    property name="classes.dir" value="${build.dir}/classes" /    property name="dist.dir" value="${basedir}/dist" /     path id="compile.classpath"       pathelement location="${classes.dir}" /       fileset dir="${jboss.home}/client"           include name="jboss-j2ee.jar" /           include name="javax.servlet.jar" /           include name="commons-httpclient.jar" /       /fileset    /path     target name="prepare"       mkdir dir="${classes.dir}" /       mkdir dir="${dist.dir}" /       copy todir="${build.dir}"           fileset dir="${src.dir}"              include name="WEB-INF/*.xml" /              include name="META-INF/*.xml" /           /fileset       /copy    /target     target name="clean"       delete dir="${build.dir}" /       delete dir="${dist.dir}" /    /target     target name="compile" depends="prepare"       javac srcdir="${src.dir}" destdir="${classes.dir}"           classpath refid="compile.classpath" /       /javac    /target     target name="jar" depends="compile"       jar destfile="${dist.dir}/HelloEJB.jar"           fileset dir="${build.dir}"              exclude name="META-INF/application.xml" /              include name="META-INF/*.xml" /           /fileset           fileset dir="${classes.dir}"              include name="**/*.class" /           /fileset       /jar    /target     target name="war" depends="jar"       jar destfile="${dist.dir}/HelloEJB.war"           fileset dir="${build.dir}"              include name="WEB-INF/*.xml" /           /fileset       /jar    /target     target name="ear" depends="war"       jar destfile="${dist.dir}/HelloEJB.ear"           fileset dir="${dist.dir}"              include name="HelloEJB.jar" /              include name="HelloEJB.war" /           /fileset           fileset dir="${build.dir}"              include name="META-INF/application.xml" /           /fileset       /jar    /target     target name="deploy" depends="ear"       copy file="${dist.dir}/HelloEJB.ear" overwrite="true"           todir="${jboss.home}/server/default/deploy" /    /target /project 
  
     更多的请看:http://www.QQread.com/windows/2003/index.Html
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/) java源文件Hello.javapackage powerwind; 
import java.rmi.RemoteException;
import javax.ejb.EJBObject; 
publicinterface Hello 
extends EJBObject {    
public String sayHello() 
throws RemoteException;} 
HelloHome.javapackage powerwind; 
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome; 
publicinterface HelloHome 
extends EJBHome {    
public Hello create() 
throws RemoteException, CreateException;} 
HelloBean.javapackage powerwind; 
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext; 
publicclass HelloBean 
implements SessionBean {     
private SessionContext context;     
publicvoid ejbCreate() 
throws EJBException, RemoteException {    }    
publicvoid ejbActivate() 
throws EJBException, RemoteException {    }    
publicvoid ejbPassivate() 
throws EJBException, RemoteException {    }    
publicvoid ejbRemove() 
throws EJBException, RemoteException {    }     
publicvoid setSessionContext(SessionContext newContext)           
throws EJBException {       context = newContext;    }     
public String sayHello() 
throws EJBException {       
return"Hello from ejb";    }} 用于测试的Servlet 
ClientServlet.javapackage powerwind; 
import java.io.IOException;
import java.io.PrintWriter; 
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
publicclass ClientServlet 
extends HttpServlet {     
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)           
throws ServletException, IOException {        response.setContentType("text/html");       PrintWriter out = response.getWriter();       String message = 
null;       
try {           InitialContext ic = 
new InitialContext();           Object obj = ic.lookup("HelloEJB");           HelloHome home = (HelloHome) PortableRemoteObject.
narrow(obj,                  powerwind.HelloHome.
class);           Hello hello = home.create();           message = hello.sayHello();       } 
catch (Exception e) {           e.printStackTrace();       }       out.println(message);       out.flush();       out.close();    }     
publicvoid doPost(HttpServletRequest request, HttpServletResponse response)           
throws ServletException, IOException {       doGet(request, response);    } }  
  
     更多的请看:http://www.qqread.com/windows/2003/index.html
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/) 配置文件: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'ejb-jar    descriptionHelloEJB,my first ejb program/description    display-nameHelloEJB/display-name    enterprise-beans       session           ejb-nameHelloEJB/ejb-name           homepowerwind.HelloHome/home           remotepowerwind.Hello/remote           ejb-classpowerwind.HelloBean/ejb-class           session-typeStateless/session-type           transaction-typeContainer/transaction-type       /session    /enterprise-beans/ejb-jar 
jboss-jar?xml version="1.0" encoding="UTF-8"?jboss    enterprise-beans       session           ejb-nameHelloEJB/ejb-name           jndi-nameHelloEJB/jndi-name       /session
         /enterprise-beans/jboss 
application.xml?xml version="1.0"?application    display-nameHelloEJB J2EE Application/display-name    module       web           web-uriHelloEJB.war/web-uri           context-root/HelloEJB/context-root       /web    /module    module       ejbHelloEJB.jar/ejb    /module/application 
jboss-web.xml?xml version="1.0"?jboss-web    ejb-ref       ejb-ref-nameHelloEJB/ejb-ref-name       jndi-nameHelloEJB/jndi-name    /ejb-ref/jboss-web 
web.xml?xml version="1.0" encoding="UTF-8"?web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    servlet
            servlet-nameClientServlet/servlet-name       servlet-classpowerwind.ClientServlet/servlet-class    /servlet     servlet-mapping       servlet-nameClientServlet/servlet-name       url-pattern/ClientServlet/url-pattern    /servlet-mapping     ejb-ref       ejb-ref-nameHelloEJB/ejb-ref-name       ejb-ref-typeSession/ejb-ref-type       homepowerwind.HelloHome/home       remotepowerwind.Hello/remote    /ejb-ref /web-app 输入 ant –deploy 部署,启动Jboss服务器,在浏览器地址栏输入:http://localhost:8080/HelloEJB/ClientServlet然后看到浏览器输出“
Hello from ejb”,就是成功了。