EJB开发第二期---开发具有本地接口的无状态Bean

本文详细介绍了EJB中的bean分类,特别着重于会话bean的概念及其在EJB中的角色。重点阐述了无状态会话bean的开发流程与实践,包括开发工具的选择、开发步骤的解析以及如何使用Eclipse、JBoss服务器和Ant进行打包发布。

一、EJB中的bean

1.1 EJB中bean分类

会话bean(session bean)

负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。

实体bean(entity bean)

它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。

消息驱动bean(message-driven bean)

它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力。

1.2会话bean

无状态会话bean

平常,我们使用最多的是无状态bean,因为它的bean实例供多个用户使用,所以它的性能比有状态bean高。正因为一个bean实例被多个用户使用,那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的。

有状态会话bean

有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用所以性能开销比较大,正因为它的实例只被一个用户使用,用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的。

二、开发无状态会话bean

2.1 开发工具

IDE工具:Eclipse Java EE IDE for Web Developers Version: Indigo Service Release 2

JBoss服务器:jboss-4.2.3.GA

JDK:JDK-1.6

打包工具:Ant

EJB依赖jar包:jboss安装路径的client目录下所有Jar文件以及javaee.jar

2.2 开发无状态会话bean

在开发前,先熟悉一下无状态会话bean的调用流程图,如下图所示。

01. 浏览器请求Test.jsp文件。

02. 应用服务器的JSP引掣编译Test.jsp。

03. Tast.jsp通过JNDI查找获得HelIoWorld EJB的存根对象,然后调用SayHello{)方法,EJB容器截获到方法调用。

04. EJB容器调用HeIIoWorld实例的SayHello()方法 。

05. 返回客户端浏览器。

2.3 开发步骤

无状态会话bean的开发步骤如下:

(1) 定义一个包含业务方法的接口

这个接口不需要包含任何注释,它是一个普通的Java接口。调用EJB的客户端,使用这个接口引用从EJB容器返回的存根( stub)。代码如下:

package ejb3Hello;

public interface HelloWorld {

    public String SayHello(String name);

}

(2) 编写Bean class

HeIIoWorldBean.java。Bean类推荐的命名方式是"接口+Bean",如HeIIoWorldBean。代码如下:

package ejb3Hello.impl;

import ejb3Hello.HelloWorld;

import javax.ejb.Remote;

import javax.ejb.Stateless;

@Stateless

@Remote({HelloWorld.class})

public class HelloWorldBean implements HelloWorld{

    @Override

    public String SayHello(String name) {        

        return name+"say:hello,this is my first EJB3.0.";

    }

}

在Bean类上面有两个注释@Stateless@Remote@Stateless注释指明这是一个无状态会话Bean。@Stateless注释的定义如下:

Package javax.ejb;

@Target(TYPE) @Retention(RUNTIME)

public @interface Stateless {

String name() default "";

String mappedName() default "";

}

name()属性用于指定Session Bean的EJB名称。该名称在EJB Jar包中必须是全局唯一的,而在EAR中却可以重复,因为EAR可以包含多个EJB JAR,而每个JAR可以存在一个同名的EJB。在EAR中要定位某个EJB,可以这样使用:xxx.jar#HeIloWorldBean。如果不指定该属性,默认就是Bean class的非限定名称。对本例而言,EJB名称默认为HeIIoWorldBean。

mappedName()属性指定Bean的全局JNDI名称,这个属性在WebLogic、Sun应用服务器和glassfish起作用。

@Remote注释指定这个无状态Bean的remote接口。Bean类可以具有多个remote接口,每个接口之间用逗号分隔,如:@Remote({HeIIoWorld.class,Hello.class,World.class})。

如果只有一个接口,则可以省略大括号,对于本例而言,可以写成这样:@Remote(HeIloWorld.class)。

经过上面两步,一个HeIloWorld EJB就开发完了。现在将它发布到JBoss中。在发布前需要把它打成JAR色。打包JAR的方法有很多,如使用jar命令、集成开发工具或者Ant。下面介绍两种常用的打包方式:Eclipse打包向导和Ant打包。

三、EJB任务打包

3.1 Jar命令打包

jar命令打包比较简单,进入要被打包的文件根目录中,比如被打包程序的目录结构如下:

|---D:\webapp

|---Test.jsp

|--- WEB-INF

|---web.xml

可以进入到D:\webapp目录下,执行如下命令:

jar cvf EJBTest.jar war *

此命令将把Web应用的根目录下的所有文件打包成EJBTest.war文件,参数一:表示打包方式,参数二:表示打包后的文件名,参数三:表示文件类型。打包后的文件内容如下:

3.2 Eclipse打包

步骤一:选择打包程序右键或单击Flile菜单,如下图所示。

步骤二:选择Export选项,如下图所示,同时选择打包的类型:jar文件,填写文件路径文件名

http://www.nanpinjie.com/activity/detail/105133
http://www.nanpinjie.com/activity/detail/105111
http://www.nanpinjie.com/activity/detail/105089
http://www.nanpinjie.com/activity/detail/105069
http://www.nanpinjie.com/activity/detail/105047
http://www.nanpinjie.com/activity/detail/105029
http://www.nanpinjie.com/activity/detail/105009
http://www.nanpinjie.com/activity/detail/104988
http://www.nanpinjie.com/activity/detail/104969
http://www.nanpinjie.com/activity/detail/104950
http://www.nanpinjie.com/activity/detail/104931
http://www.nanpinjie.com/activity/detail/104901
http://www.nanpinjie.com/activity/detail/104883
http://www.nanpinjie.com/activity/detail/104858
http://www.nanpinjie.com/activity/detail/104835
http://www.nanpinjie.com/activity/detail/104800
http://www.nanpinjie.com/activity/detail/104783
http://www.nanpinjie.com/activity/detail/104763
http://www.nanpinjie.com/activity/detail/104742
http://www.nanpinjie.com/activity/detail/104727
http://www.nanpinjie.com/activity/detail/104723
http://www.nanpinjie.com/activity/detail/104700
http://www.nanpinjie.com/activity/detail/104686
http://www.nanpinjie.com/activity/detail/104661
http://www.nanpinjie.com/activity/detail/104639
http://www.nanpinjie.com/activity/detail/104621
http://www.nanpinjie.com/activity/detail/104606
http://www.nanpinjie.com/activity/detail/104585
http://www.nanpinjie.com/activity/detail/104566
http://www.nanpinjie.com/activity/detail/104549
http://www.nanpinjie.com/activity/detail/104491
http://www.nanpinjie.com/activity/detail/104472
http://www.nanpinjie.com/activity/detail/104453
http://www.nanpinjie.com/activity/detail/104428
http://www.nanpinjie.com/activity/detail/104409
http://www.nanpinjie.com/activity/detail/104391
http://www.nanpinjie.com/activity/detail/104323
http://www.nanpinjie.com/activity/detail/104317
http://www.nanpinjie.com/activity/detail/104283
http://www.nanpinjie.com/activity/detail/104264
http://www.nanpinjie.com/activity/detail/104245
http://www.nanpinjie.com/activity/detail/104222
http://www.nanpinjie.com/activity/detail/104201
http://www.nanpinjie.com/activity/detail/104182
http://www.nanpinjie.com/activity/detail/104160
http://www.nanpinjie.com/activity/detail/104140
http://www.nanpinjie.com/activity/detail/104121
http://www.nanpinjie.com/activity/detail/104099
http://www.nanpinjie.com/activity/detail/104079
http://www.nanpinjie.com/activity/detail/104051
http://www.nanpinjie.com/activity/detail/104030
http://www.nanpinjie.com/activity/detail/104011
http://www.nanpinjie.com/activity/detail/103989
http://www.nanpinjie.com/activity/detail/103972
http://www.nanpinjie.com/activity/detail/103949
http://www.nanpinjie.com/activity/detail/103928
http://www.nanpinjie.com/activity/detail/103910
http://www.nanpinjie.com/activity/detail/103884
http://www.nanpinjie.com/activity/detail/103870
http://www.nanpinjie.com/activity/detail/103849
http://www.nanpinjie.com/activity/detail/103827
http://www.nanpinjie.com/activity/detail/103811
http://www.nanpinjie.com/activity/detail/103790
http://www.nanpinjie.com/activity/detail/103766
http://www.nanpinjie.com/activity/detail/103748
http://www.nanpinjie.com/activity/detail/103727
http://www.nanpinjie.com/activity/detail/103707
http://www.nanpinjie.com/activity/detail/103687
http://www.nanpinjie.com/activity/detail/103666
http://www.nanpinjie.com/activity/detail/103647
http://www.nanpinjie.com/activity/detail/103628
http://www.nanpinjie.com/activity/detail/103607
http://www.nanpinjie.com/activity/detail/103532
http://www.nanpinjie.com/activity/detail/103510
http://www.nanpinjie.com/activity/detail/103487
http://www.nanpinjie.com/activity/detail/103469
http://www.nanpinjie.com/activity/detail/103382
http://www.nanpinjie.com/activity/detail/103355
http://www.nanpinjie.com/activity/detail/103317
http://www.nanpinjie.com/activity/detail/103301
http://www.nanpinjie.com/activity/detail/103280
http://www.nanpinjie.com/activity/detail/103253
http://www.nanpinjie.com/activity/detail/103228
http://www.nanpinjie.com/activity/detail/103205
http://www.nanpinjie.com/activity/detail/103142
http://www.nanpinjie.com/activity/detail/103121
http://www.nanpinjie.com/activity/detail/103074
http://www.nanpinjie.com/activity/detail/103049
http://www.nanpinjie.com/activity/detail/103019
http://www.nanpinjie.com/activity/detail/102999
http://www.nanpinjie.com/activity/detail/102974
http://www.nanpinjie.com/activity/detail/102950
http://www.nanpinjie.com/activity/detail/102931
http://www.nanpinjie.com/activity/detail/102914
http://www.nanpinjie.com/activity/detail/102889
http://www.nanpinjie.com/activity/detail/102864
http://www.nanpinjie.com/activity/detail/102335
http://www.nanpinjie.com/activity/detail/102312
http://www.nanpinjie.com/activity/detail/102254
http://www.nanpinjie.com/activity/detail/102232
http://www.nanpinjie.com/activity/detail/102205
http://www.nanpinjie.com/activity/detail/102076
http://www.nanpinjie.com/activity/detail/101972

多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法结合两阶段鲁棒模型与确定性模型,旨在应对电力系统中多源不确定性(如可再生能源出力波动、负荷变化等),提升系统运行的安全性与经济性。文档还列举了大量相关的电力系统优化研究案例,涵盖微电网调度、电动汽车集群并网、需求响应、配电网重构等多个方向,并提供了YALMIP等工具包的网盘下载链接,支持科研复现与进一步开发。整体内容聚焦于电力系统建模、优化算法应用及鲁棒性分析。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化的工程技术人员;熟悉优化建模(如鲁棒优化、分布鲁棒优化)者更佳。; 使用场景及目标:①开展电力系统动态最优潮流研究,特别是含高比例可再生能源的场景;②学习和复现分布鲁棒优化在IEEE118等标准测试系统上的应用;③进行科研项目开发、论文复现或算法比较实验;④获取相关Matlab代码资源与仿真工具支持。; 阅读建议:建议按文档结构逐步浏览,重点关注模型构建思路与代码实现逻辑,结合提供的网盘资源下载必要工具包(如YALMIP),并在Matlab环境中调试运行示例代码,以加深对分布鲁棒优化方法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值