当前位置: 首页 > news >正文

武威市网站建设域名注册网站哪个好

武威市网站建设,域名注册网站哪个好,wordpress首页全部显示内容,网站软件appWebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧…. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话#xff0c;那我们该怎么做#xff1f;#xff1f;#xff1f;#xff1f;#xff1f; 天气预报这么一个功能并不是简单的J…WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧…. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话那我们该怎么做 天气预报这么一个功能并不是简单的JS组件就能够实现的它的数据是依赖数据库分析出来的甚至需要卫星探测…我们个人建站是不可能搞这么一个数据库的吧。 那么既然我们自己干不了我们可以去找别人吗我们从搜索引擎搜索可以发现很多提供天气预报的网站但是它返回的是一个网页而我们仅仅需要的是对应的数据 我们可能就在想我们能不能仅仅只要它返回的数据而并不是经过加工处理后返回的网页呢 于是乎webService就诞生了webservice就是一个部署在Web服务器上的它向外界暴露出一个能够通过Web进行调用的API。也就是说当我们想要获取天气预报的信息我们可以调用别人写好的service服务我们调用就能够得到结果了 问题二 可是我们写网站主流的就有好几个平台Java、.net、PHP等等那么部署在Web服务器上的服务器也就是webserice怎么能够就让我们不同的平台都能够调用呢 我们知道java、.net这样的平台他们语言的基本数据类型、复杂数据类型就可能不一样那么怎么能够实现调用的呢 来引用一段话 大家在写应用程序查询数据库时并没有考虑过为什么可以将查询结果返回给上层的应用程序甚至认为这就是数据库应该做的其实不然这是数据库通过TCP/IP协议与另一个应用程序进行交流的结果而上层是什么样的应用程序是用什么语言数据库本身并不知道它只知道接收到了一份协议这就是SQL92查询标准协议。 无论是Java、.net、PHP等等的平台只要是网页开发都是可以通过http协议来进行通信的并且返回的数据要是通用的话那么我们早就学过这样的一种技术【XML】 所以webservice实际上就是httpXML 对webservice的理解 WebService顾名思义就是基于Web的服务。它使用Web(HTTP)方式接收和响应外部系统的某种请求。从而实现远程调用. 我们可以调用互联网上查询天气信息Web服务然后将它嵌入到我们的程序(C/S或B/S程序)当中来当用户从我们的网点看到天气信息时他会认为我们为他提供了很多的信息服务但其实我们什么也没有做只是简单调用了一下服务器上的一段代码而已。 学习WebService可以将你的服务(一段代码)发布到互联网上让别人去调用,也可以调用别人机器上发布的WebService,就像使用自己的代码一样.。 回顾Socket 我们在学习Java基础网络编程章节已经知道了Scoket这么一个连接了。 Socket服务端 public class SocketSer {public static void main(String[] args) throws Exception {ServerSocket ss new ServerSocket(6666);boolean flag true;while (flag) {//接收客户端的请求System.out.println(监听客户端的数据:);Socket sc ss.accept();InputStream is sc.getInputStream();byte[] buffer new byte[1024];int len -1;len is.read(buffer);String getData new String(buffer, 0, len);System.out.println(从客户端获取的数据: getData);//业务处理 大小写转化String outPutData getData.toUpperCase();//向客户端写数据OutputStream os sc.getOutputStream();os.write(outPutData.getBytes(UTF-8));//释放资源os.close();is.close();sc.close();}ss.close();}}Socket客服端 public class SocketClient {public static void main(String[] args) throws Exception {//获取用户输入的数据Scanner input new Scanner(System.in);System.out.println(请输入数据:);String inputData input.nextLine();//开启一个Socket端口Socket sc new Socket(127.0.0.1, 6666);OutputStream os sc.getOutputStream();os.write(inputData.getBytes());//获取服务端回传的数据InputStream is sc.getInputStream();byte[] buffer new byte[1024];int len -1;len is.read(buffer);String getData new String(buffer, 0, len);System.out.println(从服务端获取的数据: getData);//是否流is.close();os.close();sc.close();}}当我们从客户端输入数据以后那么服务端就会把数据转成是大写 其实HTTP协议就是基于Socket对其进行封装我们也可以在IE浏览器中对其进行访问.我们一样能够获取得到数据 Scoket与HTTP简述 ISO的七层模型 物理层、数据链路层、网络层、传输层、表示层、会话层、应用层 Socket访问 Socket属于传输层它是对Tcp/ip协议的实现包含TCP/UDP,它是所有通信协议的基础Http协议需要Socket支持以Socket作为基础Socket通信特点 开启端口该通信是 长连接的通信 很容易被防火墙拦截可以通过心跳机制来实现 开发难度大传输的数据一般是字符串 可读性不强socket端口不便于推广性能相对于其他的通信协议是最优的 Http协议访问 属于应用层的协议对Socket进行了封装 跨平台传数据不够友好对第三方应用提供的服务希望对外暴露服务接口 问题 数据封装不够友好 可以用xml封装数据希望给第三方应用提供web方式的服务 http xml web Service webService相关术语 名词1XML.Extensible Markup Language扩展性标记语言 XML用于传输格式化的数据是Web服务的基础。namespace-命名空间。xmlns“http://itcast.cn” 使用默认命名空间。xmlns:itcast“http://itcast.cn”使用指定名称的命名空间。 名词2WSDL – WebService Description Language – Web服务描述语言。 通过XML形式说明服务在什么地方地址。通过XML形式说明服务提供什么样的方法 – 如何调用。 名词3 SOAP-Simple Object Access Protocol (简单对象访问协议) Envelope – 必须的部分。以XML的根元素出现。Headers – 可选的。Body – 必须的。在body部分包含要执行的服务器的方法。和发送到服务器的数据。SOAP作为一个基于XML语言的协议用于有网上传输数据。SOAP 在HTTP的基础上XML数据。SOAP是基于HTTP的。SOAP的组成如下 快速入门 首先我们来尝试一下调用别人写好的webService来体验一把我们访问http://www.webxml.com.cn/zh_cn/index.aspx 进入到里边 当我们输入一个号码它就能够查询出我们的手机位置信息 我们现在要做的就是将这个服务让我们自己写的应用程序中也可以调用那怎么做呢 http-get方式访问webservice public void get(String mobileCode ,String userID ) throws Exception{URL urlnew URL(http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCodemobileCodeuserIDuserID);HttpURLConnection conn(HttpURLConnection) url.openConnection();conn.setConnectTimeout(5000);conn.setRequestMethod(GET);if(conn.getResponseCode()HttpURLConnection.HTTP_OK){ //结果码200InputStream isconn.getInputStream();//内存流 ByteArrayOutputStream boasnew ByteArrayOutputStream();byte[] buffernew byte[1024];int len-1;while((lenis.read(buffer))!-1){boas.write(buffer, 0, len);}System.out.println(GET请求获取的数据:boas.toString());boas.close();is.close();}}Http-Client 框架POST请求 为什么要使用HttpClient工具 原生态的Socket基于传输层,现在我们要访问的WebService是基于HTTP的属于应用层,所以我们的Socket通信要借助HttpClient发HTTP请求,这样格式才能匹配 HttpClient使用步骤如下 创建 HttpClient 的实例创建某种连接方法的实例在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址配置要传输的参数和消息头信息调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例通过response读取字符串释放连接。无论执行方法是否成功都必须释放连接 //2.Post请求 通过Http-Client 框架来模拟实现 Http请求public void post(String mobileCode ,String userID) throws Exception{/**HttpClient访问网络的实现步骤* 1. 准备一个请求客户端:浏览器 * 2. 准备请求方式 GET 、POST* 3. 设置要传递的参数* 4.执行请求* 5. 获取结果*/HttpClient clientnew HttpClient();PostMethod postMethodnew PostMethod(http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo);//3.设置请求参数postMethod.setParameter(mobileCode, mobileCode);postMethod.setParameter(userID, userID);//4.执行请求 ,结果码int codeclient.executeMethod(postMethod);//5. 获取结果String resultpostMethod.getResponseBodyAsString();System.out.println(Post请求的结果result);}//2.Post请求 通过Http-Client 框架来模拟实现 Http请求public void soap() throws Exception{HttpClient clientnew HttpClient();PostMethod postMethodnew PostMethod(http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx);//3.设置请求参数postMethod.setRequestBody(new FileInputStream(c:/soap.xml));//修改请求的头部postMethod.setRequestHeader(Content-Type, text/xml; charsetutf-8);//4.执行请求 ,结果码int codeclient.executeMethod(postMethod);System.out.println(结果码:code);//5. 获取结果String resultpostMethod.getResponseBodyAsString();System.out.println(Post请求的结果result);}wsimport 上面我们使用的是GET方式或者使用Http-Client框架来调用webservice的服务其实这两种方式也有弊端 传递参数麻烦【get方式都写在请求地址上、post方式要一个一个封装】解析结果麻烦【根据返回的XML来解析字符串】 如果我们可以把整个对象传递进去返回的结果更加友好的话就好像我们平常调用Java类一样使用webservice就好咯 Java也提供了类似的方法把webservice服务搞成是Java类让我们自己调用既然是Java类的话那么我们使用起来就非常方便了 把webservice服务搞成是Java类让我们自己调用其实就是Java帮我们生成本地代理再通过本地代理来访问webservice 快速入门 wsimport是Java自带的一个命令我们想要使用该命令就必须配置环境变量并且jdk的版本最好是1.7或以上 值得注意的是ide带的JDK版本要和wsimport生成本地的版本一致不然就用不了 wsimport使用 wsimport命令后面跟着的是WSDL的url路径 语法 wsimport [opations] wsdl_uri wsdl_uri:wsdl 的统一资源标识符d 指定要输出的文件的位置s 表示要解析java的源码 默认解析出的是class字节码p 指定输出的包名 首先我们先把cmd的路径退到桌面上 然后对WSDL文件生成本地代理 该本地代理其实就是一堆的字节码文件 将得到的字节码文件打包成jar那么我们只要在项目中导入jar包就可以调用了 语法 jar cvf test.jar【jar包的名称】 打包目录本来我是想将本地代理的class文件生成jar包然后导入到idea环境下那么直接调用就行了。可是idea老是报出找不到对应的类找了半天也找不到很烦呀我考虑了以下的几种情况 生成的class文件的JVM和idea下的JVM环境不匹配【后来切换了也不行】idea缓存原因把idea所有缓存去掉也不行生成的本地代理包名cn不行【idea就是对cn这个包名报错后来我改成自定义的包名也不行】 最后我还是没有找到办法如果知道是什么原因的麻烦在评论中告诉我吧….因此这次的测试import我就不仅仅生成class字节码文件还生成了.java文件。我就直接使用java文件来测试了。 在zhongfucheng目录下生成本地代理把java源码也带上 于是我就把java源码复制到我的项目中用java源码来进行测试 解析WSDL 有的同学可能会疑问为啥wsimport能那么厉害将http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL这么一个url生成本地代理其实我们看了WSDL文件就知道了。 值得注意的是本地代理仅仅是有其方法类并不能解析出具体的实现的。具体的操作其实还是webservice去完成的。代理这么一个概念就更加清晰了。 自定义webservice服务 我们在上一章节中已经使用wsimport生成本地代理来调用webservice的服务了其实我们自己写的web应用程序也是可以发布webservice的 我们发布了webservice的话那么其他人也是可以调用我们自己写的webservice 那么我们怎么自定义webservice然后发布出去呢 在jdk 1.6 版本以后 通过jax-ws 包提供对webservice的支持 该方式通过注解的方式来声明webservice通过 jdk EndPoint.publish()发布webserive服务 快速入门 写一个实体 public class Phone {private String name;//操作系统名private String owner;//拥有者 private int total;//市场占有率public String getName() {return name;}public void setName(String name) {this.name name;}public String getOwner() {return owner;}public void setOwner(String owner) {this.owner owner;}public int getTotal() {return total;}public void setTotal(int total) {this.total total;}}发布service通过注解来让WSDL文件更加可读… package cn.it.ws.d;import cn.it.ws.model.Phone;import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.Endpoint; /* *手机的业务类该业务类通过webservice 对外提供服务* 1. 声明 webservice* 2. 发布 EndPoint*/WebService (serviceNamePhoneManager,//修改服务名targetNamespacehttp://dd.ws.it.cn) //修改命名空间 默认包名取反 //声明该业务类 对外提供webservice服务 ,默认只是对public 修饰的方法对外以webservice形式发布 public class PhoneService {/**WebMethod(operationNamegetMObileInfo): 修改方法名* WebResult(namephone)修改返回参数名* WebParam(nameosName)修改输入参数名*/WebMethod(operationNamegetMObileInfo)public WebResult(namephone) Phone getPhoneInfo(WebParam(nameosName)String osName){Phone phonenew Phone();if(osName.endsWith(android)){phone.setName(android);phone.setOwner(google);phone.setTotal(80);}else if(osName.endsWith(ios)){phone.setName(ios);phone.setOwner(apple);phone.setTotal(15);}else{phone.setName(windows phone);phone.setOwner(microsoft);phone.setTotal(5);}return phone;}WebMethod(excludetrue)//把该方法排除在外public void sayHello(String city){System.out.println(你好city);}private void sayLuck(String city){System.out.println(好友city);}void sayGoodBye(String city){System.out.println(拜拜:city);}protected void saySayalala(String city){System.out.println(再见city);}public static void main(String[] args) {String address1http://127.0.0.1:8888/ws/phoneService; // String address2http://127.0.0.1:8888/ws/phoneManager; /*** 发布webservice服务* 1.address服务的地址* 2implementor 服务的实现对象*/Endpoint.publish(address1, new PhoneService()); // Endpoint.publish(address2, new PhoneService());System.out.println(wsdl地址 :address1?WSDL);}}在类上添加WebService注解,代表发布一个WebService服务通过EndPoint(端点服务)发布一个webService。Endpoint也是jdk提供的一个专门用于发布服务的类它的publish方法接收两个参数一个是本地的服务地址二是提供服务的类。它位于javax.xml.ws.*包中。Endpoint.publish(String address, Object implementor) 静态方法在给定地址处针对指定的实现者对象创建并发布端点给类添加上WebService注解后类中所有的非静态方法都将会对外公布如果希望某个方法不对外公开可以在方法上添加WebMethod(excludetrue)阻止对外公开。如果一个类上被添加了WebService注解则必须此类至少有一个可以公开的方法否则将会启动失败。 protected、private、final、static方法不能对外公开 WebService // 添加了此注解,代表是一个WebService public class HelloWorld {// 非 static final private 方法默认会发布public String sayHi(String name) {return hello name;}WebMethod(excludetrue)public void exclude(){// 被注解排除的方法}protected void protected1(){//受保护的方法默认不发布}private void private1(){// 私有方法默认不发布}public static void static1(){// static 方法默认不发布}public final void final1(){// final 方法默认不发布} } 生成的webservice能够在浏览器访问 SOAP协议 目前WebService的协议主要有SOAP1.1和1.2。 两者的命名空间不同。 xmlns:soaphttp://www.w3.org/2003/05/soap-envelope“xmlns:soap“http://schemas.xmlsoap.org/soap/envelope/ “Soap1.1的命名空间Soap1.2 命名空间 SOAP1.1版本与SOAP1.2版本在头信息上存在差异。 SOAP1.1存在SOAPAction的请求头。SOAP1.2没有SOAPAction的请求头。 基于SOAP1.1生成的WSDL和基于SOAP1.2生成的WSDL也不一样。 主要看命名空间。在CXF中两种协议请求的方式也不一样。 1.1为content-Type:text/xm;charsetUTF-81.2为content-Type:application/soapxml;charsetUTF-8 SOA、UDDI概念 SOA SoaService-Oriented Architecture 面向服务的架构它是一种思想IBM大力倡导是即插即用的IBM大力提倡希望以组装电脑的方式来开发应用 组成 面向web的服务面向web的组件 WebService 硬盘、cpu、内存条企业服务总线 EnterPrise Service Bus ESB。主板 uddi uddi Universal Description, Discovery and Integration统一描述、发现、集成 它是目录服务通过该服务可以注册和发布webservcie以便第三方的调用者统一调用用得并不太多。 实现接口的webservice 服务端 import javax.jws.WebService;/**面向接口的webservice发布方式* * */ WebService public interface JobService {public String getJob(); } import javax.jws.WebService;WebService(endpointInterfacecn.it.ws.e.JobService)//设置服务端点接口 指定对外提供服务的接口 public class JobServiceImpl implements JobService {Overridepublic String getJob() {return JEE研发工程师|Android研发工程师|数据库工程师|前端工程师|测试工程师|运维工程师;}public void say(){System.out.println(早上好!);} } 客户端 import javax.xml.ws.Endpoint;public class Test {public static void main(String[] args) {JobService jobServicenew JobServiceImpl();String addresshttp://192.168.114.10:9999/ws/jobservice;Endpoint.publish(address, jobService);System.out.println(wsdl地址:address?WSDL);}} CXF框架 Apache CXF 是一个开源的 Services 框架CXF 帮助您来构建和开发 Services 这些 Services 可以支持多种协议比如SOAP、POST/HTTP、RESTful HTTP CXF 大大简化了 Service可以天然地和 Spring 进行无缝集成。 CXF介绍 soa的框架 cxf 是 Celtrix ESB框架和 XFirewebserivice 合并而成并且捐给了apacheCxF的核心是org.apache.cxf.Bus(总线)类似于Spring的 ApplicationContextCXF默认是依赖于Spring的Apache CXF 发行包中的jar如果全部放到lib中需要 JDK1.6 及以上否则会报JAX-WS版本不一致的问题CXF 内置了Jetty服务器 它是servlet容器好比tomcat CXF特点 与Spring、Servlet做了无缝对接cxf框架里面集成了Servlet容器Jetty支持注解的方式来发布webservice能够显示一个webservice的服务列表能够添加拦截器输入拦截器、输出拦截器 输入日志信息拦截器、输出日志拦截器、用户权限认证的拦截器 CXF开发 要想使用CXF框架那么就先导入jar包 asm-3.3.jarcommons-logging-1.1.1.jarcxf-2.4.2.jarjetty-continuation-7.4.5.v20110725.jarjetty-http-7.4.5.v20110725.jarjetty-io-7.4.5.v20110725.jarjetty-security-7.4.5.v20110725.jarjetty-server-7.4.5.v20110725.jarjetty-util-7.4.5.v20110725.jarneethi-3.0.1.jarwsdl4j-1.6.2.jarxmlschema-core-2.0.jar 接口 import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;WebService(serviceNamelanguageManager) public interface LanguageService {public WebResult(namelanguage)String getLanguage(WebParam(nameposition)int position);} 实现 package cn.it.ws.cxf.a;import org.apache.cxf.frontend.ServerFactoryBean; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsServerFactoryBean;/**开发语言排行描述服务*/ public class LanguageServiceImpl implements LanguageService {/* (non-Javadoc)* see cn.it.ws.cxf.a.LanguageService#getLanguage(int)*/Overridepublic String getLanguage(int position){String languagenull;switch (position) {case 1:languagejava; break;case 2:languageC;break;case 3:languageObjective-C;break; case 4:languageC#;break;default:break;}return language;}/**通过cxf框架发布webservice* 1. ServerFactoryBean* - 不设置注解也可以发布webservice服务 不支持注解* - 不支持拦截器的添加* 2. JaxWsServerFactoryBean* - 支持注解* - 可以添加拦截器* 3. webservice 访问流程* 1. 检测本地代理描述的wsdl是否与服务端的wsdl一致 俗称为握手* 2. 通过soap协议实现通信 采用的是post请求 数据封装在满足soap规约的xml中* 3. 返回数据 同样采用的是soap通信 数据封装在满足soap规约的xml中* param argspublic static void main(String[] args) {LanguageService languageServicenew LanguageServiceImpl();ServerFactoryBean beannew ServerFactoryBean();//Endpoint :地址 实现对象bean.setAddress(http://192.168.114.10:9999/ws/cxf/languangeService);bean.setServiceClass(LanguageService.class);//对外提供webservcie的业务类或者接口bean.setServiceBean(languageService);//服务的实现beanbean.create();//创建发布webserviceSystem.out.println(wsdl地址:http://192.168.114.10:9999/ws/cxf/languangeService?WSDL);}*/public static void main(String[] args) {LanguageService languageServicenew LanguageServiceImpl();JaxWsServerFactoryBean beannew JaxWsServerFactoryBean();//Endpoint :地址 实现对象bean.setAddress(http://192.168.114.10:9999/ws/cxf/languangeService);bean.setServiceClass(LanguageService.class);//对外提供webservcie的业务类或者接口bean.setServiceBean(languageService);//服务的实现bean//添加输入拦截器 :输入显示日志信息的拦截器bean.getInInterceptors().add(new LoggingInInterceptor());//添加输出拦截器 :输出显示日志信息的拦截器bean.getOutInterceptors().add(new LoggingOutInterceptor());bean.create();//创建发布webserviceSystem.out.println(wsdl地址:http://192.168.114.10:9999/ws/cxf/languangeService?WSDL);}} CXF与Spring集成 建立一个web项目准备所有jar包,将CXF_HOME\lib项目下的所有jar包,全部都拷贝新项目的lib目录下.其中里面已经包含了Sring3.0的jar包 其中jetty 服务器的包可以不要.因为我们要部署的tomcat服务器中了在web.xml中配置cxf的核心servletCXFServlet此配置文件的作用类 拦截/ws/*的所有请求 类似Struts2的过滤器 web.xml配置文件 ?xml version1.0 encodingUTF-8? web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://java.sun.com/xml/ns/javaeexsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsdversion3.0display-nameCXF_Server/display-name!-- 添加 CXF 的Servlet 处理 webservice的请求 --servletservlet-namecxf/servlet-nameservlet-classorg.apache.cxf.transport.servlet.CXFServlet/servlet-classload-on-startup0/load-on-startup/servletservlet-mappingservlet-namecxf/servlet-nameurl-pattern/ws/*/url-pattern/servlet-mapping!-- Spring 监听添加 --listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listenercontext-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-param /web-app 实体 public class Employee {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}} 接口 package cn.it.ws.cxf.b;import java.util.List;import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService;import cn.it.ws.cxf.bean.Employee; WebService(serviceNameEmployeeService) public interface EmployeeManager {void add(WebParam(nameemployee)Employee employee);WebResult(nameemployees)ListEmployee query();} 接口实现 package cn.it.ws.cxf.b;import java.util.ArrayList; import java.util.List;import cn.it.ws.cxf.bean.Employee;/**员工管理的业务实现类*/ public class EmployeeManagerImpl implements EmployeeManager {private ListEmployee employeesnew ArrayList();Overridepublic void add(Employee employee){//添加到集合中employees.add(employee);}Overridepublic ListEmployee query(){return employees;}} Spring配置信息 ?xml version1.0 encodingUTF-8? beansxmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:phttp://www.springframework.org/schema/pxmlns:jaxwshttp://cxf.apache.org/jaxwsxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsdbean idemployeeManagerImpl classcn.it.ws.cxf.b.EmployeeManagerImpl/bean!-- 配置cxf地址 http://192.168.114.10:8080/CXF_Server/ws/employeeManager组成 http://192.168.114.10:8080 CXF_Server 项目名ws过滤的路径/employeeManager(自定义部分)服务类 服务的实现类拦截器--jaxws:server address/employeeManager serviceClasscn.it.ws.cxf.b.EmployeeManagerjaxws:serviceBeanref beanemployeeManagerImpl//jaxws:serviceBean!-- 配置输入显示日志信息的拦截器 --jaxws:inInterceptorsbean classorg.apache.cxf.interceptor.LoggingInInterceptor/bean/jaxws:inInterceptorsjaxws:outInterceptorsbean classorg.apache.cxf.interceptor.LoggingOutInterceptor/bean/jaxws:outInterceptors/jaxws:server/beans IDEA下使用webservice 我们的Intellij idea是一个非常好用的java ide当然了它也支持webservice开发。非常好用…由于在网上见到的教程非常多我就贴几个我认为比较好的教程 http://www.biliyu.com/article/986.html http://blog.csdn.net/u010323023/article/details/52926051 http://blog.csdn.net/dreamfly88/article/details/52350370 获取天气预报 我们现在webservice就基本入门了现在我想要做的就是自己写的网站能够拿到天气预报的信息于是我去http://www.webxml.com.cn/zh_cn/index.aspx找到了天气预报的服务 这个是天气预报的WSDL地址http://ws.webxml.com.cn/WebServices/WeatherWS.asmx那么我们只要解析该WSDL服务即可 如果不想得到所有的信息那么我们可以在服务上找到我们想要对应的数据也就是说 总结 应用webservice的原因就在于我们需要一些服务、这些服务是我们自己不能手动写的。比如天气预报于是就出现了webService技术。webService能够让我们可以获取网上别人发布出来的服务。我们只要调用它就可以获取相关的数据了。 Socket其实就是对TCP/IP协议的一个封装而我们在网上使用的是HTTP协议。WebService也是Web应用程序。它也当然支持HTTP协议了。不过WebService需要给不同语言都能够使用因此它使用XML来进行传输。 于是它就有自己一种协议**:SOAP(简单对象访问协议)。其实SOAP就是HttpXML**。 我们可以使用http-get方式访问webservice由于它使用的是原生Socket来进行访问。会有点复杂。于是我们可以借助Http-Client 框架来访问WebService。Http-Client 框架比HTTP-GET方式会简单一点。但还是不够简洁。 最后我们可以使用Java自带的WsImport来实现本地代理。这种方法会将WebService翻译成Java类我们使用类一样去访问WebService就行了。非常好用。 我们是可以自己写webService的。 对服务类上加上注解。通过EndPoint(端点服务)就能够把我们webService服务类发布出去了。 为了让WDSL文件更加读取可以使用注解的方式来写好对应的参数名称。也可以控制某方法是否被发布出去 SOAP其实上就是使用XML进行传输的HTTP协议。 SOA:面向服务架构。即插即用。也就是耦合非常低用的时候加上就行了。 UDDI Universal Description, Discovery and Integration统一描述、发现、集成其实就是一个webservice的目录结构不过我们很少把webservice发布到上面去 实现接口的webservice只是在类上对其的一种抽象而已没什么大不了的。 CXF框架可以与spring无缝连接就不用我们自己Endpoint了。它还能记录日志之类的。 我们还可以使用Idea下的webservice能够使用图形画面的方式获取本地代理和生成WSDL文件。
http://www.pierceye.com/news/917913/

相关文章:

  • 网站建设168网站谁做的比较好
  • 邯郸移动网站建设公司wordpress页脚太高
  • 大型电子商务网站开发上海 网站建设 外包it
  • 设计得很好的企业网站wordpress 标签云
  • 杂志网站模板苏州设计网页网站好
  • 设计理论网站清远市发布
  • 长沙本土网站制作公司wordpress thegem
  • 网站后台 源码重庆电力公司网站
  • 泰安企业网站建设电话廉江手机网站建设公司
  • 自已建网站微信登录珠海绿网科技有限公司
  • 大良网站制作太原建筑公司网站
  • 网站开发的交付文档抖音代运营费用明细
  • 自适应网站建设沈阳网站安全建设需求
  • 列表主题wordpress国外seo综合查询
  • 装修网站怎么做推广做百度网站每年的费用多少
  • 网站搭建免费视频教程省企联网站建设要求
  • 天津大学生专业做网站建设网站价格
  • 携程网站建设进度及实施过程文具电子商务网站开发内容
  • 怎么查看网站打开速度网站源码整站下载
  • 北京城乡住房建设部网站常见的网络营销推广方式有哪些
  • 做网站的成本费用钱宝网站怎么做任务
  • 网站上的格式用html怎么做部队网站设计
  • 帮客户做网站内容社交网站有哪些如何做
  • 网站开发与设计实训总结两千字公众号制作的网站开发
  • 一个公司做2个产品网站怎么做的用html5做的网站素材
  • 内乡网站建设咸阳网站建设报价
  • 企业网站多少钱扶余手机网站开发
  • 做外汇网站卖判刑多少年如何找回网站后台密码
  • 怎么做优惠券网站asp.net mvc 5网站开发之美
  • 网站底部浮动电话广告福建住房和城乡建设部网站