Java资源网

| JAVA基础 | 环境配置 | JDBC | 线程技术 | Socket编程 | JavaMail | JAVA与XML | 设计模式 | 技术新闻 | Java认证 | 程序人生 软件下载
| JSP&Servlet | Spring | Struts | Hibernate | JBuilder | Eclipse | WebService | EJB技术 | J2ME开发 | 应用服务器 | JXTA | Ajax
Articles search文章搜索
   关键字:
   类 别:
       
New download 最新下载
· [组件]HTML Parser 1.5
· [教程]WebSphere Studio应用教程
· [组件]JDom 1.0
· [工具]Junit3.8.1
· [教程]EJB编程及J2EE系统架构和设计
· [教程]EJB教程
· [教程]J2EE Tutorial中文版
· [教程]Java编程思想2(英文)
· [教程]java编程思想(完整版)
· [教程]Java网络编程
New articles 最新文章
· 设计移动 Web 服务
· 解析XML的时候完全忽略DTD
· 理解XML Schema XML Schema 初步
· 标签库的深入研究
· 提升JSP应用程序的七大绝招
· 如何使用JDOM对XML文件进行操作
· 处理XML字符串中特殊字符
· 利用Digester把XML转换成为Java对象
· 使用WebService 和RMI远程协作
· 使用Axis开发Web Service程序
Articles top 热门文章
· Eclipse基础--plugin插件安装(6644)
· eclipse+tomcat+lomboz的安装配置说明(4774)
· Java程序员就业前景(4584)
· Windows下JAVA环境变量的设置祥解(3788)
· Tomcat下JSP、Servlet和JavaBean环境的配置(3716)
· 使用links方式安装Eclipse插件(3698)
· 一个老程序员的心理话(3533)
· linux下jdk的安装与配置(3459)
· 初学者入门:Structs中基本配置入门(3334)
· Eclipse 运行命令行参数大全(3084)
您的位置:首页>>应用服务器>>实战JBOSS?D?D教你写第一个EJB
实战JBOSS?D?D教你写第一个EJB
2007-04-17   来源:Java资源网  作者:Java资源网

  前言
  本文是为想在JBOSS环境下进行EJB开发的读者而写的,在阅读本文之前,你最好对EJB有一个基本了解。
  
  JBOSS是一个开放源码的免费EJB服务器,它实现了其它J2EE所规定的大多数功能,现在sun公司已经把JBOSS作为J2EE1.4的标准实现服务器了,本文就带领大家从Jboss3.2.6的安装开始,一直到开发出一个完整的”hello,world”的ejb为止。
  
  JBOSS的安装与启动
  如果你是第一次使用JBOSS,你一定会感到很沮丧,因为它虽然是开放源码,并可以免费下载,但是它的文档或技术培训却是收费的,而且对于国人来说高不可及(几天的培训大约要10000美元,文档也要几十至几百美一份)!如果你试图在网上找一些关于JBOSS下简单入门的文章,可只是那么寥寥可数的几篇,而且很少有菜鸟级的文章。相反,对其核心设计等高深理论性的文章倒是居多,这样反倒让你越看越糊涂。因此,本文的目的就是:让你的JBOSS尽快地跑起来,并马上可以在其之上开发出简单的EJB!
  
  在安装JBOSS之前,首先要确定你已经安装了jdk1.3或以上版本,由于JBOSS不像weblogic等其它应用服务器捆绑了JDK,因此JBOSS非要jdk的支持才能运行。然后在 http://www.jboss.org网站上下载一个jboss的发行版(我下载的是jboss-3.2.6.zip),在本文中我使用的其稳定的发行版JBOSS3.2.6 (集成了tomcat4.1),需要附带一句的是tomcat是apache基金会旗下著名的开源jsp/servlet服务器,如果要更多的了解tomcat,请访问http://jakarta.apache.org 以获得更详细的信息。
  
  当你把jboss-3.2.6.zip下载之后,下一步就是将它解压缩,如果你是在windows上,可以用winzip或winrar;如果是在linux下,就用unzip命令,以我自己为例,假设我将它解压到了如下目录
  
  c:\ jboss-3.2.6
  
  相对于weblogic,websphere等j2ee服务器来说,JBOSS的启动是简单得出乎意料,如果你是windows用户,只需要进入c:\ jboss-3.2.6\bin下面,输入run.bat命令,JBOSS就跑起来啦;如果是linux用户的话,只需要进入c:\ jboss-3.2.6\bin下面,输入run.sh,那么JBOSS也同样运行。怎么样?是挺简单的吧?
  
 

  当你输入run.bat或run.sh后,你会发现屏幕上会不断地滚动一些提示信息,过大约1分钟之后(依赖于你机器的配置,我的是P4 1.7G,128M),提示信息就会停止滚动,如下图所示:
  
 

  (注意:如果你是在windows下,那么请让这个DOS窗口一直保持这种状态,千万不可将其中止!)
  
  这样,JBOSS就已经处于运行状态了。和其它J2EE服务器一样,JBOSS也提供了一个WEB方式控制台,使用方法是在IE浏览器中输入http://127.0.0.1:8080/web-console/,这样你就会看到如下图所示的一个控制台:
  
 

  怎么样?这个界面丝毫不比weblogic的差吧?通过这个控制台,你可以动态地对JBOSS的服务进行管理和监控。
  
  编写第一个EJB:”hello,world”
  
  下面我们正式开始EJB编程。在编写我们的第一个EJB之前,你应该对EJB有一个大致的了解,如果没有的话,建议你先到网上找一些这方面的文章来看,否则你将无法理解下面要讲述的内容。
  
  远程接口
  远程接口是指对于客户端而言所能看到了调用接口
  
  //HelloWorld.java
  package sample;
  /*这是一个远程接口,客户端调用这个接口来使真正的ejb工作*/
  public interface HelloWorld extends javax.ejb.EJBObject
  {
  public String hello() throws java.rmi.RemoteException;
  }
  
  Home接口
  我们可以把Home接口看做是一个制造EJB的工厂,Home接口告诉EJB容器:“嗨,我的客户要我生成一个EJB,现在我把这个任务交给你啦!”
  
  //HelloWorldHome.java
  package sample;
  /*Home接口告诉EJB容器怎样生成或销毁EJB的实例*/
  public interface HelloWorldHome extends javax.ejb.EJBHome
  {
  HelloWorld create() throws java.rmi.RemoteException,javax.ejb.CreateException;
  }
  
  EJB的实现
  这里才是真正的EJB的实现
  
  //HelloWorldBean.java
  package sample;
  import javax.ejb.SessionContext;
  /*这个类具体实现的远程接口HelloWorld*/
  pubic class HelloWorldBean implements javax.ejb.SessionBean
  {
  private SessionContext ctx;
  public void setSessionContext(SessionContext ctx)
  {
  this.ctx = ctx;
  }
  pubic void ejbRemove()
  {
  System.out.println(“ejbRemove()”);
  }
  public void ejbActivate()
  {
  System.out.println(“ejbActivate()”);
  }
  public void ejbPassivate()
  {
  System.out.println(“ejbPassivate()”);
  }
  /*hello方法是实际的业务逻辑,它可以在客户端显示“hello,world”这个字符串*/
  public String hello()
  {
  System.out.println(“hello()”);
  return “hello,world”;
  }
  }
  
  好了,这个会话EJB的全部代码编写完毕,下一步我们要做的是编写它的部署文件:
  
  ejb-jar.xml
  
  <?xml version="1.0" encoding="UTF-8"?>
  <ejb-jar>
  <description>JBoss Hello World Application</description>
  <display-name>Hello World EJB</display-name>
  <enterprise-beans>
  <session>
  <ejb-name>Hello</ejb-name>
  <home>sample.HelloHome</home>
  <remote>sample.Hello</remote>
  <ejb-class>sample.HelloBean</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Bean</transaction-type>
  </session>
  </enterprise-beans>
  </ejb-jar>
  
  这个ejb-jar.xml文件应放在当前项目的META-INF目录下,在本例中我将其放在
  F:\projects\jbss-tutorial目录下了,当然你应该根据需要来将它放在你自己的项目目录中,为了能更清楚地让你了解ejb-jar.xml文件的位置,以下我列出了这个示例的整个目录结构:
  
 

  这样我们就完成了一个简单的会话EJB的编写,但其实JBOSS还提供了一个额外的配置文件:JBoss.xml,利用它可以对JBOSS服务器进行更多的定制,但由于本例实在是太简单了,因此我们可以将它省略不写。
  
  虽然我们完成了这个会话EJB的编写,但还有最后的一步工作要做:打包。首先我们进入当前项目的根目录:
  
  cd F:\project\jboss-tutorial
  
  然后执行jar命令将所有的类及ejb-jar.xml打包:
  
  jar cf HelloWorld.jar sample META-INF
  
  这时你会发现,在当前目录下多了一个名为HelloWorld.jar的文件,这就是我们的最终成品。图解如下:
  
 

  
  部署我们的EJB
  部署EJB在JBOSS中是一件非常容易的事,你只需简单将HelloWorld.jar拷贝到c:\ jboss-3.2.6\server\default\deploy目录下就可以了。图解如下:
  
 

  这时,你可以切换到JBOSS运行的那个DOS窗口下,你会发现屏幕上会新出现如下提示信息:
  
  15:09:21,184 INFO [MainDeployer] Starting deployment of
  package: file:/F:/jboss
  -3.2.3/server/default/deploy/HelloWorld.jar
  15:09:21,324 INFO [EjbModule] Creating
  15:09:21,354 INFO [EjbModule] Deploying HelloWorld
  15:09:21,464 INFO [EjbModule] Created
  15:09:21,484 INFO [EjbModule] Starting
  15:09:21,555 INFO [EjbModule] Started
  15:09:21,555 INFO [MainDeployer] Successfully completed
  deployment of package: file:/F:/jboss-3.2.6/server/default/deploy/HelloWorld.jar
  
  客户端代码
  如果没有客户端代码的话,那么EJB对我们来说几乎毫无用处。以下我们将编写客户端代码来调用这个HelloWorld。
  
  如果你在同一台机器上运行客户端代码和JBOSS服务器的话,那以下代码无须任何修改就可以运行,但你的客户端在另一台机器上运行的话,那你要将源码中的相应行改变一下:
  
  /*以下是客户端源码中需要修改的行*/
  env.put(Context.PROVIDER_URL, "localhost:1099");
  
  假设EJB部署在一台IP地址为192.168.0.1的机器上,那么就应该将以上源码改为如下:
  
  /*以下是客户端源码中修改后的行*/
  env.put(Context.PROVIDER_URL, "192.168.0.1:1099");
  
  /*HelloWorldClient.java*/
  package sample;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  import java.util.Hashtable;
  public class HelloWorldClient
  {
  public static void main( String [] args )
  {
  Hashtable env = new
  --相关文章--
· 开源技术:tomcat5.0下配置ssl (2007-04-17)
· 开源技术基础:TOMCAT的用法 (2007-04-17)
· 开源技术之Tomcat数据源配置总结 (2007-04-17)
· 实例讲解配置之——TOMCAT集群配置 (2007-04-17)
· 实例讲解Apache+tomcat+ssl配置 (2007-04-17)
· 如何同时启动多个Tomcat服务器 (2007-04-17)

版权所有©2005-2006 JAVA资源网 渝ICP备05007591号 虚拟主机 | 关于我们 | 联系方式 | 广告业务 | 网站地图 | 友情链接