EJB3开发第一个无状态会话bean

无状态的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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值