基于J2EE规范的中间件——EJB开发实例2

前言

    上篇讲解了EJB开发的简单实例,我们对EJB也有了简单的认识,下面咱们对EJB进行继续的深入学习。

 

正题

   今天讲解的实例就是有状态和无状态的Ejb,所需的步骤跟上一篇讲解的一样,一个服务端项目,一个客户端项目.

   1.服务端(EJB项目):

      接口类:

     StatefulEjb.java:

package com.tgb.ejb;

public interface StatefulEjb {

	public void compute(int i);
	
	public int getResult();
}


 

     StatelessEjb.java:

package com.tgb.ejb;

public interface StatelessEjb {

	public void compute(int i);
	
	public int getResult();
}


 

      实现类:

    StatefulEjbBean.java:

package com.tgb.ejb;

import javax.ejb.Remote;
import javax.ejb.Stateful;


@Stateful
@Remote
public class StatefulEjbBean implements StatefulEjb {

	private int state;
	
	@Override
	public void compute(int i) {
		state = state + i;
	}

	@Override
	public int getResult() {

		return state;
	}
}


 

    StatelessEjbBean.java:

package com.tgb.ejb;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote
public class StatelessEjbBean implements StatelessEjb {

	private int state;
	
	@Override
	public void compute(int i) {
		state = state + i;
	}

	@Override
	public int getResult() {

		return state;
	}
}


   2.客户端:

      引入jar包:

     引入接口StatefulEjb和StatelessEjbjar包还有jboss的client包,还有配置jndi配置文件。

 

   编写main方法:

     StatefulEjbClient的main方法:

  

package com.tgb.ejb;

import javax.naming.InitialContext;

public class StatefulEjbClient {
	public static void main(String[] args) throws Exception{
		InitialContext context = new InitialContext();
		//第一次会话
		StatefulEjb ejb1 = (StatefulEjb)context.lookup("StatefulEjbBean/remote");
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		
		//第二次会话
		StatefulEjb ejb2 = (StatefulEjb)context.lookup("StatefulEjbBean/remote");
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
	}
}

     执行结果:0 1 2 3 0 1 2 3


     StatelessEjbClient的main方法:

package com.tgb.ejb;

import javax.naming.InitialContext;

public class StatelessEjbClient {
	public static void main(String[] args) throws Exception{
		InitialContext context = new InitialContext();
		//第一次会话
		StatelessEjb ejb1 = (StatelessEjb)context.lookup("StatelessEjbBean/remote");
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		ejb1.compute(1);
		System.out.println(ejb1.getResult());
		
		//第二次会话
		StatelessEjb ejb2 = (StatelessEjb)context.lookup("StatelessEjbBean/remote");
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
		ejb2.compute(1);
		System.out.println(ejb2.getResult());
		
		System.out.println("ejb1 == ejb2 ? : " + (ejb1 == ejb2));
	}
}

      执行结果:0 1 2 3 4 5 6 7

 

    通过观察两个客户端的执行结果我们就可以知道有状态和无状态的区别,有状态Bean可以保持记录每一个Bean的状态,而无状态Bean则不能。

 

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值