`
yanfaguanli
  • 浏览: 663586 次
文章分类
社区版块
存档分类
最新评论

EJB入门例子

 
阅读更多

说明:本文从一个实例说明EJB的基本理念

1. 简单说一下EJB概念

引用几句比较官方的话来定义EJB

"EJB(Enterprise JavaBeans) is a server-side component framework that simplifies the process of building enterprise-class distributed component applications in java. By using EJB, you can write scalable, reliable, secure applications without writing your own complex distibuted component framework."

这句话主要说明EJB是服务器端的组件框架,用来构建分布式应用;

"EJB is a standard for developing and deploying server-side distributed components in Java. It defines an agreement (contract) between components and application servers that enables any component to run in any compliant application server."

这句话定义了EJB。

看一个图说明EJB的分类



2. EJB运行环境JBoss安装

下载4.2版本以后,我这里就用4.2.1因为工作中用的就是这个版本,下载链接http://www.jboss.org/jbossas/downloads/

下载完解压,我将其解压到C盘根目录,解压完成配置JBoss Home,如下图:



单机C:\jboss-4.2.1.GA\bin下run.bat可以启动JBoss,如果启动过程不抛出异常,说明JBoss启动正常。

3.安装Ant

下载http://ant.apache.org/下载完我同样解压到C盘根目录,配置Ant Home,如下图



将路径C:\apache-ant-1.8.1\bin添加到系统path.

4. 开发只实现Remote接口的无状态Session Bean

Step1: Eclipse下新建一个JavaProject com.ejb.helloworld;

Step2: 定义一个包括业务方法的接口。调用EJB的客户端只需要使用这个接口变可以调用服务器内部这个接口的实现,接口代码:

Java代码收藏代码
  1. packagecom.ejb.helloworld;
  2. publicinterfaceHelloWorld{
  3. publicStringsayHello(Stringname);
  4. }

Step3:编写Bean Class,此类是上述接口在服务器端的实现,代码

Java代码收藏代码
  1. packagecom.ejb.helloworld.impl;
  2. importjavax.ejb.Remote;
  3. importjavax.ejb.Stateless;
  4. importcom.ejb.helloworld.HelloWorld;
  5. <strong>@Stateless
  6. @Remote({HelloWorld.class})</strong>
  7. publicclassHelloWorldBeanimplementsHelloWorld{
  8. publicStringsayHello(Stringname){
  9. returnname+"sayingHelloWorldLoudly...";
  10. }
  11. }

注意加粗两行代表该Bean定义EJB规范。

Step4:Ant将上述工程打包,发布到JBoss。

在com.ejb.helloworld根目录下构建build.xml,XML内容:

Xml代码收藏代码
  1. <?xmlversion="1.0"?>
  2. <projectname="com.ejb.helloworld"default="deploy"basedir="..">
  3. <propertyenvironment="env"/>
  4. <propertyname="app.dir"value="${basedir}\com.ejb.helloworld"/>
  5. <propertyname="src.dir"value="${app.dir}\src"/>
  6. <propertyname="jboss.home"value="${env.JBOSS_HOME}"/>
  7. <propertyname="jboss.server.config"value="default"/>
  8. <propertyname="build.dir"value="${app.dir}\build"/>
  9. <propertyname="build.classes.dir"value="${build.dir}\classes"/>
  10. <pathid="build.classpath">
  11. <filesetdir="${jboss.home}\client">
  12. <includename="*.jar"/>
  13. </fileset>
  14. <pathelementlocation="${build.classes.dir}"/>
  15. </path>
  16. <targetname="prepare"depends="clean">
  17. <mkdirdir="${build.dir}"/>
  18. <mkdirdir="${build.classes.dir}"/>
  19. </target>
  20. <targetname="compile"depends="prepare"description="compile">
  21. <javacsrcdir="${src.dir}"destdir="${build.classes.dir}"debug="on"deprecation="on"optimize="off"includes="com/**">
  22. <classpathrefid="build.classpath"/>
  23. </javac>
  24. </target>
  25. <targetname="ejbjar"depends="compile"description="caeatehelloworldjarfile...">
  26. <jarjarfile="${app.dir}\HelloWorld.jar">
  27. <filesetdir="${build.classes.dir}">
  28. <includename="com/**/*.class"/>
  29. </fileset>
  30. </jar>
  31. </target>
  32. <targetname="deploy"depends="ejbjar">
  33. <copyfile="${app.dir}\HelloWorld.jar"todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
  34. </target>
  35. <targetname="clean">
  36. <deletedir="${build.dir}"/>
  37. <deletefile="${jboss.home}\server\${jboss.server.config}\deploy\HelloWorld.jar"/>
  38. </target>
  39. </project>

关于如何使用Ant这里不多说,Build成功后在JBoss的Console中会有相应提示,如下图:



上图说明com.ejb.helloworldbuild成功是jar包已经部署到JBoss,并且部署成功,当然可以到C:\jboss-4.2.1.GA\server\default\deploy目录下查看,

另外还可以到http://127.0.0.1:8080/jmx-console/HtmlAdaptor处查看

在打开页面中



单机service=JNDIView查看JNDI名称

在出现的页面中找到“List of Mbean opreations”点击invoke按钮



在弹出页面Global JNDI Namespace最下端会出现HelloWorld.jar的JNDI信息



5.客户端开发

客户端为简单的Web界面,就一个jsp文件

Java代码收藏代码
  1. <%@pagecontentType="text/html;charset=GBK"%>
  2. <%@pageimport="com.ejb.helloworld.HelloWorld,javax.naming.*,java.util.Properties"%>
  3. <%
  4. Propertiesprops=newProperties();
  5. props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
  6. props.setProperty("java.naming.provider.url","localhost:1099");
  7. try{
  8. InitialContextctx=newInitialContext(props);
  9. HelloWorldhelloworld=(HelloWorld)ctx.lookup("HelloWorldBean/remote");
  10. out.println(helloworld.sayHello("Kobebryant"));
  11. }catch(NamingExceptione){
  12. out.println(e.getMessage());
  13. }
  14. %>

同样build次项目

build.xml内容如下

Xml代码收藏代码
  1. <?xmlversion="1.0"?>
  2. <projectname="EJBTest"default="deploy"basedir=".">
  3. <propertyenvironment="env"/>
  4. <propertyname="resouce.dir"value="${basedir}\web"/>
  5. <propertyname="jboss.home"value="${env.JBOSS_HOME}"/>
  6. <propertyname="jboss.server.config"value="default"/>
  7. <targetname="web-war"description="careatewebwar"depends="clean">
  8. <warwarfile="${basedir}\hello.war"webxml="${resouce.dir}\WEB-INF\web.xml">
  9. <filesetdir="${resouce.dir}">
  10. <includename="**/*"/>
  11. </fileset>
  12. </war>
  13. </target>
  14. <targetname="deploy"depends="web-war">
  15. <copyfile="${basedir}\hello.war"todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
  16. </target>
  17. <targetname="clean">
  18. <deletefile="${jboss.home}\server\${jboss.server.config}\deploy\hello.war"/>
  19. </target>
  20. </project>

6。测试

http://127.0.0.1:8080/hello/hello.jsp会出现页面输出一行字符

Java代码收藏代码
  1. KobebryantsayingHelloWorldLoudly...

7.总结





本例子主要流程:

1 客户端(Web Client)请求hello.jsp文件

2 应用服务器引擎编译hello.jsp

3 hello.jsp通过JNDI查找HelloWorldBean的EJB存根,调运sayHello方法

4 将结果返回客户

8。由于时间关系,本例子写的比较粗,如果有人提出不同意见欢迎。项目在附件dev-workspace.rar

分享到:
评论

相关推荐

    EJB3入门例子

    EJB3入门例子,jboss5+EJB3+myEclipse

    EJB3.0实例教程

    EJB3.0实例教程 博文链接:https://brxonline.iteye.com/blog/153889

    EJB入门实例

    EJB实例哦,欢迎入门者浏览

    EJB Dev 1: EJB入门例子

    NULL 博文链接:https://kylinsoong.iteye.com/blog/784231

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。

    EJB经典入门例子 struts+ejb+jsf

    EJB经典入门例子 struts+ejb+jsf 有助于对struts和ejb搭配的了解

    ejb入门录像 sessionBean

    ejb入门录像,MyEclipse开发sessionBean实例

    EJB入门学习笔记,很多实例说明

    EJB简单入门,是自己在学习过程做好的笔记。里面有很多具体的实例。

    EJB3入门经典配套源码1.rar

    EJB3入门经典配套源码 EJB3实例教程配套源码

    JBOSS下的ejb3.0入门实例

    JBOss下的EJB3.0实例入门在myeclipse下建的工程适合新手入门观看

    利用Myeclipse6和jboss开发EJB3入门实例

    这是用Myeclipse 和Jboss开发的一个Ejb3入门实例

    Ejb技术入门级实例大全

    编写了Ejb技术的所有实例bean,供有兴趣学习Ejb技术的初学者提供参考。包括的实例有:session bean的 statuless bean,statuful bean,entity bean的 BMP bean,CMP bean,messageDriver bean。并使用统一客户端调用,并...

    EJB 3.0入门经典 源码

     本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。  本书是EJB开发者的必备参考书...

    ejb3.0入门经典教程及源码

    本光盘是配书CD-ROM光盘,其中包括黎活明的入门教程、sourcecode、“软件”两个文件夹、ejb-3_0-fr-spec-ejbcore.pdf、 ejb-3_0-fr-spec-persistence.pdf、ejb-3_0-fr-spec-simplified.pdf。两个演示文档以及mysql-...

    EJB3入门经典实例教程

    EJB3入门经典实例教程(精简版)企业应用开发核心基础

    EJB3.0入门经典源代码.part1

     本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。  本书是EJB开发者的必备参考书...

    EJB 3.0从入门到精通

    本书面向EJB 3.0的实际应用开发,通过大量的实例,循序渐进地为读者介绍了有关EJB 3.0开发所涉及的各类知识。全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体...

    EJB3.0入门图文教程

    EJB3.0入门图文教程 :包含了EJB3的开发实例及JBOSS等服务器配置每一步开发和操作都有图示。(内含3有PDF文件包括EJB3详尽开发。)

    ejb3 入门实例

    直接导入myeclipse,有客户端和服务端,直接在myeclipse的jboss6 server中部署,然后运行client~~ 详情查考我的博客,http://blog.csdn.net/yx511500623/article/details/9079279

Global site tag (gtag.js) - Google Analytics