Axis初学手册 -- 1

这些天稍微玩了一下

Axis ,以前做 WebServices 都使用 JBuilder ,感觉做 WebServices 如此简单,现在自己手动做,原来也是如此简单。高兴之余写一个简单的初学手册,就算是学习成果吧。当然对 Axis 理解的还不很深,所以错误之处望指点。

Axis是一个实现WebServiceFrameworkApache Web Services Projecthttp://ws.apache.org )的一个之项目,现在这个项目有很多之项目 Axis(http://ws.apache.org/axis/ )是其中一员,还有XML-RPC(这个也是我比较喜欢的东东J)。

现在Axis主要由两个版本一个是Axis一个是Axis2。两个好象有比较多的不同,我这里说的是Axis,过几天演技一下Axis2,然后再写一篇吧。

好了现在开始做个WebService 吧:

第一步当然是先去Axis主页下载一个来啦。下Release就行,最新的是1.2.1source好象没有打包的只有CVS的。下来以后解压缩,主要有以下文件夹

Docs 顾名思义,这里放的是文档,其实Axis的文档作的很好,我就是按照它的User Guide一步步做下来的。

Lib 运行Axis时要用到的jar包,要完全正常运行还缺两个mail.jar activation.jar 这两个是javaMail包,到处都能弄到。

Samples Axis自带的例子包括很多种应用

Webapps  Axis是发布到Servlet Container中的,要把Axis集成到你的项目中,就把这个文件夹里的内容合并到你的项目中就行了。

还有一个xmls文件夹,放得是一些可能用到的xml例子。

 

第二步,建一个项目,Web项目,用Eclipse或者Idea都可以啊。如果你非要用记事本类的东西,我也不拦着你。

Axis中的Webapps\axis文件夹下的东西统统Copy到你的Web文件夹下。其实有些东西是没用的,比如classes文件夹里的东西都可以去掉了,还有那几个jws文件也没有用。虽然axis最方便的发布WebServices的方法是把你的.java改成.jws的放到Web发布文件夹下的根目录下,但是这种方法没有什么适用价值。然后运行以下Tomcat(或者其他的Application Server)。然后浏览一下你的刚刚发布的这个项目,如果正常的话就可以看到Axis的默认画面,
axis1.jpg
这个页面不是必须的,在真正项目开发中可以把它去掉或换个名字。点击List连接进入已经发布的WebServices列表。
axis2.jpg
开始时应该只有AdminServiceVersion。后面两个就是我们在下面要做的WebServices

 

第三步,如果上面的一切正常,就可以正式开始做WebServices了。首先做一个Services实现类。Calc.java有两个方法plussubtract。这个Service所用到的数据类型都是基本类型。

然后在WEB-INF目录下加入一个server-config.wsdd。这是WebServices的发布描述文件,作用类似于web.xml。它有自己的格式,但是具体的标记是什么样子的,在Axis的文档中没有详细的一一列出,只是提到了常用的一些。在axis的源码中有一些wsddXSD文件,如果你用的是IDEA可以把这些XSD映射到uri,这样编辑器就有提示了。

下面这我们本文中的server-config.wsdd的样子:

这个文件比Axis自带的那些deploy.wsdd要多很多东西,在Axis的文档中它使用命令来把对deploy.wsdd进行发布的。在我的例子中是直接把server-config.wsdd写好放到WEB-INF下。所以要把Service上面那些东西加上,否则系统不能正常运行。

Calc的发布描述。其中scope属性默认是request所以不写也可以。其他parameter看名字就知道干什么的了。这样你在List页面中就可以查看CalcServiceWSDL了。

 

未完待续.......

     < service  name ="CalcService"  provider ="java:RPC" >
        
< parameter  name ="allowedMethods"  value ="*" />
        
< parameter  name ="className"  value ="org.mstar.ws.Calc" />
        
< parameter  name ="scope"  value ="request" />
    
</ service >
<? xml version="1.0" encoding="UTF-8" ?>
< deployment  name ="defaultClientConfig"
            xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java"
            xmlns:handler
="http://xml.apache.org/axis/wsdd/providers/handler"  xmlns ="http://xml.apache.org/axis/wsdd/" >
    
< globalConfiguration  name ="defaultClientConfig" >
        
< requestFlow  name ="RequestFlow1" >
            
< handler  name ="Handler1"  type ="java:org.apache.axis.handlers.JWSHandler" >
                
< parameter  name ="scope"  value ="session" />
            
</ handler >
            
< handler  name ="Handler2"  type ="java:org.apache.axis.handlers.JWSHandler" >
                
< parameter  name ="scope"  value ="request" />
                
< parameter  name ="extension"  value =".jwr" />
            
</ handler >
        
</ requestFlow >
    
</ globalConfiguration >
    
< handler  name ="URLMapper"  type ="java:org.apache.axis.handlers.http.URLMapper" />
    
< handler  name ="LocalResponder"  type ="java:org.apache.axis.transport.local.LocalResponder" />
    
< handler  name ="Authenticate"  type ="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />
    
< transport  name ="http" >
        
< requestFlow  name ="RequestFlow1" >
            
< handler  name ="Handler1"  type ="URLMapper" />
            
< handler  name ="Handler2"  type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
        
</ requestFlow >
    
</ transport >
    
< transport  name ="local" >
        
< responseFlow  name ="ResponseFlow1" >
            
< handler  name ="Handler1"  type ="LocalResponder" />
        
</ responseFlow >
    
</ transport >
    
< service  name ="AdminService"  provider ="java:MSG" >
        
< parameter  name ="allowedMethods"  value ="AdminService" />
        
< parameter  name ="enableRemoteAdmin"  value ="false" />
        
< parameter  name ="className"  value ="org.apache.axis.utils.Admin" />
        
< namespace > http://xml.apache.org/axis/wsdd/ </ namespace >
    
</ service >
    
< service  name ="Version"  provider ="java:RPC" >
        
< parameter  name ="allowedMethods"  value ="getVersion" />
        
< parameter  name ="className"  value ="org.apache.axis.Version" />
    
</ service >
    
< service  name ="CalcService"  provider ="java:RPC" >
        
< parameter  name ="allowedMethods"  value ="*" />
        
< parameter  name ="className"  value ="org.mstar.ws.Calc" />
        
< parameter  name ="scope"  value ="request" />
    
</ service >
    
< service  name ="FooService"  provider ="java:RPC" >
        
< parameter  name ="allowedMethods"  value ="*" />
        
< parameter  name ="className"  value ="org.mstar.ws.FooService" />
        
< parameter  name ="scope"  value ="session" />
        
< typeMapping  encodingStyle ="http://schemas.xmlsoap.org/soap/encoding/"
                     xmlns:ns1
="http://ws.mstar.org"
                     qname
="ns1:FooBean"
                     languageSpecificType
="java:org.mstar.ws.FooBean"
                     serializer
="org.apache.axis.encoding.ser.BeanSerializerFactory"
                     deserializer
="org.apache.axis.encoding.ser.BeanDeserializerFactory"
                     name
="FooBean" />
        
< requestFlow  name ="requestFlow1" >
            
< handler  name ="Handler1"  type ="java:org.mstar.ws.FooHandler" />
        
</ requestFlow >
        
< responseFlow >
            
< handler  name ="Handler1"  type ="java:org.mstar.ws.FooHandler" />
        
</ responseFlow >
    
</ service >
</ deployment >
public   class  Calc {
    
public   int  plus( int  a, int  b){
        
return  a + b;
    }

    
public   int  substract( int  a, int  b){
        
return  a - b;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值