EJB 随笔<一>

13 篇文章 0 订阅

       之前学习过EJB,但是好久没有使用了,由于项目关系,所以重操旧业。但是发现突然间对EJB使用不是很顺手,所以重新了解了一下EJB,这次记录下来吧。

基础知识这里就不在赘述了,google一把一把的,就说一下我比较困惑的几点


1、同一个interface,不可以在同一个实现中,既使用@Remote,又使用@Local

2、同一interface,可以在不同实现中,及使用@Remote,又使用@Local

例子:


public interface IReportDaoLocal {
public void saySomething();
}


实现1

import javax.ejb.Stateless;
@Stateless
public class ReportDaoLocal implements IReportDaoLocal {
@Override
public void saySomething() {
System.out.println("I am in ReportDaoLocal");
}
}

实现2

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

@Stateless
@Remote({IReportDaoLocal.class})
public class ReportDaoremote implements IReportDaoLocal {
@EJB(name="ReportDaoLocal")
private IReportDaoLocal reportlocal;

@Override
public void saySomething() {
System.out.println("i am local interface of reportDao Local");
reportlocal.saySomething();
}
}


这样实现是没有问题的,下边这种实现方式是错误的

import javax.ejb.Stateless;
@Stateless

@Local({IReportDaoLocal .class})

@Remote({IReportDaoLocal .class})
public class ReportDaoLocal implements IReportDaoLocal {
@Override
public void saySomething() {
System.out.println("I am in ReportDaoLocal");
}
}


3、如果interface 没有继承其他interface,则不可以使用@Stateless,@Local,@Remote,如果有其他继承接口,没有试验

例如:

@Stateless
public interface IReportDaoLocal {
public void saySomething();
}

这是错误的,虽然没有写@Local,只写@Stateless默认是Local端口

4、如果一个实现类,继承了另一个实现类,而另一个实现类被标注了@Stateless或者@Remote标注,在Jboss 5服务器中,第一个实现类是不会被JNDI注册的,即是说,第一个实现类不会成为服务,只是一个普通的类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值