传智播客--Web Service之基本概念,axis自带案例介绍和第一个Web Service程序

来源:互联网 发布:app软件制作公司 编辑:程序博客网 时间:2024/05/20 06:31

Web Service是各大论坛上的一个热门话题.在实际开发中一向很实用的技术.Web Service技术本身的思想并不复杂,但在面试中会经常被问到.我们会通过两天的学习,来掌握Web Service的发布和实用并了解其工作原理.

1.各种结构的介绍
B/S:瘦客户端
C/S:富客户端
Web Service:是客户端和服务器端可以相互转换的.
总结:
--web service是跨语言,跨平台,分布式,系统间整合的解决方案
--b/s服务器端向客户端发送HTML代码,在服务器上执行
--远程调用,服务器端向客户端发送业务数据,服务器上执行
--web service是远程调用的一种
--EJB也可以远程调用.

2.基本概念和术语介绍
1)SOA:面向服务的架构
2)ESB:业务服务总线
3)SOAP:简单对象访问协议.HTTP + XML:<SOAP:ENV>
4)WSDL:Web Service Description Language.Web Service描述语言,描述web服务的(地址,端口,操作,参数,返回值)
5)RPC(remote process call):远程过程调用
总结:
--客户端和服务器端是相对的。
--通过XML相互传,但是有格式限制的。
--操作对应Java的方法,C++的函数等,因为Web Service是和语言无关的.
--Web Service中接收和发送的数据格式完全一样
--分布式程序重点是通信.

3.JDK1.6新增支持webService
类注解:
@WebService(serviceName="HelloWorldService",
            targetNamespace="http://www.itcast.cn")
@SOAPBinding(style=SOAPBinding.Style.RPC)
方法注解: @WebMethod
总结:
--在开发中多用JDK1.5
--只能演示用,还有很多的bug.
--结果可以在Web Service浏览器中查看
--在浏览器中可以看描述文档

4.axis自带案例
1).准备webapp
  拷贝axis自带的axis项目到${tomcat}/webapp下.
2).配置Libraries
3).启动浏览器
4).校验安装
  查看启动页
  用happyaxis校验axis
  查看一些service
  测试soap终端
    (http://localhost:8080/axis/services/Version?method=getVersion)
  测试jws终端
    http://localhost:8080/axis/EchoHeaders.jws?method=list
Axis的特点:速度: 灵活性,稳定性,面向组件的部署,传输框架,WSDL支持
总结:
--在开发中,都是先用web service浏览器测试一下通不通.

5.在程序中访问axis自带案例:
1).Service service = new Service()
2).Call call = service.createCall(..)// http://../EchoHeaders.jws
3).call.setOperationName(“echo”);
4).Model m = (Model)call.invoke(new Object[]{..})
总结:
--调用call方法时,前面最好直接加上显示转换,并用正确的类型接受
--实用axis 客户端API访问axis自带的项目中的服务(EchoHeaders.jws)

6.自己的web service
1)建一个web项目
2)加入包
3)配置web.xml文件
-配置axisServlet
-管理servlet
-配置servlet url的匹配模式
-/services/*,是针对自定义发布的.
4)把项目部署
5)
即时部署(不能有包名):把.java文件拷贝到webapps下,把扩展名改成.jws
看好不好使,http://localhost:8085/lsn_nyaxis/Caculaotor.jws?wsdl
字节码在jwsClasses中,是实时编译的.
6)测试
7)自定义部署/定制发布
-在项目下新建,deploy.wsdd,web service的部署描述符.服务名包名方法名要改.
-用java application运行,并配置参数.
-部署后运行,在tomcat上就会出现一个server-config.wsdd文件.第一次得发布,以后直接改这个文件就行了
-通过http://localhost:....services/HelloWorldService访问
总结:
--即时部署,类不能有包名
--文档上Axis User's Guide有很详细的说明
--即时部署只能演示用.
--在开发中使用,自定义部署/定制发布
--私有方法是不能发布的.
--web service开发的时候能发布就行,能说出原理.
--web services面向传输层

Java集合的发送需要序列化:
1)服务器端注册:
axis将java类和xml schema类型影射在一起,就自动进行编码序列化/反序列化.
<beanMapping qname="ns:Customer" xmlns:ns=“urn:pojo:itcast:cn"
             languageSpecificType="java:..Customer"/>

2)客户端注册:
QName qn = new QName("urn:pojo:itcast:cn", "Customer");
call.registerTypeMapping(Customer.class, qn,
                new ..BeanSerializerFactory(Customer.class, qn),
                new ..BeanDeserializerFactory(Customer.class, qn));
总结:
--没有预先注册的对象不能发送

原创粉丝点击