`
gao_xianglong
  • 浏览: 466682 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Use Axis2.x(WebService)-02

阅读更多

 

前言

 

好久没写博文了,手又开始犯痒了,来吧,今天就接着前几个星期咱们没说完的继续。如果笔者没有记错的话,上一章笔者仅仅只是对WebService的概念及Axis2的基本使用做了个大致的介绍,并没有深入到具体的使用细节,那么接下来笔者将带领大家展开属于你的Axis2之旅。那么废话不多说,请调整好你的情绪,关掉你的音乐,准备好你的IDE,就跟着笔者开始吧。

 

一、使用services.xml发布你的Service

在上一章中,笔者给大家演示了如何使用Axis2的0配置发布Service,虽然很简单,但不知大家是否发现,我们所发布的Service是没有带包的,但实际开发过程中这几乎是不可能的。POJO不可能单单仅放置在\WEB-INF\POJO\目录下,因为没有包,咱们的POJO管理几乎是非常不方便的。

 

打开你的IDE,咱们接下来编写一个带包的POJO发布成Service:

 

 

上述是笔者项目的工程目录结构,可见笔者要将发布成Service 的POJO安置在org.johngao.service包下,先来看看POJO中的内容吧:

 

package org.johngao.service;

/**
 *	用户登陆效验
 *
 * 	@author JohnGao
 */
public class LoginValidate 
{
	/**
	 *	用户账号与密码效验
	 *
	 * 	@author JohnGao
	 * 
	 * 	@param String: 用户账号, 用户密码
	 * 
	 * 	@throws Exception
	 * 
	 * 	@return boolean: 登陆效验结果
	 */
	public boolean validate(String account, String pwd) 
			throws Exception
	{
		/* 登陆效验 */
		if("admin".equals(account))
			if("123456".equals(pwd))
				return true;
		return false;
	}
}

 

上述POJO中的内容笔者提供了一个validate()方法模拟用户登陆效验。因为当系统选择集成后,可能会共用同一平台资源,所以我们需要将登陆进行整合

 

在发布之前我们先按照管理跑JUnit看看效果以确保我们发布的Service能够正常工作:

 

 

值得庆幸的是,咱们的POJO顺利通过测试,那么接下来咱们就需要将该POJO发布为Service了。但是在发布之前咱们仍然有一些准备工作要做,因为咱们不可能继续将带包的POJO放置在\WEB-INF\POJO\目录下。

想要将带包的POJO顺利发布成Service,那么必不可少的条件就是需要services.xml文件,因为该文件描绘与类的关系结构

关于services.xml该放置在何处呢?然后又该怎么发布呢?别急,听笔者细细道来。你首先需要在工程目录下新建一个\META-INF\文件夹,然后新建一个service.xml文件即可。

services.xml文件中的内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<!-- Service名称 -->
<service name="myService">
	<!-- Service描述 -->
	<description>
		登陆效验Service
	</description>
	<!-- 描绘包与类的关系结构 -->	
	<parameter name="ServiceClass">
		org.johngao.service.LoginValidate
	</parameter>
	<!-- 定义方法处理器 -->
	<messageReceivers>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
			class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
	</messageReceivers>
</service>

 

上述文件中<service/>标签描绘了你的Service结构,但一个<service/>标签仅用于描绘一个POJO,其中属性name则定义了目标Service的名称。<description/>标签用于描绘该Service的作用。<parameter/>标签比较关键,描绘了POJO与包的结构关系,然后通过反射的形式进行加载调用。而<messageReceivers>标签则尤为重要,该标签定义了Service的方法处理器,什么是方法处理器呢?或许这个名字比较绕口,但理解起来还是挺容易的,换句话来说方法处理器可以理解为对方法返回结果的管理。因为我们所发布的Service方法并不一定每一个都是具备返回值。假设你的Service并无返回值,那么你可以选择RPCInOnlyMessageReceiver(输入处理器)类作为你的方法处理器,反之可以选择RPCMessageReceiver(输入输出处理器)类作为你的方法处理器。

 

提示:

如果你在services.xml文件中需要发布多个Service,那么你可以使用<serviceGroup/>标签:

 

<serviceGroup>
	<service>
		<!-- 第一个Service -->
	</service>
	<service>
		<!-- 第二个Service -->
	</service>
</serviceGroup>

 

 

接下来要做的事情就是你最期待的,那便是将带包的POJO发布成Service进行调用。当然你选择使用service.xml文件的形式发布Service,首先则必须将项目打包成".aar"文件(也就是".jar")。你可以先将项目打包成jar,然后再将文件后缀改变为aar即可,当然不改也行,只是为了遵循Axis2的规范,笔者还是建议你将文件后缀改成aar。

 

这里笔者需要提醒你的是,在将项目打包时,你只需要选择\META-INFA\service.xml即可,字节码文件不需要一起打包:

 

 

接下来我们需要将打包好的aar文件放置在\axis2\WEB-INF\services\目录下。当然这样还并没有结束,你还需要将项目的字节码文件放置在\axis2\WEB-INF\classes\目录下,或者以jar包的形式放置在\axis2\WEB-INF\lib\目录下都可以。当然笔者还是选择将字节码文件放置在classes目录下。

 

启动你的Web容器,输入http://ip:port/axis2/services/listServices进行访问:

 

 

可见,上图中咱们已经成功将带包的POJO发布成Service了。但是这里存在一个疑问,笔者在上一章节的0配置发布Service中,以及本章中都只是仅讲解了如何发布Service,但是并没有讲解如何调用发布的Service???别着急,下述章节笔者将会着重讲解。

时间不早了,笔者要出去看电影了,听说最近《少年派》很火,笔者赶场看电影去了,see you,各位晚上更新后续博客,敬请等待

 

1
1
分享到:
评论
2 楼 gao_xianglong 2012-12-24  
kenqiao 写道
我在访问wsdl的时候报错,javax.servlet.ServletException: File &quot;/axis2-web/listSingleService.jsp&quot; not found

这个怎么解决呢?楼主,tomcat访问没有问题



这与Axis2无关,配置问题,注意看 not fount
1 楼 kenqiao 2012-12-24  
我在访问wsdl的时候报错,javax.servlet.ServletException: File &quot;/axis2-web/listSingleService.jsp&quot; not found

这个怎么解决呢?楼主,tomcat访问没有问题

相关推荐

    Axis2发布和调用webservice

    描述了axis2如何发布webservice,如果是用MyEclipse来发布,需要安装插件,把你发布后的.aar文件放 入/web/WEB-INF/services/目录中就能被访问和调用,有点繁琐,但axis2功能十分强大,方法的返回类型不仅可 以用...

    Axis2 Webservice端例子

    总结,Axis2 Webservice端例子旨在帮助开发者了解如何在Axis2环境下构建和发布Web服务。通过定义服务接口、实现业务逻辑、创建WSDL描述和服务打包,以及在服务器上部署和调用,我们可以掌握Axis2的核心工作原理。...

    axis_1.4 for webservice 开发

    【描述】提到的"Attached the file is Axis_1.4 for webservice development,you can upload it and use it."意味着提供的压缩包包含了Axis 1.4的完整版本,用户可以将其上传到自己的开发环境中,并开始利用这个工具...

    webservice :spring 3+cxf3.4服务方,AXIS1.4请示方调用

    ### WebService技术应用:Spring 3 + CXF 3.4与Axis 1.4的交互 在现代软件开发中,Web服务作为一种重要的技术手段,被广泛应用于不同系统之间的通信。其中,Spring框架与Apache CXF是实现RESTful或SOAP风格的Web...

    axis webservice简单示例

    接下来,我们需要使用Axis工具生成Web服务的部署文件(wsdd),这可以通过 Axis 的 `wsdl2java` 命令完成。运行以下命令, Axis 将生成必要的客户端和服务器端代码: ```bash java -jar axis.jar wsdl2java -o /...

    Axis 简单说明

    &lt;typeMapping encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" qname="ns1:CategoryInfo" languageSpecificType="java:nucleus.organization.webservice.CategoryInfo" serializer="org.apache.axis....

    使用php搭建webService服务器(代码实例)

    2. `&lt;message&gt;` 元素:定义每个消息的部件,包括消息名称、参数和返回类型。 3. `&lt;portType&gt;` 元素:描述一个 Web Service 的接口,定义了可被执行的操作和相关的消息。 4. `&lt;binding&gt;` 元素:定义每个端口的消息...

    Java+Webservice调用方式详解

    本文将详细介绍两种主流的Java调用Webservice的方式:Axis和SOAP,并通过具体代码示例进行阐述。 #### 二、Axis 方式调用 Webservice ##### 1. Axis简介 Apache Axis 是一个开放源代码项目,它为开发和部署基于...

    WebService应用

    根据给定的文件信息,我们将深入探讨WebService应用的关键知识点,包括WebService的定义、配置方法以及其实现技术,如XFire和Axis。 ### WebService概述 WebService是一种标准的、基于网络的应用程序接口(API),...

    Java6开发WebService入门

    在早期的Web服务开发中,开发者通常会使用CXF、Axis2、XFire等工具来构建基于Java的应用程序。这些工具之所以被广泛采用,主要是因为它们能够提供广泛的兼容性和灵活性,并且适应多种不同的Java版本环境。然而,在...

    WebService之WSDL文件讲解

    ### WebService之WSDL文件详解 #### 一、WSDL概述 **Web Services Description Language (WSDL)**,即Web服务描述语言,是一种基于XML的格式,用于描述Web服务的接口和绑定,以及如何访问这些服务。WSDL允许将Web...

    webservice例子及跨域访问配置

    在这个例子中,我们可能会看到一个使用Java的 Axis2 或 JAX-WS 框架创建的SOAP Web服务,或者是使用Spring Boot和OpenAPI/Swagger构建的RESTful API。这些工具可以帮助开发者快速构建和部署Web服务。 跨域访问是Web...

    基于xfire的WebService开发

    @SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL) String sayHello(String name); } ``` 接下来,我们需要实现这个接口。实现类可以包含实际的服务逻辑: ```java public class HelloWorldServiceImpl ...

    初探WSDL2JAVA工具的使用

    而WSDL2JAVA工具则是Apache Axis项目提供的一种强大工具,它能够根据WSDL文件自动生成Java代码,包括客户端和服务端的存根(Stub)和骨架(Skeleton)类,极大地简化了Web服务的开发过程。 #### WSDL2JAVA工具的...

Global site tag (gtag.js) - Google Analytics