`
kylinsoong
  • 浏览: 239691 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EJB Dev 1: EJB入门例子

阅读更多

关键字: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

 

 

  • 大小: 7.2 KB
  • 大小: 21.4 KB
  • 大小: 18.7 KB
  • 大小: 8.4 KB
  • 大小: 9.6 KB
  • 大小: 6.4 KB
  • 大小: 2.4 KB
  • 大小: 18.5 KB
1
1
分享到:
评论

相关推荐

    EJB原理图:EJB工作原理

    ##### 1. **EJB容器的角色** - **定义**:EJB容器是运行EJB实例的环境,它负责管理EJB组件的生命周期,并提供必要的服务,如事务管理、安全性和持久性支持。 - **功能**:当一个EJB部署到容器中时,容器会为该EJB...

    EJB3入门例子

    1. **注解驱动(Annotation-based)**:在EJB3中,开发者可以使用注解来声明组件的角色、生命周期方法和持久化属性,如`@Entity`、`@Stateless`、`@Stateful`、`@SessionBean`等,大大减少了XML配置文件的使用。...

    EJB.rar_ejb_site:www.pudn.com

    1. **会话Bean**: - **无状态会话Bean**:不保存任何客户端状态,适用于一次性的、独立的操作。 - **有状态会话Bean**:保存了客户端的状态信息,允许多次交互,适合处理复杂业务流程。 2. **实体Bean**: - **...

    EJB设计模式:高级模式,流程和惯用语EJB Design Patterns: Advanced Patterns, Processes, and Idioms

    揭示高级设计模式和关键的特定于EJB的实现问题,如源代码所示。 还包含二十种高级EJB模式的目录。

    EJB入门[整理].pdf

    EJB入门详解 EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)...

    一个ejb学习时的简单例子

    在这个 ejb 学习的例子中,我们将深入探讨实体Bean(Entity Bean)和会话Bean(Session Bean),以及它们如何与前端交互。 1. **实体Bean(Entity Bean)**: 实体Bean代表应用程序中的持久数据,通常映射到数据库...

    EJB 和WEBLOGIC 结合例子

    1. **EJB组件类型**:EJB包括三种主要类型:Session Beans(会话bean)处理客户端交互,Entity Beans(实体bean)代表持久化数据,Message-Driven Beans(消息驱动bean)用于处理JMS消息。 2. **EJB容器**:EJB容器...

    EJB 一个完整的例子

    这个"EJB一个完整的例子"很可能是提供了一个实际的EJB应用开发的示例,帮助开发者理解EJB的工作原理和使用方法。EJB在Java EE(Java Platform, Enterprise Edition)框架中扮演着关键角色,主要负责处理业务逻辑和...

    ejb 3.0 jar 包 很全 part2

    EJB(Enterprise JavaBeans)3.0是Java EE(Enterprise Edition)平台中的一部分,它提供了一种用于构建可部署在服务器端的企业级应用程序的框架。EJB 3.0引入了许多改进,使得开发过程更加简洁,降低了对XML配置的...

    Ejb技术入门级实例大全

    本人闲来研究了EJB的技术。编写了Ejb技术的所有实例bean,供有兴趣学习Ejb技术的初学者提供参考。包括的实例有:session bean的 statuless bean,statuful bean,entity bean的 BMP bean,CMP bean,messageDriver bean...

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

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

    EJB例子

    在提供的文件名列表中,我们可以看到ejb1到ejb5可能代表EJB的不同版本,从早期的EJB 1.x到EJB 5(实际上是EJB 3.1,因为EJB 5尚未正式发布)。myweb可能包含一个Web应用程序,该应用可能使用EJB作为其后端服务。ejb4...

    ejb例子程序

    【ejb例子程序】是一个演示如何在Java企业版(Java EE)环境中集成Enterprise JavaBeans (EJB) 和Java Persistence API (JPA) 的实例。EJB是Java平台上的一个核心组件,它提供了一种标准的方式来创建可部署在服务器...

    一个EJB项目入门例程

    **EJB(Enterprise JavaBeans)**是...通过这个入门例程,你将学习到如何创建和配置EJB组件,如何在Java EE环境中部署和测试它们,以及如何编写客户端代码来调用EJB服务。这将为你进一步深入Java EE开发打下坚实基础。

    MyEclipse_JBoss4.0开发EJB组件环境配置(入门调试级)

    1. **打包EJB**:在MyEclipse中,右键点击EJB项目,选择“Export” &gt; “Java” &gt; “JAR file”,将EJB打包成JAR文件。 2. **部署到JBoss**:将生成的JAR文件复制到JBoss的deploy目录下。如果使用MyEclipse的服务器...

    实战EJB 实战EJB 实战EJB

    1. **打包**:将EJB类及其依赖项打包成`ejb-jar`文件。 2. **配置**:在应用服务器中配置EJB的部署信息。 3. **部署**:将`ejb-jar`文件部署到应用服务器。 **开发和部署测试程序** 1. **创建客户端应用程序**:...

    EJB中JNDI的使用源码例子

    1. 客户端查找EJB:客户端通过JNDI查找服务器上部署的EJB组件,获取远程接口的引用,从而调用EJB方法。 2. EJB内部查找资源:EJB组件自身也可以使用JNDI查找和获取其他资源,如数据源、邮件服务等。 下面是一个简单...

    EJB_TEST自己编写的EJB例子

    1. **实体Bean (Entity Bean)**:代表业务数据,通常映射到数据库中的记录,提供持久化服务。 2. **会话Bean (Session Bean)**:提供业务逻辑,处理客户端请求,不负责存储状态。分为有状态会话Bean(Stateful ...

    ejb3.0+Weblogic+Jboss安装配置及入门例子

    提供的文档"ejb3.0+Weblogic+Jboss安装配置及入门例子.doc"和"基于weblogic的EJB学习笔记.htm"应该包含详细的安装指南、配置步骤以及基础的EJB编程示例。"基于weblogic的EJB学习笔记-JSP编程-华夏名网资讯中心 虚拟...

Global site tag (gtag.js) - Google Analytics