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

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));
总结:
--没有预先注册的对象不能发送

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值