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

开发第一个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

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

 

 

 

 

 

 

分享到:
评论

相关推荐

    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 ...

    jsp从入门到高级编程

    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 ...

    JSP高级教程

    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 ...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JSP高级编程

    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 使用...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java 面试题 总结

    EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖...

    iuhyiuhkjh908u0980

    我们的Hello World程序是你开发基于Struts2框架程序的第一步.这里我们会提供循序渐进的教程来开发基于Struts2框架的Hello World程序. 教程包含基本的步骤像创建目录结构,建立build.xml文件来使用Ant构建工具创建程序...

    java源码包2

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包3

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    java源码包4

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JSP快速入门教程

    第一讲(参考《Java Web程序设计基础教程》第1章) 1 JSP 和 Java的关系  一般Java指的标注版 Java SE  另外两个版本:Java EE 和 Java ME  JSP属于Java EE的一部分。  Java EE:  组件:Web层组件(JSP+...

Global site tag (gtag.js) - Google Analytics