【 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”,就是成功了。