关于WebService技术的应用开发
来源:互联网 发布:win10网络图标灰色 编辑:程序博客网 时间:2024/06/08 17:15
这段时间自己一直在琢磨如何远程调用服务,我有个项目就是需要同步数据,通俗点就是把这个数据库里的数据搬到别的地方的数据库里,因此我使用WebService来调用服务。
在使用WebService需要以下几个步骤:
1.WebService的服务接口,供客户端调用。
@javax.jws.WebService //WebService接口的注解
public class DoWebService {
@Resource
private WebServiceContext wsContext;
public String doServiceFace(String name) {
return "你好,欢迎来到服务端,"+name;
}
public String getClientInfo() {
MessageContext mc = wsContext.getMessageContext();
HttpExchange exchange = (HttpExchange) mc .get(JAXWSProperties.HTTP_EXCHANGE);
InetSocketAddress isa = exchange.getRemoteAddress();
String IP = isa.getAddress().getHostAddress();
System.out.println("当前的IP:" + IP);
}
}
解析:我这里的代码是很简单的,在这里只需要讲几点:
a.在类的顶部加上@javax.jws.WebService 注解,声明这是个WebService的接口。
b.服务端接收数据,类型是一个String类型,这里关于网络传数据比较建议用XML。
c.在接收到数据时,进行处理,返回数据给客户端。同样也是String类型。
d.在这里这些都是需要被客户端调用的接口,接收到什么和返回什么都是通过这个入口来实现的。
e.处理数据的过程,我在项目中主要用到的是Spring+ibatis来进行数据同步。注意:使用类的时候,spring的注入应该用静态的注入方式。只需要将接收到的数据交给 Spring+ibatis来处理。也就是在这个接口里调用别的类来处理。
f.getClientInfo()为获取正在调用服务的客户端IP地址。可以用它来记录谁访问过我。
g.浏览器中执行http://localhost:8080/Service/DoWebService?WSDL 看是否页面上显示XML数据。
2.发布WebService。
public class StartWebService extends ActionSupport {
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
System.out.println("程序已经开始执行了。。。。。");
Endpoint.publish("http://168.7.109.9:8080/Service/DoWebService", new DoWebService());
System.out.println("service success!");
return "success";
}
}
我的这个是使用action来发布的,同样你也可以使用main方法来发布,都是可以的。在浏览器中通过请求执行下这段代码就可以了
3.客户端接入。
需要在cmd中使用wsimport来执行。
其命令是:wsimport -s C:\Users\cyl\workspace\WebServiceClient\src
-p com.xyyh.client -keep http://168.7.109.16:8080/Service/WebService?WSDL 必须服务端启用才可以执行。
a.C:\Users\cyl\workspace\WebServiceClient\src指的是客户端项目src的路径,将WebService接口类引入过来,供客户端调用。
b.-p com.xyyh.client在客户端的src下生成一个com.xyyh.client包,将WebService类全放在该包下。
c.-keep http://168.7.109.16:8080/Service/DoWebService?WSDL 连接WebService的地址。这里面有几个参数是不一样的,DoWebService 为接口名称,ip地址是不同的。
4.客户端的调用。
public class test {
public void dotest(){
DoWebService ws = new DoWebServiceService().getDoWebServicePort();
String hz = ws.doServiceFace("张三");
System.out.println(hz);
}
}
5.最后的结果是:
控制台输出:你好,欢迎来到服务端,张三
- 关于WebService技术的应用开发
- 【webservice】关于完整的webservice发布系统的开发思路
- webservice开发技术说明书
- Webservice开发全程技术
- 开发高性能的WebService应用
- 关于基于xfire webservice框架开发webservice的总结
- CORBA与SOAP WebService组合技术的应用
- 关于webservice及手机内存查询的app应用
- webservice技术的预言
- 关于应用宝劫持的技术分析
- c#开发webservice应用示例
- 一个简单WEBSERVICE应用的开发、部署、及各部分意义
- 【WEB开发】:webservice的可应用理解文章
- 应用CXF开发RESTful风格的WebService入门实例
- Mac技术预览之<1>关于为Mac开发应用
- Android关于WebService的开发的一些问题
- 关于android 应用开发的迭代式开发
- 关于.NET和AXIS交流webservice的开发
- 实录: .bashrc配置,让shell前缀显色
- LeetCode数据库练习题MySql
- C++之pair与make_pair
- uva 10020 Minimal coverage
- ubuntu14.04配置samba服务器
- 关于WebService技术的应用开发
- TREAP平衡树
- UML图——用例图
- LeetCode290 pattern string 解题报告
- codeforces 617E XOR and Favorite Number (莫队)
- 【sql深入】left join、right join & inner join的比较
- 【高斯消元】【图论】[Wc2011][HYSBZ/BZOJ2155]Xor
- Linux下套接字详解(五)----基于fork多进程的TCP套接字(阻塞/同步/并发)
- UML——包图