- 浏览: 236280 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
akka_li:
学习了!但是为什么后续的没有了?!
EJB4:RMI和RMI-IIOP -
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene学习笔记(一)Lucene入门实例 -
qepipnu:
求solr 客户端 jar包
Solr学习笔记(三)Solr客户端开发实例 -
zhangbc:
是这问题,赞!
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题 -
feilian09:
查询 select hibernate jdbc 那个效率快
Hibernate,JDBC性能探讨
关键字:EJB ANT JBoss 入门实例
说明:本文从一个实例说明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的客户端只需要使用这个接口变可以调用服务器内部这个接口的实现,接口代码:
package com.ejb.helloworld; public interface HelloWorld { public StringsayHello(String name); }
Step3:编写Bean Class,此类是上述接口在服务器端的实现,代码
package com.ejb.helloworld.impl; import javax.ejb.Remote; import javax.ejb.Stateless; import com.ejb.helloworld.HelloWorld; @Stateless @Remote ({HelloWorld.class}) public class HelloWorldBean implements HelloWorld { public StringsayHello(String name) { return name + " saying Hello World Loudly..."; } }
注意加粗两行代表该Bean定义EJB规范。
Step4:Ant将上述工程打包,发布到JBoss。
在com.ejb.helloworld根目录下构建build.xml,XML内容:
<?xml version="1.0"?> <project name="com.ejb.helloworld" default="deploy" basedir=".."> <property environment="env" /> <property name="app.dir" value="${basedir}\com.ejb.helloworld" /> <property name="src.dir" value="${app.dir}\src" /> <property name="jboss.home" value="${env.JBOSS_HOME}" /> <property name="jboss.server.config" value="default" /> <property name="build.dir" value="${app.dir}\build" /> <property name="build.classes.dir" value="${build.dir}\classes" /> <path id="build.classpath"> <fileset dir="${jboss.home}\client"> <include name="*.jar" /> </fileset> <pathelement location="${build.classes.dir}" /> </path> <target name="prepare" depends="clean"> <mkdir dir="${build.dir}" /> <mkdir dir="${build.classes.dir}" /> </target> <target name="compile" depends="prepare" description="compile"> <javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="com/**"> <classpath refid="build.classpath" /> </javac> </target> <target name="ejbjar" depends="compile" description="caeate hello world jar file..."> <jar jarfile="${app.dir}\HelloWorld.jar"> <fileset dir="${build.classes.dir}"> <include name="com/**/*.class" /> </fileset> </jar> </target> <target name="deploy" depends="ejbjar"> <copy file="${app.dir}\HelloWorld.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" /> </target> <target name="clean"> <delete dir="${build.dir}" /> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\HelloWorld.jar" /> </target> </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文件
<%@ page contentType="text/html; charset=GBK"%> <%@ page import="com.ejb.helloworld.HelloWorld, javax.naming.*, java.util.Properties"%> <% Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "localhost:1099"); try { InitialContext ctx = new InitialContext(props); HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); out.println(helloworld.sayHello("Kobe bryant")); } catch (NamingException e) { out.println(e.getMessage()); } %>
同样build次项目
build.xml内容如下
<?xml version="1.0"?> <project name="EJBTest" default="deploy" basedir="."> <property environment="env" /> <property name="resouce.dir" value="${basedir}\web" /> <property name="jboss.home" value="${env.JBOSS_HOME}" /> <property name="jboss.server.config" value="default" /> <target name="web-war" description="careate web war" depends="clean"> <war warfile="${basedir}\hello.war" webxml="${resouce.dir}\WEB-INF\web.xml"> <fileset dir="${resouce.dir}"> <include name="**/*"/> </fileset> </war> </target> <target name="deploy" depends="web-war"> <copy file="${basedir}\hello.war" todir="${jboss.home}\server\${jboss.server.config}\deploy" /> </target> <target name="clean"> <delete file="${jboss.home}\server\${jboss.server.config}\deploy\hello.war" /> </target> </project>
6。测试
http://127.0.0.1:8080/hello/hello.jsp会出现页面输出一行字符
Kobe bryant saying Hello World Loudly...
7.总结
本例子主要流程:
1 客户端(Web Client)请求hello.jsp文件
2 应用服务器引擎编译hello.jsp
3 hello.jsp通过JNDI查找HelloWorldBean的EJB存根,调运sayHello方法
4 将结果返回客户
8。由于时间关系,本例子写的比较粗,如果有人提出不同意见欢迎。项目在附件dev-workspace.rar
- dev-workspace.rar (871.5 KB)
- 下载次数: 63
发表评论
-
Oracle - Add Exist Validation Before Create Table
2011-11-07 13:49 1405Usually we need to check the ta ... -
JMX Architecture & "Hello Word" the JMX way
2011-10-25 20:07 1748JMX Architecture Overview: JMX ... -
Jboss-eap-5.1 Messaging
2011-08-02 21:50 2403This section I will concertate ... -
Jboss-eap-5.1 starting up note
2011-07-26 22:46 2545Jboss enterprise platform 5 hav ... -
EJB Security & JAAS Demo
2011-05-21 19:39 1577PROLOGUE: When deploying ... -
JBoss LoginInitialContext Factory Implementation
2011-05-15 16:05 1466Jboss has a series of imp ... -
Jboss Reference Exception Gallery
2011-04-27 14:08 28531. Unable to locate a login con ... -
Hibernate Annotation 的一个问题,给点意见
2011-03-10 12:43 22问题:org.hibernate.annotations. ... -
大家说说BBC的网站用的是什么技术做的
2011-02-22 05:01 1395最近在英国出差,发现这里的一些网站做的相当有特色,有些网站不是 ... -
Hibernate OneToMany 单向和双向配置对数据存取性能的比较
2011-02-08 17:06 22461. 开篇说明:今天是春 ... -
对Hibernate属性(CascadeType、JoinColumn、JoinTable、ForeignKey等)的研究
2010-12-26 15:45 16605本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy ... -
EJB 学习阶段总结:JBoss下发布一个Toy企业应用
2010-12-25 12:11 2551解释题目:为什 ... -
EJB7: Message Driven Bean
2010-12-21 22:42 2099在企业系统中需要使用 ... -
EJB6: EntityBean例子
2010-11-26 14:48 1443本例子描述向EJB容器(JBoss)部署http: ... -
JPA dev: 几个问题总结(续)
2010-11-25 18:02 24052. 如何由PoJo类生成数据库中的表 首先可以根据实体间关 ... -
JPA dev: 几个问题总结
2010-11-25 16:56 3354最近工作中遇到几个与JPA相关的问题,本文通过一个例子总结一下 ... -
JAXB学习
2010-11-24 22:35 01 什么是JAXB? JAXB全称Java Ar ... -
EJB5: JPA扩展-J2SE环境下使用EntityManager
2010-11-10 19:07 2643好久没有写博客了,最近比较忙,今天抽时间写点,最近 ... -
EJB4:RMI和RMI-IIOP
2010-11-02 21:14 4069计划提纲:引入→RMI概念→RMI HelloWorld程序→ ... -
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
2010-10-26 22:43 6415本文的研究基于jboss-eap- ...
相关推荐
EJB3入门例子,jboss5+EJB3+myEclipse
简明扼要概括EJB的工作原理,让你能更好地理解EJB的工作机制
揭示高级设计模式和关键的特定于EJB的实现问题,如源代码所示。 还包含二十种高级EJB模式的目录。
精通EJB第二版,新鲜出炉,是在网上搜寻很久才找到的完整版
本人闲来研究了EJB的技术。编写了Ejb技术的所有实例bean,供有兴趣学习Ejb技术的初学者提供参考。包括的实例有:session bean的 statuless bean,statuful bean,entity bean的 BMP bean,CMP bean,messageDriver bean...
EJB经典入门例子 struts+ejb+jsf 有助于对struts和ejb搭配的了解
ejb综合例子,ejb综合例子,ejb综合例子,ejb综合例子
ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全
《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...
Java EJB简单例子,这是HelloWorldBean的Home接口,它是EJB对象的生成库,无状态会话(将在下一个实例中具体讲解)Bean,这个接口是客户端与EJB对象相互作用的中间途径,通过Client触发调用Bean方法: try { //...
E EJB 一个完整的例子
EJB_TEST自己编写的EJB例子.简单易懂
ejb例子ejb例子ejb例子ejb例子ejb例子ejb例子ejb例子
这是大学选修课javaEE的一个基于EJB的作业,可以作为EJB的入门参考资料
EJB 3.0 入门经典源代码part1 共5卷
ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf
给初学者的一个好例子 介绍EJB3.0开发的过程,方便初学者学习EJB3.0
远程ejb示例 Wildfly中的EJB远程处理示例 作者:克里斯蒂安·西蒙< > 网址: : 关于 这个简单的示例应演示如何使用未在应用程序服务器本身中运行的客户端应用程序使用Wildfly进行EJB远程处理。 使用的应用程序...