1、Web Dynpro访问用NWDS创建的Web ServiceWeb Dynpro访问用NWDS创建的Web Service一、 用NWDS创建Web Service使用NWDS可以为三种来源创建Web Service,它们是: 为EJB创建Web Service 为Java类创建Web Service 为Portal Service创建Web Service在本文中,我们将讨论如何通过Java类创建Web Service。1.1. 步骤(一) 准备好Java类。HelloWebService.javapublic class HelloWebService public String hel
2、loWebService(String userName) return userName + , 欢迎你进入Web Service的世界!; (二) 创建Virtual Interface。进入Web Service透视图,在Java Explorer上选择Java类,如HelloWebService.java。然后在上下文菜单里面选择New Virtual Interface。Virtual Interfacee是Web Service对外的可见部分。通过VI,可以定义一个implementation的多个Views并将它们分别发布成Web Service。当你创建一个Virtual In
3、terface时,可以隐藏或者更名operations和parameters。例如,可以将描述名称替代技术名称。可以为parameters定义default values,或者转换parameter types。弹出Virtual Interface向导。给出Virtual Interface名。选择所要暴露的方法。Field:Procedure:New Name给参数一个新的名字New Type Name 选择一个新的数据类型。可以为原始数据类型做一个标准转换。是Java的原始数据类型啊。 Fixed value可以固定初始值完成后得到VI:(三) 在刚生成的VI上选择New Web Ser
4、vice Definition。给出Web Service Definition名。(四) 在项目鼠标右键选择New Web Service Deployment Descriptor,如HelloWebService。我们可以看到打开WS Deployment Descriptor Editor。(五) 选择Web Service Configurations节点,然后点击下面的Add按钮。选择WSD,给出Web Service的名字。完成后生成Web Service。(六) 添加WS Configuration。选择刚才生成的Web Service节点,如HelloWebService,然
5、后点击下面的Add按钮。输入数据就可以了。/HelloWebService/HelloWS是Web Service的路径。(七) 打包成EAR文件。(八) 部署EAR文件。1.2. 在浏览器中查看Web Service在浏览器中输入http:/10.21.17.3:50000/HelloWebService/HelloWS。打开下面页面:点击Test链接。打开下面页面:点击helloWebServiceJavaLangString链接。在打开的页面中输入信息,然后点击Send按钮,就可以看到测试结果,如下图所示:可以看到测试结果。二、 Web Dynpro访问Web Service利用Web
6、Dynpro提供的Model来访问Web Service。所访问的Web Service是先前我们创建的HelloWebService。Web Dynpro有两种模型用来访问Web Service,它们是: Adaptive Web Service Model Web Service ModelSAP推荐使用Adaptive Web Service Model,但是现在我还不会,本文使用Web Service Model做Web Dynpro与Web Service的连接。2.1. 步骤(一) 创建Web Dynpro项目。创建名为HelloWebServiceComp的Component。创
7、建相应的View、Windows和Application。(二) 创建Model。在Web Dynpro Models上右键选择Create Model。弹出New Model向导:选择Import Web Service Model。然后下一步:输入Model Name和Model Package,并且选择WSDL的源,在这里我们是通过URL获得的,因此选择Local File System or URL。这里需要注意的是Model Package指定的时候,包中必须为空,很奇怪,不知道为什么。下一步:输入Wsdl,这里输入的值可以在通过浏览器访问Web Service时可以看到。继续下一步
8、:完成。Web Dynpro Models中有变化:(三) 创建组件Context并且将其绑定到Model上。用添加刚才创建的Model到Used Models中,在这里要在弹出的对话框中选择所要添加的Model,我们这里的是HelloWSModel。在组件控制器上右键选择TemplateApply:弹出对话框,选择Service Controller:下一步:选择那么一长串东西,下一步:全选,请注意,这里可以为Context节点改名字,建议改短点,好看。改名的结果为:继续下一步:如果需要执行该Model,就要生成该方法,需要给定方法名,在这里输入方法名。完成,搞定。看,这里有变化:多了个从组
9、件控制器到模型的箭头,这就是绑定关系。双击箭头,查看绑定关系:组件控制器中也有变化,看:多了一些Context,这里的Context与模型中的结构是一样的。组件控制器中代码也有变化,如:wdDoInit方法变化啦: public void wdDoInit() /begin wdDoInit() /$begin Service Controller(-182154393) wdContext.nodeHelloWSRequest().bind(new Request_HelloWebServieViDocument_helloWebServiceJavaLangString(); /$end
10、/end 生成了executeHelloWSRequest方法: /begin javadoc:executeHelloWSRequest() /* Declared method. */ /end public void executeHelloWSRequest( ) /begin executeHelloWSRequest() /$begin Service Controller(-1899710666) IWDMessageManager manager = wdComponentAPI.getMessageManager(); try wdContext.currentHelloWS
11、RequestElement().modelObject().execute(); wdContext.nodeHelloWSResponse().invalidate(); catch(Exception e) manager.reportException(e.getMessage(), false); /$end /end (四) 创建View Context与组件控制器之间的映射创建映射后成这样了:(五) 在View中创建输入框。打开HelloWebServiceView,在Outline中,弹出上下文菜单,选择Apply Template:选择Form:下一步:选择所有的Contex
12、t,下一步:将userName挪到上面去,Result到下面了。点击完成。成这样了:继续这样的过程添加按钮,不同的是选择Template时,选择的是ActionButton:下一步:定义好Action和Event的名字,请注意,这些定义的名字会在代码中出现。其中onActionExeButton是当点击按钮的动作发生时处理事件的Event Handler。动作为ExeButton。下一步:在选择第三步定义的方法,使点击该按钮后自动执行这个方法。完毕后点击完成。页面成这样了:请注意,这里为Button改了一下文字。HelloWebServiceView中生存了onActionExeButton方
13、法: /begin javadoc:onActionExeButton(ServerEvent) /* Declared validating event handler. */ /end public void onActionExeButton(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent ) /begin onActionExeButton(ServerEvent) /$begin ActionButton(-708658474) wdThis.wdGetHelloWebServiceCompController().executeHelloWSRequest(); /$end /end 从代码可知,该方法调用了组建控制器中的executeHelloWSRequest方法。(六) 将Web Dynpro工程部署到服务器中即可完成。运行结果如下:输入userName,点击按钮:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1