NC WebService开发参考
1.1发布web service
NC5.5以上的版本,都内建了uapws模块,利用该模块要发布一个webservice非常方便。只需要完成以下几个步骤即可,这里将用一系列的例子来说明。
- 创建一个接口,如
nc.ws.intf.IHelloService.java |
package nc.ws.intf; public interface IHelloService { public String hello(String str); } |
- 然后建立这个接口的实现类:
nc.ws.impl.HelloImpl.java |
package nc.ws.impl; import nc.ws.intf.IHelloService; public class HelloImpl implements IHelloService { public String hello(String str) { return "hello " + str; } } |
- 将这个接口作为web Service发布到nc系统中,发布的原理是:在一个upm文件中声明一个public component, 这个component将会在nc启动后加载到容器中,外部系统即可通过调用uapws的servlet来调用这个component暴露的方法。具体发布的方法是,先安装nc webservice eclipse插件(内网可到\\uapserver03\webdir上下载nc.uap.mde.wstools_1.0.3.jar,拷贝到eclipse的plugins目录然后重启eclipse).
安装完插件后在接口类IHelloService.java处点右键,选择WS Tools-> publish Web Service,将弹出一个向导。
填写一个新的upm文件或选择一个已存在的upm文件,然后点next>
在这个界面中,只需要填写 实现类的类名即可,接口已经自动填写好了,其它设置都用默认的。继续点击next> 进入下图的界面
这个界面无需填写任何设置。关键的 Extension class设置和 WSDL location以及 Address都已经自动填写了,而Interceptors是很少使用的配置,一般不用填写。
再次点击Next进入下一个页面。
这个界面用于配置web service的安全,(默认的是否要求认证授权是勾选上的。)一个接口发布为web service后,往往可以使用认证授权、签名、加密等方法来保障web service的安全,而web service安全的实现比较复杂,在该文档中将一步步展来话明。 这里选实现一个不带任何安全选项的web service:将Web Service的安全配置选项全部不勾选。如上图选示,然后点击Finish即可。
发布完成后将在eclipse的项目下建立一个名为ws的源文件夹,并在nc.ws.intf包下生成IHelloService.wsdl的文件,该文件描述了HelloService提供的所有功能和调用方法。由于这是一个最简单的Web Service,还不涉用传入参数和返回值是复杂VO的情况,所以生成的文件暂时只有WSDL文件和一个upm文件。Upm文件位于模块META-INF文件夹下:
T_WebService.upm |
<?xml version='1.0' encoding='UTF-8'?> <module> <public> <component> <interface>nc.ws.intf.IHelloService</interface> <implementation>nc.ws.impl.HelloImpl</implementation> <extension class="nc.uap.ws.deploy.OxbWSExtensionProcessor"> <wsdl>/nc/ws/intf/IHelloService.wsdl</wsdl> <address>/nc.ws.intf.IHelloService</address> </extension> </component></public> <private> </private> </module> |
生成的WSDL文件是Document Literal风格的,将来客户端调用该Web Service时应该注意一下。
IHelloService.wsdl |
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" jaxb:version="2.0" xmlns:ns0="http://intf.ws.nc/IHelloService" targetNamespace="http://intf.ws.nc/IHelloService"> <jaxws:bindings> <jaxws:package name="nc.ws.intf"/> </jaxws:bindings> <wsdl:types> <xsd:schema xmlns:ns="http://intf.ws.nc/IHelloService" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://intf.ws.nc/IHelloService" jaxb:version="2.0"> <xsd:annotation> <xsd:appinfo> <jaxb:schemaBindings> <jaxb:package name="nc.ws.intf"/> </jaxb:schemaBindings> </xsd:appinfo> </xsd:annotation> <xsd:element name="hello"> <xsd:complexType> <xsd:sequence> <xsd:element name="string" minOccurs="0" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="helloResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="return" minOccurs="0" nillable="true" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="helloRequest"> <wsdl:part name="parameters" element="ns0:hello"/> </wsdl:message> <wsdl:message name="helloResponse"> <wsdl:part name="parameters" element="ns0:helloResponse"/> </wsdl:message> <wsdl:portType name="IHelloServicePortType"> <wsdl:operation name="hello"> <wsdl:input message="ns0:helloRequest" wsaw:Action="urn:hello"/> <wsdl:output message="ns0:helloResponse" wsaw:Action="urn:helloResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="IHelloServiceSOAP11Binding" type="ns0:IHelloServicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="hello"> <soap:operation soapAction="urn:hello" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="IHelloService"> <wsdl:port name="IHelloServiceSOAP11port_http" binding="ns0:IHelloServiceSOAP11Binding"> <soap:address location="http://localhost/uapws/service/nc.ws.intf.IHelloService"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
1.2 加载web service和查看己发布的web service
重启服务器后即可访问该Web Service:打开http://{hostaddress}/uapws即可进入web service控制台(5.5和5.6由于一些问题,该网页不能正常访问。)也可直接进入http://{host address}/uapws/service查看已发布的所有Web Service.
在这个页面上可以查看到所有模块中已发布的web service,每个可以查看每个web service的wsdl并对web service进行简单的 soap 消息测试(类似soap ui的工具)。
在http://{host address}/uapws/service页面中列出的service,都是发布成功的服务。
NC WebService开发参考相关推荐
- 推荐60+ Flex开发参考网站
推荐60+ Flex开发参考网站 下面是一些好的Flex开发的网站或者Flex资源,如果你使用Flex开发,可以参考一下. 网上找的,可以参考参考!呵呵 新手入门参考: Adobe Flex 3 - ...
- Webservice开发流程
2019独角兽企业重金招聘Python工程师标准>>> Webservice简单的介绍 Webservice开发使用的通信协议是SOAP,支持简单对象的访问 Webservice的发 ...
- XFire WebService开发快速起步
XFire WebService开发快速起步 环境: XFire-1.2.6 JDK1.5 MyEclipse 6.5 Tomcat-5.5.27 Windows XP Professional简体中 ...
- eclipse下的webservice开发
关于eclipse下的webservice开发,有非常多的教程,这里只记下学习过程中的弯路: 1.无论是CXF模式还是AXIS模式,在出现start server之后,点击next报错:"s ...
- axis2 webService开发 附深入理解 Java 垃圾回收机制
相关文章: axis web服务(axis2安装和eclipse.tomcat结合开发) axis2 webService开发 axis2 webService开发(打包aar文件) 使用Axis2开 ...
- CSS参考手册_web前端开发参考手册系列
CSS参考手册_web前端开发参考手册系列 网址: http://css.doyoe.com/
- php+参考手册,PHP程序开发参考手册
PHP综合查询参考手册,包含PHPWeb开发中应用的各种语句.函数.类及其方法. 前言 第一篇 PHP基础篇 第1章 语句 第2章 经典类 第3章 数组函数库 第4章 类和对象函数库 第5章 日期时间 ...
- 深入浅出oracle OAF,深入浅出Oracle之OAF开发参考.doc
Oracle ERP最佳实践 E-BUSINESS SUITE ORACLE核心应用技术 OAF开发参考 Author:赵振坤 Creation Date:April 26, 2013 Last Up ...
- WebService开发与代码的编写
WebService开发与代码的编写 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的 ...
最新文章
- 关于$ORACLE_HOME/bin/oracle文件属性
- 给定一个n,输出从1到n的整数
- 软件项目管理0724:见供应商的体会
- android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
- K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?
- 如何借助 Python 俘获女孩子芳心?
- 在U盘上安装Linux系统解决方案
- ECS 数据保护——数据备份新特性与最佳实践
- Smplayer播放wmv视频文件
- PDF转CAD怎么弄?推荐两个转换方法
- 我的上岸之旅——深圳工业大学
- (2016.12.02更新)CnCrypt文件保险柜1.18,兼容TrueCrypt加密卷,单文件绿色版
- 2020年阿里巴巴实习生线上笔试试题
- 网络访问计算机无法访问,无法访问,您可能没有权限使用网络资源的解决方法...
- uniCloud云开发
- 浏览器地址栏输入url到显示主页的过程
- vue里 a(){} 和a:()=>{}的区别
- Map之containsKey()
- Range fro mac(随机数字生成软件)
- 汽车凸轮轴的拆装过程