摘要: 在Axis2中提供了一个Axis2模块(soapmonitor),该模块实现了与《WebService大讲堂之Axis2(9):编写Axis2模块(Module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将SOAP请求与响应消息输出到Tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出SOAP请求和响应消息。 下面是配置和使用soapmonitor模块的步骤: 第1步:部署Applet和Servlet 由于axis2默认情况下已经自带了soapmonitor模块,因此,soapmonitor模块并不需要单独安装。但applet所涉. 阅读全文
posted @ 2012-04-16 10:37 狼里格朗 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 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模块都需要使用<module>元 阅读全文
posted @ 2012-04-16 10:36 狼里格朗 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 在前面几篇文章中都是使用同步方式来调用WebService。也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。 当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。我们可. 阅读全文
posted @ 2012-04-16 10:35 狼里格朗 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 在现今的Web应用中经常使用Spring框架来装载JavaBean。如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的。 在本文的例子中,除了<Tomcat安装目录>\webapps\axis2目录及该目录中的相关库外,还需要Spring框架中的spring.jar文件,将该文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\lib目录中。 下面先建立一个JavaBean(该JavaBean最终要被发布成WebService),代码如下: packageserv 阅读全文
posted @ 2012-04-16 10:34 狼里格朗 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 在《WebService大讲堂之Axis2(5):会话(Session)管理》一文中介绍了如何使用Axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个WebService服务,例如,至少会有一个管理用户的WebService(用户登录和注册)以及处理业务的WebService。象这种情况,就必须在多个WebService服务之间共享会话状态,也称为跨服务会话(Session)管理。实现跨服务会话管理与实现同一个服务的会话管理的步骤类似,但仍然有一些差别,实现跨服务会话管理的步骤如下:实现跨服务的Session管理需要如下三步:1.使用MessageContext和Servic 阅读全文
posted @ 2012-04-16 10:33 狼里格朗 阅读(255) 评论(0) 推荐(0) 编辑
摘要: WebService给人最直观的感觉就是由一个个方法组成,并在客户端通过SOAP协议调用这些方法。这些方法可能有返回值,也可能没有返回值。虽然这样可以完成一些工具,但这些被调用的方法是孤立的,当一个方法被调用后,在其他的方法中无法获得这个方法调用后的状态,也就是说无法保留状态。读者可以想象,这对于一个完整的应用程序,无法保留状态,就意味着只依靠WebService很难完成全部的工作。例如,一个完整的应用系统都需要进行登录,这在Web应用中使用Session来保存用户登录状态,而如果用WebService的方法来进行登录处理,无法保存登录状态是非常令人尴尬的。当然,这也可以通过其他的方法来解决, 阅读全文
posted @ 2012-04-16 10:32 狼里格朗 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 在《WebService大讲堂之Axis2(2):复合类型数据的传递》中讲过,如果要传递二进制文件(如图像、音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式进行调用。这样做只是其中的一种方法,除此之外,在客户端还可以使用wsdl2java命令生成相应的stub类来调用WebService,wsdl2java命令的用法详见《WebService大讲堂之Axis2(1):用POJO实现0配置的WebService》。 WebService类中包含byte[]类型参数的方法在wsdl2java生成的stub类中对应的数据类型不再是byte[]类型,而是javax... 阅读全文
posted @ 2012-04-16 10:31 狼里格朗 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 用Axis2实现Web Service,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中。这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成Web Service。 先实现一个POJO类,代码如下: packageservice; publicclassMyService { publicStringgetGreeting(Stringname) { return"您好"+name; } publicvoidupdate(Stringdata) { Sy 阅读全文
posted @ 2012-04-16 10:30 狼里格朗 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据。数组与类(接口)是比较常用的复合类型。在Axis2中可以直接使用将WebService方法的参数或返回值类型声明成数组或类(接口)。但要注意,在定义数组类型时只能使用一维数组,如果想传递多维数组,可以使用分隔符进行分隔,如下面的代码所示:String[] strArray = new String[]{ "自行车,飞机,火箭","中国,美国,德国", "超人,蜘蛛侠,钢铁侠" } ; 上面的代码可以看作是 阅读全文
posted @ 2012-04-16 10:29 狼里格朗 阅读(352) 评论(0) 推荐(0) 编辑
摘要: Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物。Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring、JSON等技术。这些都将在后面的系列教程中讲解。在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService。一、Axis2的下载和安装 读者可以从如下的网址下载Axis2的最新版本: http://ws.apache.org/axis2/ 在本文使用了目前Axis2的最新版本1.4.1。读者可以下载如下 阅读全文
posted @ 2012-04-16 10:28 狼里格朗 阅读(264) 评论(0) 推荐(0) 编辑