WebService的使用
来源:互联网 发布:配置ubuntu镜像站 编辑:程序博客网 时间:2024/06/08 18:04
一、WebService的概念:
webservice就是能使运行在不同机器上的不同应用无需借助附加的、专门的第三方软件或硬件,就可以相互交换数据。无论他们所使用的语言、平台或内部协议是什么,都可以相互交换数据。
可以说其就是一个部署在web服务器上的一个应用程序,它通过向外界暴露出一个能够通过web进行调用的api,供使用者进行调用。在这里api的使用者称为客户端,而发布者则为服务端。在webservice中不存在严格意义上的客户端和服务端,任何人都可能是客户端和服务端。
二、常见的webservice业务服务:
1. 手机淘宝、京东
2. 天气预报
3. 手机号归属地
4. 股票查询
5. 发手机短消息
6. 手机充值功能
7. 中英文翻译
8. 银行转账业务
三、WebService专业名称介绍:
a) XML: ExtensibleMarkup Language -扩展性标记语言
XML,用于传输格式化的数据,是Web服务的基础。
• namespace-命名空间。
• xmlns=“http://itcast.cn” 使用默认命名空间。
• xmlns:itcast=“http://itcast.cn”使用指定名称的命名空间。
b) WSDL: WebService Description Language – Web服务描述语言。调用该webservice api 的接口描述
• 通过XML形式说明服务在什么地方-地址。
• 通过XML形式说明服务提供什么样的方法 – 如何调用。
c) SOAP:Simple Object Access Protocol(简单对象访问协议)
• SOAP作为一个基于XML语言的协议用于有网上传输数据。
• SOAP= 在HTTP的基础上+XML数据。
• SOAP是基于HTTP的。
• SOAP的组成如下:
1. Envelope – 必须的部分。以XML的根元素出现。
2. Headers – 可选的。
3. Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
四、发布一个WebService
(1)不实现接口进行发布:实体类:
package com.xusheng;public class Phone {private String osName;private String owner;private int market;public String getOsName() {return osName;}public void setOsName(String osName) {this.osName = osName;}public String getOwner() {return owner;}public void setOwner(String owner) {this.owner = owner;}public int getMarket() {return market;}public void setMarket(int market) {this.market = market;}@Overridepublic String toString() {return "Phone [osName=" + osName + ", owner=" + owner + ", market=" + market + "]";}}
业务类:
package com.xusheng;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.xml.ws.Endpoint;@WebService(serviceName = "PhoneManager" , targetNamespace="http://cn.itcast")public class PhoneProxy {public @WebResult(name = "phone")Phone getPhone(@WebParam(name = "osName")String osName){Phone p = new Phone();if("android".equals(osName)){p.setOsName("android");p.setOwner("google");p.setMarket(80);}else if("ios".equals(osName)){p.setOsName("ios");p.setOwner("apple");p.setMarket(10);}else{p.setOsName("windos");p.setOwner("microsoft");p.setMarket(10);}return p;}@WebMethod(exclude = true)public void sayHi(){System.out.println("hello world");}public static void main(String[] args) {String address = "http://127.0.0.2:8888/ws/PhoneProxy";Endpoint.publish(address, new PhoneProxy());System.out.println("地址是:"+address+"?WSDL");}}
首先,我们在需要发布的业务类上 加上@WebService()注解,可以为其设置参数:
serviceName:可以指定发布服务的名称
targetNamespace:设置其名称空间
@WebResult(name = "phone"):加在返回参数前,为其设置名称
@WebParam(name = "osName":设置参数的名称
@WebMethod(exclude = true):此注解是指定该方法不被发布,默认会将public方法进行发布,若此类不存在public方法,则启动会失败
最后,我们在主方法中使用Endpoint中的publish方法将该类进行发布,此方法有两个参数,一个是地址(String类型),另一个是要发布的类的一个对象
(2)实现接口情况下发布:
接口:
package cn.itcast;import javax.jws.WebService;@WebService(name = "JobService")public interface JobService {public String getJob();}
实现类:
package cn.itcast;import javax.jws.WebService;@WebService(name = "JobServiceImpl",endpointInterface = "cn.itcast.JobService")public class JobServiceImpl implements JobService {@Overridepublic String getJob() {return "jee开发|android开发|数据库开发";}public void sayHi(){System.out.println("hello world");}}
(3)使用CXF框架实现WebService
接口:
package com.xusheng;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;@WebService(serviceName = "LanguageManager")public interface LanguageService {public @WebResult(name = "language1")String getLanguage(@WebParam(name = "index1")int index);}
实现类:
package com.xusheng;import org.apache.cxf.interceptor.LoggingInInterceptor;import org.apache.cxf.interceptor.LoggingOutInterceptor;import org.apache.cxf.jaxws.JaxWsServerFactoryBean;public class LanguageServiceImpl implements LanguageService {public String getLanguage(int index) {String language = null;switch (index) {case 1:language = "java";break;case 2:language = "c";break;default:language = "php";break;}return language;}public static void main(String[] args) {LanguageService ls = new LanguageServiceImpl();JaxWsServerFactoryBean bean = new JaxWsServerFactoryBean();bean.setAddress("http://127.0.0.1:8888/ws/language");bean.setServiceClass(LanguageService.class);bean.setServiceBean(ls);bean.getInInterceptors().add(new LoggingInInterceptor());bean.getOutInterceptors().add(new LoggingOutInterceptor());bean.create();System.out.println("http://127.0.0.1:8888/ws/language?WSDL");}}首先我们在接口上加入@WebService注解,并且在发布项目时,还需要配置输入输出日志拦截器
(4)CXF与Spring集成发布WebService
在web.xml文件中配置cxf的核心servlet,CXFServlet
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>CXF_Server1</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <display-name>CXF_Server</display-name> <!-- 配置cxf的servlet,处理webservice请求 --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> <!-- spring的监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> </web-app>
实体类:
package com.xusheng.entity;public class Emp {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 com.xusheng.service;import java.util.List;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import com.xusheng.entity.Emp;@WebService(name = "EmpManager1")public interface EmpManager {<span style="white-space:pre"></span>public void add(@WebParam(name="employee")Emp emp);<span style="white-space:pre"></span>public @WebResult(name="employees")List<Emp> query();}}
实现类:
package com.xusheng.service;import java.util.ArrayList;import java.util.List;import com.xusheng.entity.Emp;public class EmpManagerImpl implements EmpManager {private List<Emp> emps = new ArrayList<Emp>();public void add(Emp emp) {emps.add(emp);}public List<Emp> query() {return this.emps;}}
配置Spring的xml文件:
<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:jaxws="http://cxf.apache.org/jaxws"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <bean id="employeeManagerImpl" class="cn.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" serviceClass="cn.it.ws.cxf.b.EmployeeManager"> <jaxws:serviceBean> <ref bean="employeeManagerImpl"/> </jaxws:serviceBean> <!-- 配置输入显示日志信息的拦截器 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:server> </beans>在配置完成后,我们可以将tomcat容器启动后,在浏览器地址栏中输入地址就可以看到WSDL文件
五、调用已发布WebService
我们可以通过http://www.webxml.com.cn上的已经发布的进行调用或者通过我们自己发布的地址进行访问,找到我们所需api的WSDL地址,
然后我们在命令提示符下通过wsimport命令(参数设置可以通过此命令进行查询)+WSDL地址可将文件导入到本地或者通过jar cvf test.jar将其整合成jar包,然后我们通过其WSDL文件中
的说明进行调用。
- 关于WebService的使用.
- WebService的简单使用
- webservice 的使用问题
- webService的使用步骤
- webservice的使用
- WebService的使用
- WebService的简单使用
- webservice的使用
- 关于webservice的使用
- webservice的配置使用
- webService的使用
- WebService的相关使用
- 简述WebService的使用
- php的webservice使用
- webservice的使用
- WebService的使用
- webservice的使用
- Android Webservice的使用
- MD5加密
- 点击页面其他地方取消EditText的焦点并且隐藏软键盘的方法
- UITableviewCell 改变选中selectedBackgroundView 的大小 颜色
- POJ 1006 Biorhythms【中国剩余定理】
- MongoDB基本操作
- WebService的使用
- android流量监控
- Csapp读书笔记:第五章
- 互利科技让企业更聪明的分析数据
- JDK1.7新特性--自动关闭类
- MyBatis-动态SQL的if、choose、when、otherwise、trim、where、set、foreach使用
- ios简单动画全解
- webView常见漏洞以及解决方法
- 开个博客