用wsdd来开发web services
用wsdd(服务部署描述语言),主要是编写java文件和编写wsdd文件。
1。编写java文件,最好是定义在某一个包下,否则便以后直接放到/WEB-INF/classes下,有时会出错,原因是在用deploy.wsdd部署时映射不对。然后直接包对应的包放到/WEB-INF/classes中。HelloWorldG.java文件:
package test.gaolong;
public class HelloWorldG{
public String sayHelloG(String name){
return "HelloG "+name;
}
}
2。编写wsdd文件,根据wsdd文件的规范编写相关文档。例如:(deploy.wsdd)
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><--命名空间-->
<service name="HelloWorldG" provider="java:RPC"><-服务名-->
<parameter name="className" value="test.gaolong.HelloWorldG"/><--对应的主类--->
<parameter name="allowedMethods" value="*"/><---注册相应的方法,如果只有一个方法,可以直接注册方法名--->
<parameter name="allowedRoles" value="user"/><--定义用户认证--->
<requestFlow><-用户认证的描述文件-->
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
</requestFlow>
</service>
</deployment>
3。部署wsdd文件:打开命令口,切换到deploy.wsdd目录下,运行java org.apache.axis.client.AdminClient即可完成部署。
这儿可能出错,正确的显示:
D:/bea/user_projects/domains/mydomain/applications/axis/WEB-INF/classes>java org.apache.axis.client.AdminClient -p 7001 deploy.wsdd
Processing file deploy.wsdd
<Admin>Done processing</Admin>
当在wsdl中使用deploy.wsdd来部署时,对于服务器是要打开的,而且当服务器的端口不是8080时,采用要求java org.apache.axis.client.AdminClient -p <port> deploy.wsdd 来指定并进行服务部署。
4。打开server-config.wsdd会发现增加了语句描述:<service name="HelloWorldG" provider="java:RPC">
<requestFlow>
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
</requestFlow>
<parameter name="allowedRoles" value="user"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="test.gaolong.HelloWorldG"/>
</service>
其实直接到该文件中增加该内容,不必用org.apache.axis.client.AdminClient来部署描述。
打开IE,可以在http://127.0.0.1:7001/axis/servlet/AxisServlet看到该服务部署到服务列表上。
5。编写测试application客户端,其代码如下:
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
public class ServiceClient{
public static void main(String[] args) throws Exception{
String endpoint="http://127.0.0.1:7003/axis/services/HelloWorldG";
String name="gaong1";
Service service=new Service();
Call call=(Call) service.createCall();//回调服务
call.setUsername("gaolong1");
call.setPassword("8001");//用户认证
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// call.setOperationName("sayHelloG");
call.setOperationName(new QName("http://gaolong.test", "sayHelloG"));//设置指定的命名空间,根据wsdl文件来决定
call.addParameter("name",XMLType.XSD_STRING,ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);//XMLType.XSD_STRING);
String ret=(String)call.invoke(new Object[] {name});
System.out.println(ret);
}
}
运行之后有关的显示。
6。通过tcpmonitor来监听的soap消息如下:
请求soap:
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:sayHelloG soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">
<name xsi:type="xsd:string">gaolong1</name>
</ns1:sayHelloG>
</soapenv:Body></soapenv:Envelope>
回应soap:
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:sayHelloGResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://gaolong.test">
<sayHelloGReturn xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">HelloG gaolong1</sayHelloGReturn>
</ns1:sayHelloGResponse>
</soapenv:Body>
</soapenv:Envelope>
用wsdd来开发web services相关推荐
- 轻松简单地开发Web Services 2
XFire和其它类库 现在是最后一步了,需要得到所有必需的类库.我们怎样得到它们呢?去XFire网站,下载xfire-distribution-1.0.zip,然后解压到一个本地文件夹.复制下面的ja ...
- oracle调用web severs,Oracle调用C#开发web services
Oracle调用C#开发web services 1, 去oracle官网上下载dbws-callout-utility-10131.zip 地址:https://oracle-base.com/ar ...
- Web services 安全实践: 基于 HTTP Basic Authentication 为 Web services 配置传输层安全机制...
转载:http://www.ibm.com/developerworks/cn/webservices/1106_webservicessecurity/ 简介 正如"HTTP Basic ...
- delphi7下调用微软的Web Services的心得
我在delphi7下调用微软的Web Services的心得.(其中服务是指返回数据集) 我在delphi7下调用微软的Web Services的心得.(其中服务是指返回数据集) 作者: ...
- 使用 python 开发 Web Service
使用 python 开发 Web Service Python 是一种强大的面向对象脚本语言,用 python 开发应用程序往往十分快捷,非常适用于开发时间要求苛刻的原型产品.使用 python 开发 ...
- Web Services:惊世未了缘
URL= http://www.csdn.net/news/newstopic/5/5665.shtml Web Services:惊世未了缘 (2002.05.14) 来自:每周电脑报 ...
- Delphi开发Web Service初探
简介:"网络就是计算机,软件就是服务"的思想已经逐步深入人心.由于Web Services能够通过网络把服务直接递送给终端用户,而且由众多主流厂商所支持和描绘的美好前景也让我们心动 ...
- VMware vSphere开发(1)安装配置VMware vSphere Web Services SDK的运行环境
一.准备 使用VMware vSphere Web Services SDK开发Java Web-service客户端应用,需要使用到java SDK和Java Web Service开发工具,如下: ...
- 利用Web Services开发分布式应用
一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术--Web Services 二.Web Services 详细介绍 2.1 We ...
最新文章
- 蓝牙的自适应跳频技术
- math range error
- Python 正则表达式-问号的四种用法
- Spring Cloud Gateway——2020.x以上版本HTTP 503 或 NoLoadBalancer[负载均衡]解决方案
- 怎么在linux下用mysql建库_在MySQL/MariaDB中创建数据库、数据库用户和授予特权(针对Linux平台)...
- 洛谷P1901 发射站
- mysql large_【转】mysql对large page的支持
- 大工19春《计算机组成原理》,大工19春《计算机组成原理》在线作业3.doc
- 里bl2和bl3为什么分开_真正爱过的人,分开,真的会是“好散”吗?
- 杰控组态自定义串口通讯的经验
- 图片url地址转换成file文件
- euht网络登录_基于EUHT技术的城轨高速线路车地无线网络解决方案
- 2.1 被隐藏了的过程
- 第三批更新鸿蒙系统,emui11第三批更新名单-emui11第三批更新名单介绍 - 系统家园...
- 服务器常用的操作系统
- 苹果部分机型被禁销售 股价下跌2% 苹果高通专利大战究竟为何?
- gpio_typedef_超经典的STM32学习笔记——第一章GPIO口
- N+1道Vue面试题,快来康康
- 在阿里“救了八年火”的程序猿,这样讲述淘宝的技术进化史
- pytorch复现NCF
热门文章
- 暑期集训第12次考试总结
- Linux下安装飞秋——简单到只用一条指令
- svn: E000022: Can‘t convert string from ‘UTF-8‘ to native encoding
- activemq 命令行的使用
- excel是计算机软件吗,win7网页提示发生错误请确认您的电脑是否安装了excel软件怎么办...
- python中list的filter_filter
- 超实用的Mac使用小技巧
- 图学习01——什么是图
- 谈谈互联网里的各种圈子
- 1个东京=20个上海:看日本的综合实力