EJB中的三种bean
会话bean(session bean)
负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。
实体bean(entity bean)
它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。
消息驱动bean(message-driven bean)
它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力。
会话bean
无状态会话bean
平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高,正因为一个bean实例被多个用户使用,那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的。
有状态会话bean
有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用,那么,用户设置的值是不会被其他用户所修改,所以可以正确保存用户设置的值,因此是有状态的。
EJB3.0开发一个无状态会话bean
编写EJB3.0接口类
public interface HelloWorld {
public String sayHello(String name);
}
编写EJB3.0实现类
import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Local;
import javax.ejb.Stateless;
import wang.ejb3.HelloWorld;
import wang.ejb3.HelloWorldLocal;
import wang.ejb3.Other;
@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld, HelloWorldLocal {
@EJB Other other;
public String sayHello(String name) {
return name + "说:你好,世界";
}
}
编写项目的构建文件build.xml
利用构建文件把该项目打成jar包,发布到jboss服务器中
编写jndi属性文件jndi.properties,在该文中配置相关属性,以便在客户端中利用jndi查找EJB业务类
import javax.naming.InitialContext;
import javax.naming.NamingException;
import wang.ejb3.HelloWorld;
public class EJBClient {
public static void main(String[] args) {
try {
InitialContext ctx = new InitialContext();
HelloWorld helloworld = (HelloWorld)ctx.lookup("HelloWorldBean/remote");
System.out.println(helloworld.sayHello("李四"));
} catch (NamingException e) {
e.printStackTrace();
}
}
}
运行jboss服务器,运行客户端类的main方法,得到执行结果:
李四说:你好,世界
从结果说明,客户端调用ejb业务方法成功。
本文来自CSDN博客,转载请标明出处:开发一个远程接口无状态会话bean%20-%20天空的云%20-%20CSDN博客.htm