- 浏览: 240693 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1464Usually we need to check the ta ... -
JMX Architecture & "Hello Word" the JMX way
2011-10-25 20:07 1819JMX Architecture Overview: JMX ... -
Jboss-eap-5.1 Messaging
2011-08-02 21:50 2481This section I will concertate ... -
Jboss-eap-5.1 starting up note
2011-07-26 22:46 2593Jboss enterprise platform 5 hav ... -
EJB Security & JAAS Demo
2011-05-21 19:39 1616PROLOGUE: When deploying ... -
JBoss LoginInitialContext Factory Implementation
2011-05-15 16:05 1537Jboss has a series of imp ... -
Jboss Reference Exception Gallery
2011-04-27 14:08 28991. Unable to locate a login con ... -
Hibernate Annotation 的一个问题,给点意见
2011-03-10 12:43 22问题:org.hibernate.annotations. ... -
大家说说BBC的网站用的是什么技术做的
2011-02-22 05:01 1443最近在英国出差,发现这里的一些网站做的相当有特色,有些网站不是 ... -
Hibernate OneToMany 单向和双向配置对数据存取性能的比较
2011-02-08 17:06 23341. 开篇说明:今天是春 ... -
对Hibernate属性(CascadeType、JoinColumn、JoinTable、ForeignKey等)的研究
2010-12-26 15:45 16689本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy ... -
EJB 学习阶段总结:JBoss下发布一个Toy企业应用
2010-12-25 12:11 2649解释题目:为什 ... -
EJB7: Message Driven Bean
2010-12-21 22:42 2153在企业系统中需要使用 ... -
EJB6: EntityBean例子
2010-11-26 14:48 1515本例子描述向EJB容器(JBoss)部署http: ... -
JPA dev: 几个问题总结(续)
2010-11-25 18:02 24892. 如何由PoJo类生成数据库中的表 首先可以根据实体间关 ... -
JPA dev: 几个问题总结
2010-11-25 16:56 3409最近工作中遇到几个与JPA相关的问题,本文通过一个例子总结一下 ... -
JAXB学习
2010-11-24 22:35 01 什么是JAXB? JAXB全称Java Ar ... -
EJB5: JPA扩展-J2SE环境下使用EntityManager
2010-11-10 19:07 2712好久没有写博客了,最近比较忙,今天抽时间写点,最近 ... -
EJB4:RMI和RMI-IIOP
2010-11-02 21:14 4138计划提纲:引入→RMI概念→RMI HelloWorld程序→ ... -
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
2010-10-26 22:43 6479本文的研究基于jboss-eap- ...
相关推荐
##### 1. **EJB容器的角色** - **定义**:EJB容器是运行EJB实例的环境,它负责管理EJB组件的生命周期,并提供必要的服务,如事务管理、安全性和持久性支持。 - **功能**:当一个EJB部署到容器中时,容器会为该EJB...
1. **注解驱动(Annotation-based)**:在EJB3中,开发者可以使用注解来声明组件的角色、生命周期方法和持久化属性,如`@Entity`、`@Stateless`、`@Stateful`、`@SessionBean`等,大大减少了XML配置文件的使用。...
1. **会话Bean**: - **无状态会话Bean**:不保存任何客户端状态,适用于一次性的、独立的操作。 - **有状态会话Bean**:保存了客户端的状态信息,允许多次交互,适合处理复杂业务流程。 2. **实体Bean**: - **...
揭示高级设计模式和关键的特定于EJB的实现问题,如源代码所示。 还包含二十种高级EJB模式的目录。
ejb3.0 入门经典ejb3.0 入门经典ejb3.0 入门经典ejb3.0 入门经典
EJB入门详解 EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)...
在这个 ejb 学习的例子中,我们将深入探讨实体Bean(Entity Bean)和会话Bean(Session Bean),以及它们如何与前端交互。 1. **实体Bean(Entity Bean)**: 实体Bean代表应用程序中的持久数据,通常映射到数据库...
1. **EJB组件类型**:EJB包括三种主要类型:Session Beans(会话bean)处理客户端交互,Entity Beans(实体bean)代表持久化数据,Message-Driven Beans(消息驱动bean)用于处理JMS消息。 2. **EJB容器**:EJB容器...
这个"EJB一个完整的例子"很可能是提供了一个实际的EJB应用开发的示例,帮助开发者理解EJB的工作原理和使用方法。EJB在Java EE(Java Platform, Enterprise Edition)框架中扮演着关键角色,主要负责处理业务逻辑和...
EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中的一部分,它提供了一种用于构建可部署在服务器端的企业级应用程序的框架。EJB 3.0引入了许多改进,使得开发过程更加简洁,降低了对XML配置的...
本人闲来研究了EJB的技术。编写了Ejb技术的所有实例bean,供有兴趣学习Ejb技术的初学者提供参考。包括的实例有:session bean的 statuless bean,statuful bean,entity bean的 BMP bean,CMP bean,messageDriver bean...
EJB经典入门例子 struts+ejb+jsf 有助于对struts和ejb搭配的了解
在提供的文件名列表中,我们可以看到ejb1到ejb5可能代表EJB的不同版本,从早期的EJB 1.x到EJB 5(实际上是EJB 3.1,因为EJB 5尚未正式发布)。myweb可能包含一个Web应用程序,该应用可能使用EJB作为其后端服务。ejb4...
【ejb例子程序】是一个演示如何在Java企业版(Java EE)环境中集成Enterprise JavaBeans (EJB) 和Java Persistence API (JPA) 的实例。EJB是Java平台上的一个核心组件,它提供了一种标准的方式来创建可部署在服务器...
**EJB(Enterprise JavaBeans)**是...通过这个入门例程,你将学习到如何创建和配置EJB组件,如何在Java EE环境中部署和测试它们,以及如何编写客户端代码来调用EJB服务。这将为你进一步深入Java EE开发打下坚实基础。
1. **打包EJB**:在MyEclipse中,右键点击EJB项目,选择“Export” > “Java” > “JAR file”,将EJB打包成JAR文件。 2. **部署到JBoss**:将生成的JAR文件复制到JBoss的deploy目录下。如果使用MyEclipse的服务器...
1. **打包**:将EJB类及其依赖项打包成`ejb-jar`文件。 2. **配置**:在应用服务器中配置EJB的部署信息。 3. **部署**:将`ejb-jar`文件部署到应用服务器。 **开发和部署测试程序** 1. **创建客户端应用程序**:...
1. 客户端查找EJB:客户端通过JNDI查找服务器上部署的EJB组件,获取远程接口的引用,从而调用EJB方法。 2. EJB内部查找资源:EJB组件自身也可以使用JNDI查找和获取其他资源,如数据源、邮件服务等。 下面是一个简单...
1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中的记录,提供持久化服务。 2. **会话Bean (Session Bean)**:提供业务逻辑,处理客户端请求,不负责存储状态。分为有状态会话Bean(Stateful ...