EJB3.0开发一个远程接口无状态会话bean

EJB中的三种bean

会话beansession bean

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

实体beanentity bean

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

消息驱动beanmessage-driven bean

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

 

会话bean

无状态会话bean

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

有状态会话bean

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

EJB3.0开发一个无状态会话bean

编写EJB3.0接口类

package wang.ejb3; public interface HelloWorld { public String sayHello(String name); }  编写EJB3.0实现类

package wang.ejb3.impl; 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

<?xml version="1.0" encoding="utf-8"?> <project name="HelloWorld" basedir="."> <property name="src.dir" value="${basedir}/src" /> <property environment="evn" /> <property name="jboss.home" value="E:/jboss-5.0.1.GA"/> <property name="jboss.server.config" value="default"/> <property name="build.dir" value="${basedir}/build"/> <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}"> <classpath refid="build.classpath"/> </javac> </target> <target name="ejbjar" depends="compile" description="创建EJB发布包"> <jar destfile="${build.dir}/${ant.project.name}.jar"> <fileset dir="${build.dir}"> <include name="**/*.class"/> </fileset> </jar> </target> <target name="deploy" depends="ejbjar" description="发布EJB"> <copy file="${build.dir}/${ant.project.name}.jar" todir="${jboss.home}/server/${jboss.server.config}/deploy"/> </target> <target name="undeploy" depends="deploy" description="卸载EJB"> <delete file="${jboss.home}/server/${jboss.server.config}/deploy/${ant.project.name}.jar"/> </target> </project>  利用构建文件把该项目打成jar包,发布到jboss服务器中

编写jndi属性文件jndi.properties,在该文中配置相关属性,以便在客户端中利用jndi查找EJB业务类

java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.provider.url = localhost:1099  编写客户端类

package wang.ejb3.client; import javax.naming.InitialContext; import javax.naming.NamingException; import wang.ejb3.HelloWorld; public class EJBClient { /** * @param args */ 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业务方法成功。

 

 

 

 

你可能感兴趣的:(bean,Hibernate,String,jboss,ejb,include)