前两天开始学习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的第一个"Hello, World"项目中,我们将学习如何创建和配置一个简单的EJB组件。首先,我们需要了解EJB的基本概念。EJB分为三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean...
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
**ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...
至于“ejb3HelloWorld”这个压缩包文件,通常它可能包含了一个简单的EJB 3示例项目,用于展示如何创建和部署一个基本的EJB,以及如何通过注解注入其他bean。在这个项目中,你可能会看到如下的结构: - `ejbModule`...
本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...
EJB 3是其重要的一个版本,引入了诸多简化开发的特性,使得Java EE开发更为直观和高效。 首先,我们来理解什么是本地接口(Local Interface)。在EJB 3中,本地接口是客户端与bean通信的一种方式,它不涉及远程调用...
**EJB3 开发第一个无状态会话 Bean 知识详解** 无状态会话 Bean(Stateless Session Bean)是企业级 Java(EJB)3.0 中的核心组件,主要用于实现业务逻辑,它不保存任何特定客户端的状态信息。本篇文章将深入讲解...
#### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1. **Eclipse**:版本3.4.2,推荐使用针对...
**实验1:编写你的第一个EJB程序** 在这一部分,你将学习如何创建和部署一个基本的EJB组件。首先,你需要了解EJB容器的角色,它是如何管理和支持EJB组件的生命周期。然后,将学习如何使用EJB的API定义实体Bean、...
JavaEE,全称为Java Platform, Enterprise Edition,是Java平台针对企业级应用开发的版本。它提供了丰富的API和服务器环境,用于构建分布式、多层架构的企业应用程序。...这是一个逐步深入JavaEE世界的第一步。
#### 2.1 第一个 Entity Bean:HelloWorld 创建一个简单的实体Bean,通常会包含`@Entity`、`@Table`、`@Id`等批注,用于表示数据库中的一个表及其记录。 #### 2.2 解说 Entity 实体Bean是EJB3.0中的持久化对象,...
在“基本Seam应用开发”章节,作者通过一个简单的“Hello World”示例,演示了如何创建一个包含Seam组件的EAR(Enterprise Archive)项目。这涉及到: - **EAR项目配置**:如何在NetBeans中创建和配置一个包含多个...
标题中的“21.-Indriana-Hello-Spring:你好春天的职责”表明这是一个关于Spring框架的教程项目,可能是第21个章节,由Indriana编写,旨在介绍Spring的基本概念和关键职责。描述中的“你好春天的职责”进一步确认了这...
在"Java服务器开发(二)写第一个Servlet"这个主题中,我们将专注于Servlet的基础。Servlet是处理HTTP请求和响应的核心组件,它运行在Web容器(如Tomcat、Jetty或MyEclipse内置的服务器)中。 首先,你需要一个集成...
- **初始上下文**:这是进入JNDI名称空间的第一个入口点。通过创建`InitialContext`对象,开发者可以开始查找EJB组件。 - **子上下文**:子上下文是初始上下文下的命名区域,可以进一步组织命名资源。 #### 寻找...
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 ...
**3、编写第一个EJB:Hello, World** EJB是Java企业级应用的核心组件,用于构建分布式、事务处理和安全的业务逻辑。首先,我们需要定义两个接口:远程接口(Remote Interface)和家庭接口(Home Interface)。 **...