实现本地服务 本地服务仅能由属于相同模块的客户机调用。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) { . . . . } }  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
2/2 首页 上一页 1 2 |