编程模型入门牛
民生舆情 2021-08-24 17:41 字号: 大 中 小
4. 创建standalone reference。在工具栏中把 图标拖拉到器中即生成一个standalone reference。如下图所示:
然后把Standalone Reference端点与HelloWorld组件连接起来。工具自动会为Standalone Reference创建一个匹配HelloWorld组件接口的引用。这里要注意的是,向导在自动创建Standalone Reference的引用时会弹出一个窗口询问需要创建一个Java接口类型的引用还是WSDL接口类型的引用。不同类型的接口会使得我们的客户端代码(在本例中是一个名为p的JSP文件)需要采用不同的调用方式。下面会分析两种不同类型的实现。
5. 生成JSP代码。如果我们在前面的引用接口类型中选择的是WSDL接口。那么Standalone Reference的属性如下图所示:
我们可以看到,引用的名称为HelloWorldInterfacePartner,接口为名称为HelloWorldInterface这个WSDL类型的接口。
如果我们在前面的引用接口类型中选择的是Java接口。那么Standalone Reference的属性如下图所示:
我们可以看到,引用的名称为HelloWorldInterfacePartner,接口为名称为erface_.HelloWorldInterface这个Java类型的接口。具体JSP代码参考下面的客户端代码分析部分。
6. 检查生成的项目。如果把WID切换到J2EE透视图的导航视图中,我们可以看到与HelloWorld模块对应的J2EE项目。J2EE企业项目为HelloWorldApp,其包含EJB项目HelloWorldEJB,Web项目HelloWorldWeb,J2EE客户端项目HelloWorldEJBClient。另外一个是名为HelloWorld的Java项目,这个项目的内容最终会以一个JAR文件的形式被HelloWorldApp应用使用。上一步中所提到的JSP文件需要在HelloWorldWeb项目中生成。具体如下图所示:
1.5.2 JSP客户端代码片断分析 那么如何在JSP页面中来调用我们的HelloWorld服务组件呢?按照前面的介绍,我们需要通过Standalone Reference来调用。那么我们如何才能得到这个Standalone Reference的引用呢?这里涉及到SCA编程模式中很重要的一个概念,那就是ServiceManager。ServiceManager是一个SCA环境的核心类,全名为rviceManager。这个类的作用主要就是能够让客户端去定位一个服务提供方。一般调用的方式是通过ServiceManager的locateService(String serviceRefName)方法。拿到服务之后,客户端就可以调用服务中所提供的方法了。(熟悉J2EE编程的人员可以联系对比JNDI的Lookup方法。)下面分别根据Standalone Reference引用的接口类型来分析主要JSP代码片断。
当接口类型是WSDL接口的情况
1.首先需要在JSP中导入相关的类,主要如下:
%@ page import=\"rviceManager\" %
%@ page import=\"rvice\" %
%@ page import=\"taObject\" %
2.生成ServiceManager对象,并拿到相应的服务。
ServiceManager serviceManager = new ServiceManager();
Service service = (Service) cateService(\"HelloWorldInterfacePartner\");
这里locateService()方法中的参数是standalone reference的实际名称。从某种程度上我们可以把外部的JSP/Servlet的Java代码看成是Standalone reference的实现,这样来理解服务组件之间的相互调用。
3.调用服务的方法。
String msg = tParameter(\"message\");
DataObject resp = (DataObject) voke(\"sendMessage\",msg);
由于我们这里使用的是WSDL接口类型,因此返回结果是以DataObject的形式存在。
4. 显式得到的结果。
%=tString(\"status\")%
通过调用DataObject的getString方法,我们拿到实际的返回结果,名为status的字符串。
当接口类型是Java接口的情况
1.首先需要在JSP中导入相关的类,主要如下:
%@ page import=\"rviceManager\" %
%@ page import=\"rvice\" %
%@ page import=\"erface_.HelloWorldInterface\" %
2.生成ServiceManager对象,并拿到相应的服务。
ServiceManager serviceManager = new ServiceManager();
HelloWorldInterface service =
(HelloWorldInterface) cateService(\"HelloWorldInterfacePartner\");
由于Standalone Reference的接口变成了Java接口,因此这里返回的服务可以直接造型成HelloWorldInterface类型。
3.调用服务的方法。
String msg = tParameter(\"message\");
在今日公布的基金二季报中 String resp = ndMessage(msg);
由于我们这里使用的是Java接口类型,因此调用的方式就是正常的Java接口调用。
4. 显式得到的结果。
%=resp%
由于静态调用方式得到的就是实际定义的类型,因此这里字符串的显式比较简单。
具体实际项目的代码请参考本文附的项目交换文件包。
1.6 结束语
本文介绍了SCA的主要目的和一些基本的概念,并展示了一个最为简单的服务组件例子。从上面的讨论我们可以看到,SCA不但解决了统一调用的问题,而且提供了一个服务组件架构。这个服务组件架构将在构建面向服务的架构中起到举足轻重的作用,并在IBM的许多产品中会有所体现。
黄芪生脉饮有哪些禁忌来宾哪家白癜风医院
庆阳白癜风哪里治疗好
-
-
孔蒂神了反套路打蒙巴萨切尔西今夜输给老天
孔蒂神了!反套路打蒙巴萨 切尔西今夜输给老天切尔西遗憾错...
2020-08-08 | 民生舆情
-
-
劳达因为流感重回医院治疗车迷们不必感到惊搭配
劳达因为流感重回医院治疗 车迷们不必感到惊慌梅赛德斯F1车...
2020-06-06 | 民生舆情
-
-
中环集团吹响进军海南号角商业广场项目正式搭配
中环集团吹响进军海南号角 商业广场项目正式启动 提要:201...
2020-06-01 | 民生舆情
-
-
社工分享计划助力上海公益之城建设
“社工分享计划”助力上海“公益之城”建设为充实人文之城...
2019-07-16 | 民生舆情
-
-
今天是国际不打小孩日
今天是“国际不打小孩日”( 赵岩楠 报道)今天是个有意思...
2019-07-12 | 民生舆情
-
-
群众文艺展演用自己的歌舞祝愿幸福美好生活
群众文艺展演:用自己的歌舞祝愿幸福美好生活第1页:群众文...
2019-07-07 | 民生舆情