AXIS2参照官网入门学习( 连载二 )

 

Axis2服务是这样的

在创建任何服务之前,了解一个完整工程的结构对我们是很有用的。

Axis2的服务端可以发布在任何Servlet容器中,并且具有如下结构。显示在代码列表2中。

Code Listing 2: The Directory Structure of axis2.war

axis2-web 
META-INF
WEB-INF
 classes 
 conf
 axis2.xml 
 lib
 activation.jar
 ...
 xmlSchema.jar
 modules
 modules.list 
 addressing.mar
 ...
 soapmonitor.mar
 services
 services.list
 aservice.aar
 ...
 version.aar
 web.xml

从最上面开始,aixis2-web是一个jsp文件的集合,它组成了Axis2的管理程序,通过这个管理程序,你可以完成任何操作比如添加服务、添加和删除模型。WEB-INF目录包含所有javaclass文件和其他辅助文件,这些辅助性文件可以帮助完成services目录下所有service的发布。

 

WEB-INF下最重要的文件是axis2.xml,这个配置文件用来控制应用如何处理接收到的消息,决定Axis2是否需要申请modules目录下的任何模块。

 

就像你看到的,服务可以被发布成*.aar格式文件,但是他们的目录必须按照制定的方式安排。比如,我们这个服务的结构将是下面这个样子:

- StockQuoteService
 - META-INF
 - services.xml
 - lib
 - samples
 - quickstart
 - service
 - pojo
 - StockQuoteService.class

服务的名字是StockQuoteService,这个会在services.xml中配置并且绑定到服务的最高层目录。编译后的java class文件会根据包名被放置在服务下合适的额位置。Lib目录用来存放除过Axis2 war包中已经存在的和servlet容器用到的基本jar包外所有service运行所需要的指定jar文件。最后,为了Axis2能够恰当的执行这个服务,META-INF目录存放了所有需要用到的附加信息供Axis2使用。Services.xml定义了服务本身并且将class文件关联到服务。(看代码表3

Code Listing 3: The Service Definition File

<service name="StockQuoteService" scope="application">
 <description>
 Stock Quote Sample Service
 </description>
 <messageReceivers>
 <messageReceiver 
 mep="http://www.w3.org/2004/08/wsdl/in-only"
 class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
 <messageReceiver
 mep="http://www.w3.org/2004/08/wsdl/in-out"
 class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
 </messageReceivers>
 <parameter name="ServiceClass">
 samples.quickstart.service.pojo.StockQuoteService
 </parameter>
</service>

 

在相关的messageReceiver类型配置后面,service紧跟着被定义,它会为不同的消息交换模式提供服务。

META-INF目录同时也是你要引入整个工程应用的所有自定义WSDL文件的存放位置。要发布一个服务,你可以简单的将StockQuoteService整个目录下的文件拷贝到servlet容器的webapps/axis2/WEB-INF/services 目录下。(注意:Axis2WAR包必须首先安装到容器)这就是众所周知的爆炸”方式部署 。你也可以将你的工程压缩成一个 .aar文件,类似于.jar文件,然后将*.aar文件直接放置在servlet容器的webapps/axis2/WEB-INF/services目录下。

 

现在你应该明白了我们要做什么了,我们基本上已经做好了创建服务的准备了。

你可能感兴趣的:(axis2,WebServices)