java原生实现webservice
来源:互联网 发布:c语言中stdlib 编辑:程序博客网 时间:2024/06/05 13:23
1、webservice概述
WebService是基于xml做消息传输的web应用程序。他支持跨平台,跨语言。既可以用.net实现也可以用java实现。
WSDL:webservice描述语言,使用xml描述对象的函数,参数,返回值,即是机器可以阅读,也是人可以阅读的。
SOAP:简单对象访问协议,webservice就是利用soap,在应用程序之间实现通信。
2、java原生实现代码
这里会建立四个java文件,分别是BaseService.java,BusinessService.java,WSServer.java,WSClient.java,前面两个文件用来建立webservice的接口,后面两个用来测试。
BaseService.java
package com.xxx.webservice;import javax.jws.WebService;@WebServicepublic interface BaseService { public int add(int a,int b); public String sayHello(String name);}
BusinessService.java
package com.xxx.webservice;import javax.jws.WebService;@WebService(endpointInterface="com.xxx.webservice.BaseService")public class BusinessService implements BaseService { @Override public int add(int a, int b) {return a + b ; } @Override public String sayHello(String name) {return "hello, " + name; }}
WSServer.java
package com.xxx.webservice;import javax.xml.ws.Endpoint;public class WSServer { public static void main(String[] args) {Endpoint.publish("http://localhost:8080/ns", new BusinessService());System.out.println("webservice publish success."); }}
WSClient.java
package com.xxx.webservice;import java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;public class WSClient { public static void main(String[] args) { try { URL url = new URL("http://localhost:8080/ns?wsdl"); QName qName = new QName("http://webservice.xxx.com/","BusinessServiceService"); Service service = Service.create(url,qName); BaseService baseService = service.getPort(BaseService.class); System.out.println(baseService.add(5, 8)); System.out.println(baseService.sayHello("xxx"));} catch (MalformedURLException e) { e.printStackTrace();} }}
3、测试结果及说明
线运行WSServer.java,再运行WSClient.java,结果会先启动webservice,并监听。
等待客户端连接,客户端连接并调用对应的方法,然后返回结果,客户端打印结果。
这里有几个需要注意的问题,第一个是QName qName = new QName("http://webservice.xxx.com","BusinessServiceService");,一个是namespaceURI这个正好是和包名反着的,再一个就是localPart这个参数,默认就是类名+Service,这个可以在启动server端之后,在它发布的服务中可以看到,确实如此命名。
在service.getPort(interface.class)函数中,必须要传入接口,而不能使用实现类。否则会报XXX不是一个interface,如下图:
- java原生实现webservice
- java原生 webservice注解
- WebService的java原生开发
- MyEclipse java webservice实现
- MyEclipse java webservice实现
- MyEclipse java webservice实现
- java +myeclipse 实现webservice
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java 实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- java实现webservice实例
- 作图二
- 红黑树的基本操作
- MyBatis 02
- List,Set,Map是否继承自Collection接口?
- csuoj1640机智的刷题方式(背包)
- java原生实现webservice
- 226. Invert Binary Tree
- 关于 IE8 console不未定义的问题
- jQuery插件--Validation
- jquery实现选项卡切换
- 数据库设计
- [JS] SpringMVC环境下配置ArcGIS JS跨域访问(代理服务)
- 一、python的下载与安装
- Django