无状态的EJB:EJB容器不对EJB的状态进行管理(通常,对于无状态的EJB,容器采取单例模式来实现)
Ejb的编写方法:
1.定义Ejb接口
2.编写Ejb的实现类
3.定义Ejb的类型和Ejb的访问方式
4.部署,打成jar包---->jboss中,server--->default---->deploy
有状态Session Bean与无状态Session Bean区别
Stateless Session Bean可以暂时理解为单例(singleton)
stateful session bean可以暂时理解为prototype原型,每一次都从对象池中获得新的对象。
比如:有十个客户端,那么取得的都是不同的对象,Ejb容器要维护状态.
在一次会话过程中,无状态会话Bean不会保持其状态值.也就是说,在无状态会话Bean中,容器不会对Bean的状态进行管理。这就是它与有状态会话Bean的根本区别.
由于有状态会话Bean需要容器对其状态进行管理,所以要消耗更多的内存和性能,使用无状态会话Bean则能获得更好的性能.
package cn.itcast.ejb3;
public interface HelloWorld {
public String sayHello(String name);
}
package cn.itcast.ejb3.impl;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import cn.itcast.ejb3.HelloWorld;
@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld {
@Override
public String sayHello(String name) {
return name + "说:你好,世界!";
}
}
把上面的代码打成helloworld.jar仍到jboss中即可.
然后启动jboss服务器,这样客户端java应用程序就可以调用Ejb程序了!
开发EJB的客户端
package cn.itcast.test;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import cn.itcast.ejb3.HelloWorld;
public class EJBClient {
public static void main(String[] agrs) {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");
try {
InitialContext ctx = new InitialContext(props);
HelloWorld helloworld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
System.out.println(helloworld.sayHello("佛山"));
} catch (NamingException e) {
e.printStackTrace();
}
}
}
程序所需要的jar包就是jboss-4.2.2.GA\client所有的依赖包即可
<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" basedir=".">
<property name="src.dir" location="${basedir}\src"></property>
<property environment="env" />
<property name="jboss.home" value="${env.JBOSS_HOME}"></property>
<property name="jboss.server.config" value="default"></property>
<property name="build.dir" value="${basedir}\build"></property>
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.dir}" />
</path>
<target name="prepare">
<delete dir="${build.dir}" />
<mkdir dir="${build.dir}" />
</target>
<target name="compile" depends="prepare" description="编译">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<compilerarg line="-encoding UTF-8 " />
<classpath refid="build.classpath"></classpath>
</javac>
</target>
<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar destfile="${basedir}\${ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class" />
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar" description="发布ejb">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"></copy>
</target>
<target name="undeploy" description="卸载ejb">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"></delete>
</target>
</project>
分享到:
相关推荐
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
购物车是一个典型的有状态会话Bean的示例,当一个客户第一次打开购物车时,系统为他分配一个购物车的会话Bean,在以后,每当客户选购了商品将改变购物车的商品记录,而这些记录数据将保存到用户会话数据中。...
该示例使用Eclipse 3.3 Europa IDE、JDK 6.0、GlassFish 2.0翻写的第一个EJB 3.0会话bean应用。注意:必须首先安装GlassFish服务器,可以通过安装NetBean 6.0(M9)来完成安装该服务器,或能单独安装也行,然后在...
在本节讲解中,我们将深入探讨EJB3(Enterprise JavaBeans 3)中关于开发具有本地接口的无状态会话bean。无状态bean是EJB3中的一个关键组件,它们通常用于执行短暂、非持久化的业务逻辑,不维护任何会话状态。与有...
### Java开发无状态EJB应用详解 #### 一、引言 无状态会话Bean(Stateless Session Bean)是企业级Java应用中的一个重要组件类型,主要用于处理业务逻辑。与有状态会话Bean不同,无状态会话Bean并不保存客户端状态...
在EJB3中,开发无状态会话Bean变得非常简单。 ##### 1. 开发只存在Remote接口的无状态会话Bean **步骤如下:** **第一步**:定义一个包含所有业务方法的远程接口。该接口无需任何特定注解,类似于普通的Java接口...
与Stateful Session Bean(有状态会话Bean)不同,它维护了客户端会话状态,而Stateless Session Bean(无状态会话Bean)则不保留任何客户端状态,每次调用都独立于其他调用。Session Bean主要用于表示业务逻辑,...
#### 三、实战EJB之二:开发会话Bean(无状态会话Bean) **什么是无状态SessionBean?** 无状态会话Bean是一种EJB组件类型,它不保留客户端之间的任何状态信息。每次客户端请求都会创建一个新的实例,这意味着每个...
- **开发无状态会话Bean**: - 当开发一个只有Local接口的无状态会话Bean时,需要使用`@Local`注解声明接口是本地接口。 - 当开发一个只有Remote接口的无状态会话Bean时,需要使用`@Remote`注解声明接口是远程接口...
4. **简化会话bean(Simplified Session Beans)**:EJB3的无状态会话bean(`@Stateless`)和有状态会话bean(`@Stateful`)更加易用,不再需要接口和Home接口,只需一个实现了业务逻辑的类即可。 5. **实体bean的...
总结来说,EJB3.0的第一个"Hello, World"项目展示了如何在EJB环境中创建、配置和使用无状态会话bean。通过这个项目,我们可以了解到EJB3.0的注解驱动特性和基本的项目结构。理解并掌握这些基础知识,将有助于进一步...
EJB 3中的会话Bean分为无状态(Stateless)和有状态(Stateful)两种。无状态会话Bean适用于简单、无上下文的操作,而有状态会话Bean能维护客户端的会话状态。 3. **消息驱动Bean(Message-Driven Beans)**:处理...
本教程通过一个简单的例子介绍了如何使用WebLogic 10和EJB 3技术开发无状态会话Bean。从定义远程接口、创建业务对象到实现具体的会话Bean,再到最后的编译与打包,每一步都非常重要。掌握了这些基本步骤后,你可以...
- **创建**:当客户端第一次调用无状态会话Bean时,容器创建一个新实例。 - **销毁**:在方法调用结束后,容器可能会销毁这个实例,或者将其保持一段时间以备后续使用。 **3.3 编写一个无状态的SessionBean程序** ...
**开发无状态会话Bean** 无状态会话Bean是最常见的EJB类型,不维护与客户端的会话状态。它们适用于执行独立的计算任务或提供对数据库的无状态访问。文档将指导你如何定义无状态会话Bean接口和实现,以及如何调用其...