webservice
摘要: axis2是目前比较流行的webservice引擎。webservice被应用在很多不同的场景。例如,可以使用webservice来发布服务端 java类的方法,以便使用不同的客户端进行调用。这样可以有效地集成多种不同的技术来完成应用系统。webservice还经常被使用在soa中,用于 soa各个部分交换数据。本课程重点讲解了axis2的核心功能,并提供了三个项目以使学员理解并掌握如何将axis2应用于不同的场景。
阅读全文
摘要: 在axis2中提供了一个axis2模块(soapmonitor),该模块实现了与《webservice大讲堂之axis2(9):编写axis2模块(module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将soap请求与响应消息输出到tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出soap请求和响应消息。
摘要: axis2可以通过模块(module)进行扩展。axis2模块至少需要有两个类,这两个类分别实现了module和handler接口。开发和使用一个axis2模块的步骤如下:
1. 编写实现module接口的类。axis2模块在进行初始化、销毁等动作时会调用该类中相应的方法)。
2. 编写实现handler接口的类。该类是axis2模块的业务处理类。
3. 编写module.xml文件。该文件放在meta-inf目录中,用于配置axis2模块。
4. 在axis2.xml文件中配置axis2模块。
5. 在services.xml文件中配置axis2模块。每一个axis2模块都需要使用元素引用才能使用。
6. 发布axis2模块。需要使用jar命令将axis2模块压缩成.mar包(文件扩展名必须是.mar),然后将.mar文件放在\webapps\axis2\web-inf\modules目录中。
摘要: 在前面几篇文章中都是使用同步方式来调用webservice。也就是说,如果被调用的webservice方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用webservice虽然很直观,但当webservice方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问webservice的任务交由一个或多个线程来完成,而主线程并不负责访问webservice。这样即使被访问的webservice方法长时间不返回,客户端仍然可以做其他的工作。我们可以管这种通过多线程访问webservice的方式称为异步访问。虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好axis2的客户端提供了异步访问webservice的功能。
摘要: 在现今的web应用中经常使用spring框架来装载javabean。如果要想将某些在spring中装配的javabean发布成webservice,使用axis2的spring感知功能是非常容易做到的。在本文的例子中,除了\webapps\axis2目录及该目录中的相关库外,还需要spring框架中的spring.jar文件,将该文件复制到\webapps\axis2\web-inf\lib目录中。
摘要: 在《webservice大讲堂之axis2(5):会话(session)管理》一文中介绍了如何使用axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个webservice服务,例如,至少会有一个管理用户的webservice(用户登录和注册)以及处理业务的webservice。象这种情况,就必须在多个webservice服务之间共享会话状态,也称为跨服务会话(session)管理。实现跨服务会话管理与实现同一个服务的会话管理的步骤类似,但仍然有一些差别,实现跨服务会话管理的步骤如下:
实现跨服务的session管理需要如下三步:
1. 使用messagecontext和servicegroupcontext获得与设置key-value对。
2. 为要进行session管理的webservice类所对应的元素添加一个scope属性,并将该属性值设为application。
3. 在客户端使用setmanagesession(true)打开session管理功能。
摘要: 使用axis2来管理webservice的会话(session)状态基本上对于开发人员是透明的。在webservice类需要使用org.apache.axis2.context.messagecontext和org.apache.axis2.context.servicecontext类来保存与获得保存在服务端的状态信息,这有些象使用httpsession接口的getattribute和setattribute方法获得与设置session域属性。
摘要: 在webservice类中除了可以使用byte[]作为传输二进制的数据类型外,也可以使用javax.activation.datahandler作为数据类型。 不管是使用byte[],还是使用javax.activation.datahandler作为webservice方法的数据类型,使用wsdl2java命令生成的stub类中相应方法的类型都是javax.activation.datahandler。而象使用.net、delphi生成的stub类的相应方法类型都是byte[]。这是由于javax.activation.datahandler类是java特有的,对于其他语言和技术来说,并不认识javax.activation.datahandler类,因此,也只有使用最原始的byte[]了。
摘要: 在本文将介绍一下如何使用services.xml文件将带包的pojo类发布成webservice,以及如何发布多个webservice。
阅读全文
摘要: 在实际的应用中,不仅需要使用webservice来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在axis2中可以直接使用将webservice方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分隔。在传递类的对象实例时,除了直接将数组类型声明成相应的类或接口,也可以将对象实例进行序列化,也就是说,将一个对象实例转换成字节数组进行传递,然后接收方再进行反序列化,还原这个对象实例。本文的示例代码演示了如何传递数组与类(接口)类型的数据,并演示如何使用字节数组上传图像。本示例的客户端代码使用java和c#编写。
摘要: axis2是一套崭新的webservice引擎,该版本是对axis1.x重新设计的产物。axis2不仅支持soap1.1和soap1.2,还集成了非常流行的rest webservice,同时还支持spring、json等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用axis2开发一个不需要任何配置文件的webservice,并在客户端使用java和c#调用这个webservice。
阅读全文