ejb3.0的第一次使用

2004年7月,EJB专家委员会公布了新的EJB3.0规范草本。2004年10月7号,JBoss发布了支持EJB3.0的第一个预览版本jboss-EJB-3.0_Preview_1。2004年11月5号,JBoss发布了支持EJB3.0的第二个预览版本jboss-EJB-3.0_Preview_2。

我们来完成第一个EJB3.0程序。

搭配环境

实现EJB3.0的环境要求使用JBoss的jboss-4.0.1RC1(已经有了RC2)和JDK1.5及更高版本。jboss-4.0.1RC1可以在www.jboss.org上下载,JDK1.5可以在java.sun.com得到。我们在windows环境下使用,所以下载相应windows版本。

首先安装JDK。下载jdk-1_5_0_01-windows-i586-p.exe,安装至相应目录,我安装至D:/Program Files/Java/jdk1.5.0_01。然后配置环境。在我的电脑->属性->高级->环境变量->系统变量中,设置JAVA_HOME=D:/Program Files/Java/jdk1.5.0_01,Path中将D:/Program Files/Java/jdk1.5.0_01/bin;写在最前。

下载jboss-4.0.1RC1.zip,直接解压缩到D:/jboss4下。相同方法设置JBOSS_HOME=D:/jboss4。

由于用到ant,所以还需要取得Apache Ant相关执行程序。在Apache服务器,Weblogic或Jbuilder等安装目录下可以找到,最好版本较高。我使用JBuilder2005下的,路径为D:/Borland/JBuilder2005/thirdparty/ant/bin;仍然设置在系统变量的Path中,写在JDK路径之后。(注意:如果ant版本较低将编译时报错,我的为Apache Ant version 1.6.2 compiled on July 16 2004)。

      还要用到jboss-EJB-3.0_Preview_2包,可以在www.jboss.org得到。解压后包括docs,lib两个文件夹和RELEASE_NOTES.txt和INSTALL.html两个说明文件。Docs文件夹中有主页文件index.html,包括了EJB3.0的规范草本ejb-3_0-edr-spec.pdf,指南文件夹tutorial(包括范例说明文件和源文件),配置说明文件夹reference和Hibernate3的文件夹。Lib文件夹是部署EJB3.0环境所需要的ejb3-interceptors-aop.xml和ejb3.deployer。

      运行简单的EJB3.0范例,我们只需要将ejb3-interceptors-aop.xml和ejb3.deployer文件夹拷贝到D:/jboss4/server/all/deploy下即可。

   我们将范例部署在all下,所以运行JBoss时我们使用

   Run –c all

   启动JBoss后我们就完成了环境的配置。

编写程序

   Docs文件夹下提供了许多EJB3.0各个方面的范例。我们以无状态bean为例运行范例。

   无状态bean范例在stateless文件夹下。包括了存放源文件的src和运行配置文件build.xml,JNDI配置文件jndi.properties和说明文件stateless.html。

   源文件包括Calculator.java ,CalculatorBean.java ,CalculatorLocal.java, CalculatorRemote.java 和Client.java。

   在EJB3.0环境下编写无状态bean时很容易的。所有的bean类型就是homeless所以只需要创建一个bean类和实现至少一个接口。

在CalculatorBean.java我们声明一个无状态bean只需要声明为 @Stateless,EJB容器就会部署这个类为无状态bean。

import javax.ejb.Stateless;

@Stateless

public class CalculatorBean implements CalculatorRemote, CalculatorLocal

{

  public int add(int x, int y)

  {

     return x + y;

  }

  public int subtract(int x, int y)

  {

     return x - y;

  }

}

这个CalculatorBean实现了两个接口。一个是remote,一个是local。现在在EJB3.0中你可以仅仅实现一个remote,一个local或两个都实现。

 

在CalculatorRemote.java定义Calculator bean 的remote接口你仅仅需要标识其为@Remote。

import javax.ejb.Remote;

 

@Remote

public interface CalculatorRemote extends Calculator

{

}

同样在CalculatorLocal.java你也仅仅需要标识一个@Local就可以定义Calculator bean 的local接口

import javax.ejb.Local;

 

@Local

public interface CalculatorLocal extends Calculator

{

}

Calculator bean需要两个JNDI的绑定分别对应@Remote 和@Local接口。默认的,JBoss使用接口的全名作为JNDI的名字。这使得你可以容易的调用CalculatorRemote.class.getName()来查找一个JNDI名字对应的引用。

在Client.java中你可以发现是使用remote接口的全名来查找无状态bean,也可以注意到并不存在HOME接口。

import org.jboss.tutorial.stateless.bean.Calculator;

import org.jboss.tutorial.stateless.bean.CalculatorRemote;

import javax.naming.InitialContext;

 

public class Client

{

  public static void main(String[] args) throws Exception

  {

     InitialContext ctx = new InitialContext();

     Calculator calculator = (Calculator) ctx.lookup(CalculatorRemote.class.getName());

 

     System.out.println("1 + 1 = " + calculator.add(1, 1));

     System.out.println("1 - 1 = " + calculator.subtract(1, 1));

  }

}

现在你可以直接执行这个无状态bean了。

运行结果

  这个实例使用ant机制运行,所以需要配置build.xml。不同的build.xml中需要设置不同的run参数中的classname:

  <target name="run" depends="ejbjar">

     <java classname="org.jboss.tutorial.stateless.client.Client" fork="yes" dir=".">

        <classpath refid="classpath"/>

     </java>

  </target>

JNDI的配置相同jndi.properties:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces

java.naming.provider.url=localhost

 

   打开命令运行窗口,到范例目录下,如

D:/jboss-EJB-3.0_Preview_2/docs/tutorial/stateless,键入命令ant编译文件。编译成功会显示:BUILD SUCCESSFUL。

成功编译后会目录下会多一个build目录,为编译后的class文件和tutorial.ejb3的文件。

然后运行 ant run,执行程序,我们可以看到:

Buildfile: build.xml

prepare:

compile:

ejbjar:

run:

    [java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main

] - Failed to load soap remoting transport: org/apache/axis/AxisFault

    [java] 1 + 1 = 2

    [java] 1 - 1 = 0

BUILD SUCCESSFUL

Total time: 3 seconds

 

其中的信息

[java] 2005-01-12 15:07:25,296 INFO org.jboss.remoting.InvokerRegistry[main

] - Failed to load soap remoting transport: org/apache/axis/AxisFault

是JBoss的一个bug,我们可以不去关心。他们会在下一版本改进。

 

至此,我完成了一个EJB3.0的范例。我们可以发现EJB3.0带给我们的惊喜。我们不必再去配置大量繁琐的部署描述和复杂的接口。相信更多的EJB3.0的惊喜在等待着我们去发掘。 

该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值