interface定义的时候就决定该接口是本地使用、还是远程使用。很多官方示例代码提供的都是在interface上加本地、还是远程
@Local
public interface Register
{
public void register();
public void invalid();
public String getVerify();
public void setVerify(String verify);
public boolean isRegistered();
public void destroy();
}
实现只管实现接口,不用管是本地使用还是远程使用
@Stateful
@Scope(EVENT)
public class RegisterAction implements Register
{
更好的实践是interface上不定义本地、远程,在实现类上定义本地、远程,这样interface也就可以被非ejb实现了。
public interface Register
{
public void register();
。。。
}
@Stateful
@Local
public class RegisterAction implements Register
{
当一个接口既可以远程调用也可以本地调用时,只需定义远程实现即可,ejb容器会对本地部署的bean自动进行本地调用。
在实际应用中,一个无状态Session Bean都应该实现Remote与Local接口。当会话Bean的某些方法只供EJB
容器内部调用而不对外暴露时,可以把他定义在Local接口。本节介绍如何开发一个具有Remote与Local 接口的
无状态Session Bean。开发前先介绍一下两个接口具有的方法,两者都含有方法Add(int a, int b),而Local接口含
有一个自己的方法:getResult()。下面是例子的源代码。
定义远程接口:Operation.java
//author:lihuoming
package com.foshanshop.ejb3;
public interface Operation {
public int Add(int a, int b);
}
定义本地接口:LocalOperation.java,本地接口具有远程接口的所有方法,另外有自己的方法getResult()
//author:lihuoming
package com.foshanshop.ejb3;
public interface LocalOperation extends Operation {
public int getResult();
}
实现本地接口与远程接口的会话Bean:OperationBean.java
//author:lihuoming
package com.foshanshop.ejb3.impl;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import com.foshanshop.ejb3.LocalOperation;
import com.foshanshop.ejb3.Operation;
@Stateless
@Remote ({Operation.class})
@Local ({LocalOperation.class})
public class OperationBean implements Operation, LocalOperation {
private int total = 0;
private int addresult = 0;
public int Add(int a, int b) {
addresult = a + b;
return addresult;
}
public int getResult() {
total += addresult;
return total;
}
}
分享到:
相关推荐
### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...
- **创建Remote Interface Client**:通过EJB Home Interface创建EJB组件的远程接口客户端,进而开始使用其提供的方法。 ### 结论 通过上述步骤,PowerBuilder开发人员能够在N-tier架构下轻松地调用EJB组件,实现...
客户端通过JNDI(Java Naming and Directory Interface)查找并调用EJB。而`EJB_Romte.zip`可能包含了远程接口和实现,这是EJB允许远程访问的关键。EJB组件通常被打包成JAR文件,并在应用服务器(如JBOSS、WebLogic...
EJB技术还涉及接口和实现的分离,通过远程接口(Remote Interface)和本地接口(Local Interface)使得客户端可以透明地调用bean的方法。此外,EJB 3.0引入了注解(Annotations),简化了bean的配置,使得开发者可以...
客户端代码使用JNDI(Java Naming and Directory Interface)查找并调用远程EJB。在`Client.java`中,配置了JNDI上下文属性,包括命名工厂、URL包和提供者的URL,这些属性指定了服务器的IP地址和端口。客户端通过`...
2. **接口定义**:EJB通常需要定义两个接口——远程接口(Remote Interface)和业务接口(Business Interface)。远程接口定义了客户端可以调用的方法,业务接口则封装了具体的业务逻辑。 3. **部署描述符**:在ejb...
- **定义**:JNDI(Java Naming and Directory Interface)是一种标准的Java API,用于访问命名和目录服务。 - **功能**:在EJB环境中,JNDI用于存储和查找命名对象,比如客户端代理对象。当客户端想要访问一个远程...
1. **类定义**:定义EJB的远程接口(Remote Interface),该接口定义了客户端如何访问EJB的方法;定义Home Interface,用于创建和查找EJB实例。 2. **编写EJB类**:实现业务逻辑,同时处理EJB的生命周期方法如`...
#### 九、EJB Home Interface中的方法 **9.1 Session Bean的Home Interface** - **Create Methods**:用于创建新的Session Bean实例。 **9.2 Entity Bean的Home Interface** - **Create Methods**:用于创建新的...
3. **开发客户端**:创建Java项目,添加对EJB项目的引用,导入必要的JBoss客户端库,并配置JNDI(Java Naming and Directory Interface)查找EJB。 EJB的JNDI名称通常是Bean类名,可以通过注解`@Stateless(name=...
EJB 3.1 引入了一种新的概念——No-Interface View,即将一个Bean的所有公共方法通过Local View暴露出来。这意味着Session Beans不再强制要求实现特定的接口,而是可以直接调用Bean的公共方法,同时保证事务、安全性...
3. **EJB接口和方法**:EJB通过接口暴露其服务,这些接口包括业务接口(Business Interface)、远程接口(Remote Interface)和本地接口(Local Interface)。业务方法定义了EJB提供的服务。 4. **EJB部署描述符**...
5. **JNDI(Java Naming and Directory Interface)**:在EJB工程中,JNDI是查找和绑定EJB组件的主要机制。例如,`sun-jndi-providerutil.jar`可能是一个JNDI服务提供商的库,用于支持EJB组件在JNDI命名空间中的注册...
EJB通常定义两个接口:业务接口(Business Interface)和远程接口(Remote Interface)。业务接口定义了客户可以调用的方法,远程接口允许客户端通过网络访问bean。 5. **部署描述符**: `ejb-jar.xml`文件是EJB...
JNDI(Java Naming and Directory Interface)用于查找命名和服务定位。 #### 五、J2EE技术栈 Java EE技术栈非常广泛,涵盖了众多技术和标准,包括但不限于: - **EJB**:用于构建分布式企业级应用程序。 - **JAX...
1. **开发EJB**:首先,你需要创建EJB组件,包括编写接口(Home Interface、Remote Interface)和实现类(Bean Class)。EJB 3.0引入了注解(Annotations),使得开发更为简洁,无需XML配置。 2. **容器管理的持久...
- **Local Interface**(EJB 2.1新增):与Remote Interface类似,但仅适用于同一JVM内的通信,无需远程调用开销。 ### 3. EJB生命周期 EJB的生命周期由容器管理,包括创建、初始化、激活、被动使用、去激活、终止...
在 EJB 3.0 中,需要创建远程接口(Remote Interface)。该接口定义了 EJB 的业务逻辑。在本例中,我们创建了一个名为 TestEJBActivity 的远程接口,该接口定义了一个 SayHello 方法,该方法接收一个字符串参数 ...