扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:Sreedevi Penugonda 来源:论坛整理 2007年11月17日
关键字:
在本页阅读全文(共4页)
客户机可以从 SCA 组件和非 SCA 组件获得对服务的访问。
从 SCA 组件实现访问服务
获得对服务的访问的不同方法如下:
使用引用注入 通过定义服务的类型接口的 Java 类数据成员指定和通过 @Reference Annotation 加标注,可使用引用注入获得对服务的访问。@Reference Annotation 的特性有:
清单 11 显示了使用 @Reference Annotation 的 Java 实现。
清单 11. 使用 @Reference Annotation 的 Java 实现
package services.profile;
import org.osoa.sca.annotations.Service;
import org.osoa.sca.annotations.Reference;
@Service(LoginService.class)
public class LoginServiceImpl implements LoginService{
@Reference(name="profileService", required=true)
private ProfileService profileService;
public int login(String employeeID, String password) { .... }
}
以下是上述组件实现对应的组件类型。
清单 12. 组件类型
<?xml version="1.0" encoding="ASCII"?>
<componentType xmlns="http://www.osoa.org/xmlns/sca/0.9">
<service name="ProfileService ">
<interface.java interface="services.profile.LoginService"/>
</service>
<reference name="profileService">
<interface.java interface="services.profile.ProfileService"/>
</reference>
</componentType>
使用模块上下文
使用模块上下文访问服务的必要事项有:
通过将字段定义为 ModuleContext 类型,或使用 @Context Annotation,可指定使用模块上下文进行服务访问。清单 13 显示了 ModuleContext 接口及其 locateService() 方法。
清单 13. ModuleContext 接口
package org.osoa.sca;
public interface ModuleContext {
...
Object locateService(String serviceName);
}
清单 14 显示了使用 @Context Annotation 的模块上下文定义示例:
清单 14. 使用 @Context Annotation 的模块上下文定义
package innovasolutions.web.ui;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osoa.sca.CurrentModuleContext;
import org.osoa.sca.ModuleContext;
import services.profile.LoginService;
public class LoginServlet extends HttpServlet{
private ServletContext mContext;
public void init(ServletConfig pCfg) throws ServletException{
mContext = pCfg.getServletContext();
}
public void doPost(HttpServletRequest pReq,
HttpServletResponse pResp) throws ServletException{
LoginService loginMgr = (LoginService)CurrentModuleContext.getContext().
locateService("LoginServiceComponent");
if (loginMgr == null){
throw new ServletException("LoginManager not found");
}
. . . .
}
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者