科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道用于Java的SCA客户机和实现模型

用于Java的SCA客户机和实现模型

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SCA Java 实现模型提供了用于在 Java 中实现 SCA 组件的框架。组件实现可以提供服务,也可以充当其他服务的客户机。本文将说明 SCA Java 组件实现和非 SCA Java 组件实现可以如何获得对服务的访问和调用服务方法。

作者:Sreedevi Penugonda 来源:论坛整理 2007年11月17日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

实现本地服务

  本地服务仅能由属于相同模块的客户机调用。Java 本地服务接口是在不使用 @Remotable Annotation 的情况下定义的。

  以下代码片段显示了本地服务的 Java 接口。

  清单 7. 本地服务的 Java 接口

package services.payrolldata;
public interface PayrollDataService {
float getBasic(String employeeID);
float getvariablePay(String employeeID);
float getHRA(String employeeID);
float getProfessionalTax(String employeeID);
float getNetPay(String employeeID);
}

  本地服务的调用的数据交换语义是以引用为基础的,其中,客户机或服务提供者会看到对参数的更改。

  实现有状态资源模式

  确定了范围的服务通过在服务的接口定义或服务类上使用 @Scope Annotation 加以表示。@Scope Annotation 具有一个参数,即 value,其值为范围的名称。

  以下是当前支持的范围值:

  • Stateless(缺省)——每个请求分开处理。Java 实例可以从服务实例池获得。
  • request——对于在处理远程服务请求时出现的所有本地服务调用,服务请求都被委托给相同的 Java 接口。
  • Session——对于相同“会话”中的所有请求,服务请求都被委托给相同的 Java 实例。
  • module——对于相同“模块”中的所有请求,服务请求都被委托给相同的 Java 实例。

  除了模块范围内的实现外,对于其他三个,SCA 运行时都将防止对该实现的实例并发执行方法。

  以下代码片段显示了会话范围内的服务的接口。

  清单 8. 会话范围服务的接口

package services.profile;
import org.osoa.sca.annotations.Scope;
@Scope("session")
public interface ProfileService{
public String getFirstName();
public void setFirstName(String pName);
public String getLastName();
public void setLastName(String pName);
public boolean isLoggedIn();
public void setLoggedIn(boolean pStatus);
public String getId();
public void setId(String pId);
}

  范围服务可以使用 @Init Annotation 和 @Destroy Annotation 在其 Java 实现上实现生命周期方法。@Init——方法仅在其范围开始处且已注入了其属性和引用后调用一次。@Destroy——方法在其范围结束时调用。

  清单 9 显示了具有生命周期方法的 Java 实现类。

  清单 9. 具有生命周期方法的 Java 实现类

package services.profile;
import org.osoa.sca.annotations.*;
@Service(ProfileService.class)
public class ProfileServiceImpl implements ProfileService {
public String getFirstName( ) { ....}
@Init
public void start() { . . .  }
@Destroy
public void stop() { . . . }

}

  实现配置属性

  Java 类中字段或方法上的 @Property Annotation 用于定义 Java 组件实现的配置属性。以下是 @Property Annotation 的特性:

  • name——属性的名称,缺省值为 Java 类的字段的名称。
  • require——指定是否需要注入,缺省值为 false。

  清单 10 显示了使用 @Property Annotation 的配置属性的定义。

  清单 10. 使用 @Property Annotation 的配置属性的定义

package services.payroll;
import org.osoa.sca.annotations.Property;
import org.osoa.sca.annotations.Reference;
import services.payrolldata.PayrollDataService;
public class PayrollServiceImpl implements PayrollService {
@Property
private String currency = "INR";
@Reference
private PayrollDataService payrollDataService;
public PayrollStatement getPayrollStatement (String employeeID) { . . . . }
}

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章