1.webservice及其简单应用!
来源:互联网 发布:修罗场是什么意思网络 编辑:程序博客网 时间:2024/05/18 16:17
先理解什么是服务:
现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作。更别说只使用一种语言了。
大家在写应用程序查询数据库时,并没有考虑过为什么可以将查询结果返回给上层的应用程序,甚至认为,这就是数据库应该做的,其实不然,这是数
据库通过TCP/IP协议与另一个应用程序进行交流的结果,而上层是什么样的应用程序,是用什么语言,数据库本身并不知道,它只知道接收到了一份协议,这就是SQL92查询标准协议。
目前的云计算、云查杀都是一种服务,现在比较流行的说法是SOA(面向服务的框架)。
既然数据库可以依据某些标准对外部其他应用程序提供服务、而且不关心对方使用什么语言,那我们为什么就不能实现跨平台、跨语言的服务呢?
只要我们用Java写的代码,可以被任意的语言所调用,我们就实现了跨平台,跨语言的服务!
什么是webservice,它可以用来干什么?
WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用. 学习WebSerice可以将你的服务(一段代码)发布到互联网上让别人去调用,也可以调用别人机器上发布的WebService,就像使用自己的代码一样。
webservice的特点:
1.WebService通过HTTP POST方式接受客户的请求
2.WebService与客户端之间一般使用SOAP协议传输XML数据.
3.它本身就是为了跨平台或跨语言而设计的。
基于cxf的webservice简单应用:
这里使用的是apache-cxf-2.7.10的jar包,拷贝lib下的jar包的项目中。
service的编写:
package com.cxf.test.service;import javax.jws.WebParam;import javax.jws.WebService;@WebService(name="sayHiInterface", targetNamespace = "http://com.cxf.test.service/")public interface SayHiToWebService {public String sayHi(@WebParam(name = "name") String name);}
package com.cxf.test.service;import javax.jws.WebParam;import javax.jws.WebService;@WebService(targetNamespace = "http://com.cxf.test.service/",endpointInterface = "com.cxf.test.service.SayHiToWebService", serviceName="SayHiToWebServiceImplService")public class SayHiToWebServiceImpl implements SayHiToWebService {public String sayHi(String name) {return "hi: " + name;}}server的发布方式:
import com.cxf.test.service.SayHiToWebService;import com.cxf.test.service.SayHiToWebServiceImpl;public class ServerStart {public static void main(String[] args) {//传统发布方式//SayHiToWebServiceImpl sayHiToWebService = new SayHiToWebServiceImpl();//String address = "http://192.168.1.109:8080/sayHiToWebService";//Endpoint.publish(address, sayHiToWebService);SayHiToWebService helloworldimp = new SayHiToWebServiceImpl(); <span style="white-space:pre"></span> <span style="white-space:pre"></span>JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); <span style="white-space:pre"></span>factoryBean.setAddress("http://192.168.1.109:8080/sayHiToWebService"); <span style="white-space:pre"></span>factoryBean.setServiceClass(SayHiToWebService.class); <span style="white-space:pre"></span>factoryBean.setServiceBean(helloworldimp); <span style="white-space:pre"></span>factoryBean.create(); }}
client调用方式:
package com.cxf.test.server;import java.net.MalformedURLException;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;import com.cxf.test.service.SayHiToWebService;public class ClientTest {public static void main(String[] args) {//JaxWsProxyFactoryBean jwpb = new JaxWsProxyFactoryBean();//jwpb.setServiceClass(SayHiToWebService.class);//jwpb.setAddress("http://192.168.1.109:8080/sayHiToWebService");//SayHiToWebService sayHiToWebService = (SayHiToWebService) jwpb.create();//System.out.println(sayHiToWebService.sayHi("cainiaolei"));try {URL url = new URL("http://192.168.1.109:8080/sayHiToWebService?wsdl");QName qName=new QName("http://com.cxf.test.service/","SayHiToWebServiceService");Service service = Service.create(url,qName);SayHiToWebService sayHiToWebService = service.getPort(SayHiToWebService.class);System.out.println(sayHiToWebService.sayHi("cainiao"));} catch (MalformedURLException e) {e.printStackTrace();}}}访问:
<pre name="code" class="java">http://192.168.1.109:8080/sayHiToWebService?wsdl是否可以看见这项服务的具体描述呢?这样一个简单的webservice应用就形成了!
下面讲解wsdl2java命令生成客户端代码,客户端可以直接通过代码调用服务!
控制台下进入现在的apache-cxf文件下的bin目录:
调用 wsdl2java -p com. sy.cxf.client -d e:\ -all http://localhost:8080/cxf/webservice/helloWorld?wsdl 命令,
这样就会在e盘下生成客户端代码。
-p 也就是package 对应java中的包
-d 输入目录,生成.java文件会在该目录,会自动添加-p参数配置的包路径
-client 生成客户端测试web service的代码.
-server 生成服务器启动web service的代码.
-impl 生成web service的实现代码.
-ant 生成build.xml文件.
-all 生成上面-client -server -impl -ant 对应的所有文件.
这样就可以在e盘下看到我们的客户端代码了,拷贝代码到客户端!
这里我是以我的应用进行描述的,
这样在客户端,你就可以通过:
new CollectHuaQiangServiceService().getCollectHuaQiangServicePort().startCaptureHuaQiangService(); 调用你的服务了!
注:以上参考过itcast机构的ppt!
- 1.webservice及其简单应用!
- webservice简单应用(天气预报)
- webservice的简单应用
- android webservice 简单应用
- WebService简单应用
- php webservice简单应用
- webservice简单应用
- WebService简单应用实例
- 客户端访问webService简单应用
- 客户端访问webService简单应用
- C# webservice应用 简单实例
- 2、webService的简单应用
- Trie 树及其简单应用
- 位运算及其简单应用
- 简单理解Cookie及其应用
- 简单理解session及其应用
- 快速幂及其简单应用
- 尾指针及其简单应用
- 程序员如何爱护自己的眼睛
- django静态文件配置
- Wooden Sticks
- *POJ 3417 - Network(LCA + 树形DP)
- 在web.xml中classpath和classpath*的区别。/与/*的区别
- 1.webservice及其简单应用!
- django静态文件配置
- 鸟哥私房菜学习笔记三
- django静态文件配置
- django静态文件配置
- Android当无线鼠标,通过蓝牙与pc通信,pc端用java写
- django静态文件配置
- 性能调优攻略
- django静态文件配置