扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:方国伟 来源:developerWorks 中国 2007年9月16日
关键字: SOA/Portals SOA SCA NETSCAPE
1.5.2JSP客户端代码片断分析
那么如何在JSP页面中来调用我们的HelloWorld服务组件呢?按照前面的介绍,我们需要通过StandaloneReference来调用。那么我们如何才能得到这个StandaloneReference的引用呢?这里涉及到SCA编程模式中很重要的一个概念,那就是ServiceManager。ServiceManager是一个SCA环境的核心类,全名为com.ibm.websphere.sca.ServiceManager。这个类的作用主要就是能够让客户端去定位一个服务提供方。一般调用的方式是通过ServiceManager的locateService(StringserviceRefName)方法。拿到服务之后,客户端就可以调用服务中所提供的方法了。(熟悉J2EE编程的人员可以联系对比JNDI的Lookup方法。)下面分别根据StandaloneReference引用的接口类型来分析主要JSP代码片断。
当接口类型是WSDL接口的情况
1.首先需要在JSP中导入相关的类,主要如下:
<%@pageimport="com.ibm.websphere.sca.ServiceManager"%> <%@pageimport="com.ibm.websphere.sca.Service"%> <%@pageimport="commonj.sdo.DataObject"%> |
2.生成ServiceManager对象,并拿到相应的服务。
ServiceManagerserviceManager=newServiceManager(); Serviceservice=(Service)serviceManager.locateService ("HelloWorldInterfacePartner"); |
这里locateService()方法中的参数是standalonereference的实际名称。从某种程度上我们可以把外部的JSP/Servlet的Java代码看成是Standalonereference的实现,这样来理解服务组件之间的相互调用。
3.调用服务的方法。
Stringmsg=request.getParameter("message"); DataObjectresp=(DataObject)service.invoke("sendMessage",msg); |
由于我们这里使用的是WSDL接口类型,因此返回结果是以DataObject的形式存在。
4.显式得到的结果。
<%=resp.getString("status")%> |
通过调用DataObject的getString方法,我们拿到实际的返回结果,名为status的字符串。
当接口类型是Java接口的情况
1.首先需要在JSP中导入相关的类,主要如下:
<%@pageimport="com.ibm.websphere.sca.ServiceManager"%> <%@pageimport="com.ibm.websphere.sca.Service"%> <%@pageimport="world.hello.hello.world.interface_.HelloWorldInterface"%> |
2.生成ServiceManager对象,并拿到相应的服务。
ServiceManagerserviceManager=newServiceManager(); HelloWorldInterfaceservice= (HelloWorldInterface)serviceManager.locateService("HelloWorldInterfacePartner"); |
由于StandaloneReference的接口变成了Java接口,因此这里返回的服务可以直接造型成HelloWorldInterface类型。
3.调用服务的方法。
Stringmsg=request.getParameter("message"); Stringresp=service.sendMessage(msg); |
由于我们这里使用的是Java接口类型,因此调用的方式就是正常的Java接口调用。
4.显式得到的结果。
<%=resp%> |
由于静态调用方式得到的就是实际定义的类型,因此这里字符串的显式比较简单。
具体实际项目的代码请参考本文附的项目交换文件包。
1.6结束语
本文介绍了SCA的主要目的和一些基本的概念,并展示了一个最为简单的服务组件例子。从上面的讨论我们可以看到,SCA不但解决了统一调用的问题,而且提供了一个服务组件架构。这个服务组件架构将在构建面向服务的架构中起到举足轻重的作用,并在IBM的许多产品中会有所体现。
作者
方国伟,IBM软件部工程师。在WebSphere家族产品有多年的工作经验。目前主要工作重点和兴趣在WebSphere应用服务器及J2EE和Web Services相关技术的应用。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者