1.1发布web service

NC5.5以上的版本,都内建了uapws模块,利用该模块要发布一个webservice非常方便。只需要完成以下几个步骤即可,这里将用一系列的例子来说明。

  1. 创建一个接口,如

nc.ws.intf.IHelloService.java

package nc.ws.intf;

public interface IHelloService {

public String hello(String str);

}

  1. 然后建立这个接口的实现类:

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;

}

}

  1. 将这个接口作为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开发参考相关推荐

  1. 推荐60+ Flex开发参考网站

    推荐60+ Flex开发参考网站 下面是一些好的Flex开发的网站或者Flex资源,如果你使用Flex开发,可以参考一下. 网上找的,可以参考参考!呵呵 新手入门参考: Adobe Flex 3 - ...

  2. Webservice开发流程

    2019独角兽企业重金招聘Python工程师标准>>> Webservice简单的介绍 Webservice开发使用的通信协议是SOAP,支持简单对象的访问 Webservice的发 ...

  3. XFire WebService开发快速起步

    XFire WebService开发快速起步 环境: XFire-1.2.6 JDK1.5 MyEclipse 6.5 Tomcat-5.5.27 Windows XP Professional简体中 ...

  4. eclipse下的webservice开发

    关于eclipse下的webservice开发,有非常多的教程,这里只记下学习过程中的弯路: 1.无论是CXF模式还是AXIS模式,在出现start server之后,点击next报错:"s ...

  5. axis2 webService开发 附深入理解 Java 垃圾回收机制

    相关文章: axis web服务(axis2安装和eclipse.tomcat结合开发) axis2 webService开发 axis2 webService开发(打包aar文件) 使用Axis2开 ...

  6. CSS参考手册_web前端开发参考手册系列

    CSS参考手册_web前端开发参考手册系列 网址: http://css.doyoe.com/

  7. php+参考手册,PHP程序开发参考手册

    PHP综合查询参考手册,包含PHPWeb开发中应用的各种语句.函数.类及其方法. 前言 第一篇 PHP基础篇 第1章 语句 第2章 经典类 第3章 数组函数库 第4章 类和对象函数库 第5章 日期时间 ...

  8. 深入浅出oracle OAF,深入浅出Oracle之OAF开发参考.doc

    Oracle ERP最佳实践 E-BUSINESS SUITE ORACLE核心应用技术 OAF开发参考 Author:赵振坤 Creation Date:April 26, 2013 Last Up ...

  9. WebService开发与代码的编写

    WebService开发与代码的编写 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的 ...

最新文章

  1. 关于$ORACLE_HOME/bin/oracle文件属性
  2. 给定一个n,输出从1到n的整数
  3. 软件项目管理0724:见供应商的体会
  4. android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
  5. K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?
  6. 如何借助 Python 俘获女孩子芳心?
  7. 在U盘上安装Linux系统解决方案
  8. ECS 数据保护——数据备份新特性与最佳实践
  9. Smplayer播放wmv视频文件
  10. PDF转CAD怎么弄?推荐两个转换方法
  11. 我的上岸之旅——深圳工业大学
  12. (2016.12.02更新)CnCrypt文件保险柜1.18,兼容TrueCrypt加密卷,单文件绿色版
  13. 2020年阿里巴巴实习生线上笔试试题
  14. 网络访问计算机无法访问,无法访问,您可能没有权限使用网络资源的解决方法...
  15. uniCloud云开发
  16. 浏览器地址栏输入url到显示主页的过程
  17. vue里 a(){} 和a:()=>{}的区别
  18. Map之containsKey()
  19. Range fro mac(随机数字生成软件)
  20. 汽车凸轮轴的拆装过程

热门文章

  1. FFmpeg:常用命令小笔记
  2. Remote NDIS (RNDIS)
  3. 谷歌浏览器拓展及脚本安装入门简介
  4. 回旋图形c语言编程,回旋形构成形式解析与应用研究.docx
  5. 大数据日志分析项目mapreduce程序
  6. 20160829-你拥有的最宝贵的财富是什么?
  7. 如何提取视频中的音频?自用方法介绍
  8. Roadblocks(次短路)
  9. python自动输入验证码_python下的自动化测试--selenium 验证码输入问题
  10. js实现时间戳转化为自定义格式的年月日时分秒(yyyy-MM-dd HH:mm:ss)