`
anxin587
  • 浏览: 24003 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

开发第一个EJB组件-Hello

阅读更多

前两天开始学习EJB,想学的很久了,一直总认为自己的水平学起来会很困难,其实不过是给自己找了一个接口罢了,无论怎么样,终于开始学习了,昨天开始写Hello,根据精通EJB书上所说的例子,写好了代码需要如何编译,编译完了又怎么样,可惜书上面说的不是很清楚,有好多的细节多给省略了,所以只有自己取google了啊。

最后还是部署成功了,过程如下:

一, 编写EJB组件代码

1 远程接口

远程接口支持EJB组件暴露的所有业务方法,当客户同EJB对象交互时,需要使用这一接口,容器厂商会实现这一接口,而相应的实现对象就是EJB对象

package examples;

public interfact Hello extends javax.ejb.EJBObject{  // 继承于EJBObject,容器生成的EJB对象实现了远程接口

   public String hello() throws java.rmi.RemoteException;// 仅实现了单个业务方法,Bean类需要实现hello方法,由于该接口是RMI-IIOP类型的远程接口(间接继承javarmi Remote)因此必须抛出远程异常,远程异常表明了网络问题或其他致命问题

}

2 本地接口 为访问EJB组件的业务方法,本地客户应该使用本地接口,而不是远程接口,本次接口是远程接口的效率提升,当本地客户同EJB本地对象交互时,需要使用这接口,相应的实现对象就是EJB本地对象,EJB本地对象会将客户请求委派给实际的EJB BEAN 类,本地接口继承于EJBLocalObject接口,不需要抛出RemoteException

package examples;

public interface HelloLocal extends javax.ejb.EJBLocalObject{

public String hello();

}

3 Home接口,为创建和销毁EJB对象,开发者需要使用Home接口,Home接口的实现是Home对象,而Home对象有EJB服务器提供的工具生成, 该接口存在create()方法,它对应于HelloBean中的ejbCreate()方法,Home对象充当了创建EJB对象的工厂

package examples;

public interface HelloHome extends javax.ejb.EJBHome{

Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;// 创建EJB对象

}

为获得EJB对象的引用,客户需要使用create方法,create方法还能完成EJB组件的初始化工作,该接口继承于EJBHome

4 本地Home接口,本地Home接口是Home接口的高性能版本

package examples;

public interface HelloLocalHome extends javax.ejb.EJBLocalHome{ //继承于LocalHome

HelloLocal create() throws javax.ejb.CreateException;

}

5 Bean类 HelloBean实现了javax ejb SessionBean接口,供实现会话Bean使用,HelloBean的ejbCreate方法和Home对象的create方法一致,当个业务方法hello 返回HELLO EJB,无状态会话bean不会使用到ejbActivate和ejbPassivate方法ejbRemove 当销毁HelloWorld ejb实例时,不需要清楚任何资源

package examples;
import javax.ejb.SessionContext;
public class HelloBean implements javax.ejb.SessionBean
{
 private SessionContext ctx;

// EJB 规范定义的方法

 public void ejbCreate()
 {
  System.out.println("ejbCreate()");
 }
 
 public void ejbRemove()
 {
  System.out.println("ejbRemove");
 }

 public void ejbActivate()
 {
  System.out.println("ejbActivate");
 }

 public void ejbPassivate()
 {
  System.out.println("ejbPassivate()");
 }

 public void setSessionContext(javax.ejb.SessionContext ctx)
 {
  this.ctx=ctx;
 }

//业务方法

 public String hello()
 {
  System.out.println("hello()");
  return "Hello World";
 }

}

6 部署描述符

这个地方有点不是太好理解了啊,或许因为本人对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 version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:msi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">-->
<ejb-jar>  
      <description>Hello Ejb</description>  
      <display-name>Hello</display-name>
<enterprise-beans>
 <session>
  <ejb-name>Hello</ejb-name>
  <home>examples.HelloHome</home>
  <remote>examples.Hello</remote>
  <local-home>examples.HelloLocalHome</local-home>
  <local>examples.HelloLocal</local>
  <ejb-class>examples.HelloBean</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Container</transaction-type>
 </session>
</enterprise-beans>
</ejb-jar>

就是上面的去掉doctype那段,加上下面那段的,可是部署的时候却一直错,后来查了查资料改过来的,一会还要研究下,

7编译java文件

编译java文件首先要取得java文件中用到的外部包,好像这个包可以从JBOSS中获得吧,我是从eclipse里面拷出来的,本来的从网上down的j2ee。jar没有用,将编译好的class文件进行打包

jar cvf hello.jar examples META-INF

其中examples目录底下是刚才编译的类了,META-INF下面放的是ejb-jar.xml,打包的时候会生成一个MANIFEST.MF在META-INF下面,打包完成

8部署HELLO.JAR

我用的服务器是JBOSS3.2.6,感觉版本问题不是很大吧,cmd到jboss的bin下面,然后run -c all 启动服务器,把hello.jar 拷到all下面的deploy,jboss就会给出消息了啊,如果成功的话会出现如下信息

[EJBModule] Deploying hello

[EJBDeployer]deployed :file xxxxxx.xxxx/xxx/hello.jar

这样就部署成功了,呵呵!坚持学习。下面准备客户端调用去

 

 

 

 

 

 

分享到:
评论

相关推荐

    完整EJB3.0第一个HelloWord,

    在EJB3.0的第一个"Hello, World"项目中,我们将学习如何创建和配置一个简单的EJB组件。首先,我们需要了解EJB的基本概念。EJB分为三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean...

    ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端

    **ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...

    ejb3 第5讲--通过ANT提高EJB应用的开发效率

    **ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...

    ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务

    至于“ejb3HelloWorld”这个压缩包文件,通常它可能包含了一个简单的EJB 3示例项目,用于展示如何创建和部署一个基本的EJB,以及如何通过注解注入其他bean。在这个项目中,你可能会看到如下的结构: - `ejbModule`...

    jboss7.1+ejb3.1建立第一个Ejb项目

    本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...

    ejb3 第6讲--开发具有本地接口的无状态bean

    EJB 3是其重要的一个版本,引入了诸多简化开发的特性,使得Java EE开发更为直观和高效。 首先,我们来理解什么是本地接口(Local Interface)。在EJB 3中,本地接口是客户端与bean通信的一种方式,它不涉及远程调用...

    EJB3开发第一个无状态会话bean

    **EJB3 开发第一个无状态会话 Bean 知识详解** 无状态会话 Bean(Stateless Session Bean)是企业级 Java(EJB)3.0 中的核心组件,主要用于实现业务逻辑,它不保存任何特定客户端的状态信息。本篇文章将深入讲解...

    eclipse + JBoss 5 + EJB3开发指南

    #### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1. **Eclipse**:版本3.4.2,推荐使用针对...

    EJB入门课件(PPT)

    **实验1:编写你的第一个EJB程序** 在这一部分,你将学习如何创建和部署一个基本的EJB组件。首先,你需要了解EJB容器的角色,它是如何管理和支持EJB组件的生命周期。然后,将学习如何使用EJB的API定义实体Bean、...

    HelloWorld1_初识javaee_

    JavaEE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的版本。它提供了丰富的API和服务器环境,用于构建分布式、多层架构的企业应用程序。...这是一个逐步深入JavaEE世界的第一步。

    EJB3.0的学习文档

    #### 2.1 第一个 Entity Bean:HelloWorld 创建一个简单的实体Bean,通常会包含`@Entity`、`@Table`、`@Id`等批注,用于表示数据库中的一个表及其记录。 #### 2.2 解说 Entity 实体Bean是EJB3.0中的持久化对象,...

    netbeans_Facelets_Seam_Ejb3编程入门

    在“基本Seam应用开发”章节,作者通过一个简单的“Hello World”示例,演示了如何创建一个包含Seam组件的EAR(Enterprise Archive)项目。这涉及到: - **EAR项目配置**:如何在NetBeans中创建和配置一个包含多个...

    21.-Indriana-Hello-Spring:你好春天的职责

    标题中的“21.-Indriana-Hello-Spring:你好春天的职责”表明这是一个关于Spring框架的教程项目,可能是第21个章节,由Indriana编写,旨在介绍Spring的基本概念和关键职责。描述中的“你好春天的职责”进一步确认了这...

    Java服务器开发(二)写第一个Servlet

    在"Java服务器开发(二)写第一个Servlet"这个主题中,我们将专注于Servlet的基础。Servlet是处理HTTP请求和响应的核心组件,它运行在Web容器(如Tomcat、Jetty或MyEclipse内置的服务器)中。 首先,你需要一个集成...

    走出 JNDI 迷宫.pdf

    - **初始上下文**:这是进入JNDI名称空间的第一个入口点。通过创建`InitialContext`对象,开发者可以开始查找EJB组件。 - **子上下文**:子上下文是初始上下文下的命名区域,可以进一步组织命名资源。 #### 寻找...

    jsp servlet 入门学习资料-新手一看就懂

    6.1 第一个JSP程序—HelloWorld! 6.2 注释的使用 6.3 脚本元素 6.3.1 声明 6.3.2 表达式 6.3.3 脚本代码 6.4 page指令 6.4.1 import 6.4.2 session 6.4.3 错误处理 6.5 包含其他文件 6.6 使用JavaBean ...

    超经典的JBOSS入门文章

    **3、编写第一个EJB:Hello, World** EJB是Java企业级应用的核心组件,用于构建分布式、事务处理和安全的业务逻辑。首先,我们需要定义两个接口:远程接口(Remote Interface)和家庭接口(Home Interface)。 **...

Global site tag (gtag.js) - Google Analytics