JBoss EJB3(HelloWorld)备忘记

JBoss EJB3(HelloWorld)备忘记

EJB (Enterprise JavaBeans) 是 J2EE 的核心组件,
主要目的是提供开发员一个企业基建架构, 使其更容易开发实用的应用程式.
由于这个目的在 EJB2 时彻底失败. 更加重开发员的工作.
故 EJB3 的主要目标是修正及改良 EJB2 的问题. 期望能够真正简化开发员的工作.

这里并不打算介绍 EJB2 的不足及 EJB3 增强的特性. 亦不打算对 EJB 作简介.
因为这些在网路上很容易找到相关的教学. 亦不是这编文章的目的.
这编备忘记主要是实作 Stateless Session Beans HelloWorld.

JBoss 是一个开源的 J2EE 服务器,  JBoss 4 版本之后支持 EJB3 ,
当其他 J2EE 应用系统需要重启动才能检测发布时, JBoss 2.0 版本后便提供自动发布检测,
这是第一个 J2EE 应用系统提供自动发布及重发布检测. JBoss 3.0 后更增强此功能,
加入自动追踪与发布相依的服务. 这特性尤其适合要求高的电信系统.

只要简单设定 JBoss URL, 就能够从任何的远端网络启动服务,
这可使得单独的服务器更容易集中管理分布式的 JBoss 系统.

JBoss 提供以下远端呼叫协定:
Fast Socket
Fast Socket over HTTP (HTTP tunneling)
IIOP
JMS
SOAP

备忘记开始:
[1] 安装 jdk 5
[2] 安装 JBoss EJB3
[3] 第一次启动 JBoss
[4] 安装 Eclipse WTP
[5] 安装 JBoss IDE
[6] 使用 Eclipse 建立第一个 EJB3 Project [ 即 HelloWorld ]
[7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces
[8] 建立客户端测试程式
[9] 使用 ANT 建立 EJB-JAR 并执行 Client 程式

这..这.. 简称它为 JBoss EJB3 HelloWorld 9 步曲.

[1] 安装 jdk 5:
下载 jdk-1_5_0_07-nb-5_0-win-ml.exe
http://java.sun.com/j2se/1.5.0/download-netbeans.html
安装至 D:/jdk1.5.0_07
新增环境变数 JAVA_HOME=D:/jdk1.5.0_07
D:/jdk1.5.0_07/bin 加入至 PATH 中
D:/jdk1.5.0_07/lib/dt.jar 及 D:/jdk1.5.0_07/lib/tools.jar 加入至 CLASSPATH 中
执行 D:/>java -version
输出 java version "1.5.0_07" 表示安装成功.

[2] 安装 JBoss EJB3:
这里为了简化备忘过程, 故使用网上直接执行安装,
[ 亦可选择下载 JBoss AS 包 及 EJB3 包安装 ]
http://jboss.sourceforge.net/jnlp/jboss-4.0.4.GA-installer.jnlp
http://labs.jboss.com/portal/jbossas/download
安装至 D:/jboss
安装时选择 ejb3-clustered [ 方便日后使用 cluster ], 如下图所示


安装完后, 新增环境变数 JBOSS_HOME=D:/jboss
D:/jboss/bin 加入至 PATH 中

JBOSS 目录结构如下所示:
D:/jboss
    |-- bin
    |-- client
     '-- docs
       +|-- dtd 
         |-- lib
         `-- server
              +|-- all
              +|-- mininal
                `-- default
                     +|-- conf    
                     +|-- data    
                     +|-- deploy    
                       |-- lib
                       |-- log        
                     +|-- tmp
                     +|-- work            
       
bin : JBoss 开关 Scripts.    
client : 与JBoss通讯使用的客户端 libraries ( JARs )
docs : 设定文档样本. ( 如资讯库设定文档样本等 )
docs/dtd : JBoss 不同XML 的 Document Type Definitions (DTDs) 档.
lib : JBoss 启动时, 会读取放在这里被不同配置共享的 libraries.
server : 存放 JBoss 不同配置档案.
server/default : JBoss 预设的配置档案.
server/default/conf : JBoss 配置档案.
server/default/data : JBoss 资料库档案.
server/default/deploy : JBoss 自动发布检测目录. ( EBJ-JARs, WARs 及 EARs 放下去, JBoss 会自动检测 )
server/default/lib : JBoss 启动此配置目录时, 会读取这里的 libraries.
server/default/log : 存放 JBoss 记录(日志)档案.
server/default/tmp : 存放 JBoss 暂存档案.
server/default/work : 存放 JBoss 编译后的java byte code.

[3] 第一次启动 JBoss:
run.bat -c config-name
[ 这里使用 ejb3-clustered 安装, 只能选其中一种, 预设是 default ]
[ config-name 为 mininal , 启动最小配置模式 ]
[ config-name 为 default , 启动预设配置模式, 不加任何参数亦是此预设模式 ]
[ config-name 为 all , 启动全部配置模式 ]

使用预设配置模式, 执行
D:/jboss/bin>run.bat
网页输入 http://localhost:8080/ ,出现如下画面即安装成功:


如果分开安装 JBoss AS 及 EJB3 就可以打开下面连结. 网上安装则没有此功能.
点击上图的 JBoss Web Console 进入JBoss Web控制介面. 如下图所示:


[4] 安装 Eclipse WTP:
下载 wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
http://www.eclipse.org/webtools/
http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R-1.5.0-200606281455/wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
解压至 D:/eclipse_wtp

[5] 安装 JBoss IDE:
Eclipse:Help -> Software Updates -> Find and Install -> Search for new features to install
按 New Remote Site
Name: JBOSS IDE
URL: http://download.jboss.org/jbosside/updates/stable
选择最新的版本然后安装.

[6] 使用 Eclipse 建立第一个 EJB3 Project [ 即 HelloWorld ]:
Eclipse: File -> New -> Other -> EJB 3.0 -> EJB 3.0 Project
Project Name: HelloWorldEJB3 -> Next
选择 Create a JBoss configuration
打开后右键点选 JBoss 4.0.x -> new
Name : jboss_configuration
JBoss 4.0.x Home Directory : D:/jboss
Server Configuration:default
这里 JDK 面版里的 Runtime JRE 要设定 jdk 5 的.
然后按 Apply 及 Close, [ 这里如果按 Debug 就会在 Eclipse 里启动 JBoss ]
设定如下图所示:

然后按 Finish. HelloWorldEJB3 project 就会成功建立.

[7] 建立 HelloWorld Stateless Session Bean 及 Local, Remote interfaces:
/*----------------------- HelloWorld.java ---------------------*/
package ejb3.joeyta.sessions;
public interface HelloWorld {
 public String echo(String msg);
}
/*----------------------- HelloWorld.java ---------------------*/

/*----------------------- HelloWorldLocal.java ----------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Local;
@Local
public interface HelloWorldLocal extends HelloWorld {
}
/*----------------------- HelloWorldLocal.java ----------------*/

/*----------------------- HelloWorldRemote.java ---------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Remote;
@Remote
public interface HelloWorldRemote extends HelloWorld {
}
/*----------------------- HelloWorldRemote.java ---------------*/

/*----------------------- HelloWorldBean.java -----------------*/
package ejb3.joeyta.sessions;
import javax.ejb.Stateless;
@Stateless
public class HelloWorldBean implements HelloWorldRemote, HelloWorldLocal {
 public String echo(String msg) {
  System.out.println("Joeyta try Hello World.");
  return msg;
 }
}
/*----------------------- HelloWorldBean.java -----------------*/

[8] 建立客户端测试程式:
/*----------------------- HelloWorldClient.java ---------------*/
package ejb3.joeyta.clients;
import javax.naming.InitialContext;
import ejb3.joeyta.sessions.HelloWorld;
public class HelloWorldClient
{
   public static void main(String[] args) throws Exception
   {
      InitialContext ctx = new InitialContext();
      HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
      System.out.println(helloWorld.echo("Hello World, Joeyta"));
   }
}
/*----------------------- HelloWorldClient.java ---------------*/

项目结构如下所示:


[9] 使用 ANT 建立 EJB-JAR 并执行 Client 程式:
在 HelloWorldEJB3 project 下建立 build.xml [ ANT build File ]
内容如下:
<!------------------------- build.xml ------------------------------->
<?xml version="1.0"?>
<project name="JBoss" default="run.HelloWorldClient" basedir=".">
 <property environment="env" />
 <property name="jboss.home" value="${env.JBOSS_HOME}" />
 <property name="classes.dir" value="bin" />

 <path id="classpath">
  <fileset dir="${jboss.home}/client">
   <include name="**/*.jar" />
  </fileset>
  <pathelement location="${classes.dir}" />
 </path>
 
 <target name="clean">
  <delete file="${basedir}/HelloWorld.jar" />
  <delete file="${jboss.home}/server/default/deploy/HelloWorld.jar" />
 </target>
  
 <target name="ejbjar" depends="clean">
  <jar jarfile="HelloWorld.jar">
   <fileset dir="${classes.dir}">
    <include name="ejb3/joeyta/sessions/*.class" />
   </fileset>
  </jar>
  <copy file="HelloWorld.jar " todir="${jboss.home}/server/default/deploy" />
 </target>

 <target name="run.HelloWorldClient" depends="ejbjar">
  <java classname="ejb3.joeyta.clients.HelloWorldClient" fork="yes" dir=".">
   <classpath refid="classpath" />
  </java>
 </target>
</project>
<!------------------------- build.xml ------------------------------->

点选 build -> Run As -> 2. Ant Build
Eclipse Console 输出为
Hello World, Joeyta
如下图所示:


JBoss Console  输出为
Joeyta try Hello World.
如下图所示:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章