论坛首页 Java企业应用论坛

使用Axis2快速开发web服务

浏览 11045 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-14  
SOA
使用Axis2开发web服务一般有以下三种形式:
1.pojo模式,此方法最为简便,但是也有很多的局限性,最为明显的就是不能有package
   step1:编写pojo对象
             public class HelloWorld{
             public String sayHello(String name){
               return "Hello,"+name;
             }
           }
           编译成class文件。
    step2:在Tomcat目录/webapps/axis2/WEB-INF/下新建pojo文件夹。
    step3:将class文件拷贝到pojo文件夹中。
    setp4:启动tomcat,在浏览器中输入:
            http://localhost:8080/axis2/services/HelloWorld/sayHello? 
            param0="ningkun"将会看到,"Hello,ningkun"的消息。


  2.如果我们想以pojo的形式发布web服务,并且与package的话,可以使用jar包的形式发
  布web服务。

    step1:编写java类
    AddressService类

    package sample;
    import javax.jws.WebService;

    @WebService
     public class AddressService {
public Address getAddress(){
Address address = new Address();
address.setStreet("Street");
address.setNumber("Number 15");
return address;
}
     }

   Address类
     package sample;

    public class Address {
private String street;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}

     }
    
    step2:修改axis2/WEB-INF/conf/axis2.xml
     添加
        <deployer extension=".jar" derectory="pojo" class="org.apache
         .axis2.deployment.POJODeployer"/>
   
    step3:将pojo类打包后放到pojo文件夹下。
    

   3.用Serice文件发布web服务。
       step1:编写java类,此处我们使用1中的HelloWorld类
       step2:编写services.xml
       <service name="HelloService">
<description>
This is a sample Web Service.
</description>
<parameter name="ServiceClass" locked="false">
     HelloWorld
</parameter>
<operation name="sayHello">
<messageReceiver
       class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</operation>
</service>
      注:messageReceiver中的class属性有多种选择,
             RawXMLINOutMessageReceiver 接受参数,并有返回值
             RawXMLINOnlyMessageReceiver 无返回值
    4.打包aar文件
      项目目录如下
          HelloWorld.class
         META-INF
            services.xml
        
       jar cvf HelloService.aar .

       step3:
     
    
   发表时间:2008-10-15  
setp4:启动tomcat,在浏览器中输入:
            http://localhost:8080/axis2/services/HelloWorld/sayHello? 
            param0="ningkun"将会看到,"Hello,ningkun"的消息。
=====================================================
請問 一下, webservice可以從以上介上的方法來進行調用嗎?
我試了Axis2 內建的getVersion怎麼都調不出來呢?
在ie輸入:
http://localhost:8080/axis2/services/Version?param0="hi"
回應的是HTTP500 內部伺服錯誤

  • 大小: 94.7 KB
0 请登录后投票
   发表时间:2008-10-15  
经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名"
但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式
0 请登录后投票
   发表时间:2008-10-15  
紧急下潜 写道

经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式

目前尚未发现,有待进一步研究。
0 请登录后投票
   发表时间:2008-10-15  
liang1022 写道

setp4:启动tomcat,在浏览器中输入: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://localhost:8080/axis2/services/HelloWorld/sayHello?&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤

不是吧,正常情况下是可以得到回应的啊。
1 请登录后投票
   发表时间:2008-10-15  
ningkun 写道
紧急下潜 写道

经我研究axis2的pojo这种方式有问题,在生成的soap消息内,会加上一个特殊属性type="类名" 但是在wsdl定义中是找不到这个属性定义的,有的soap解析会出问题的,这不是标准通用的方式

目前尚未发现,有待进一步研究。

axis2有一个SOAPMonitor,你可以配置好用它查看发送的soap消息
本来我也没注意到这个问题,我是在使用tuscany做客户端调用axis2的pojo服务端的时候,出问题了,死循环导致溢出,后来跟踪eclipse的sdo实现发现到这个问题的,因为这个type属性在wsdl和schema中未定义,所以导致循环解析出错
0 请登录后投票
   发表时间:2008-10-16  
ningkun 写道
liang1022 写道

setp4:启动tomcat,在浏览器中输入: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://localhost:8080/axis2/services/HelloWorld/sayHello?&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; param0="ningkun"将会看到,"Hello,ningkun"的消息。 ===================================================== 請問 一下, webservice可以從以上介上的方法來進行調用嗎? 我試了Axis2 內建的getVersion怎麼都調不出來呢? 在ie輸入: http://localhost:8080/axis2/services/Version?param0="hi" 回應的是HTTP500 內部伺服錯誤

不是吧,正常情况下是可以得到回应的啊。


我用 .Net WebServiceStudio 2.0 的工具來測試是正常,
但我比較好奇的是, 可以使用原作者 所提的方式,在IE的輸入網址來Resquest
,真的可以嗎??
  • 大小: 47.1 KB
0 请登录后投票
   发表时间:2008-11-04  
难道说还有其他形式吗
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics