1.webservice及其简单应用!
先理解什么是服务: 现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作。更别说只使用一种语言了。 据库通过TCP/IP协议与另一个应用程序进行交流的结果,而上层是什么样的应用程序,是用什么语言,数据库本身并不知道,它只知道接收到了一份协议,这就是SQL92查询标准协议。 什么是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中的包 这样就可以在e盘下看到我们的客户端代码了,拷贝代码到客户端! 这里我是以我的应用进行描述的, 这样在客户端,你就可以通过: new CollectHuaQiangServiceService().getCollectHuaQiangServicePort().startCaptureHuaQiangService(); 调用你的服务了! 注:以上参考过itcast机构的ppt! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |