axis1.4 webservices 开发

来源:互联网 发布:java二次过滤 编辑:程序博客网 时间:2024/04/28 04:24

1、由于项目要用到axis1.4搭建服务端,而现在都流行axis2,相比是较老的技术了。这几天刚好有时间看看,入门入门。

2、由于通信双方都是基于soap协议,而soap是基于http传输的。所以先研究研究什么是soap协议,在网上找了很多文档,写的有点乱,选了一个写得比较好。

WebService_SOAP

下载地址:http://download.csdn.net/detail/cuker919/5308642

3、看了soap后,再了解了解wsdl语言。在网上找了很多文档,写的有点乱,选了一个写得比较好。

Web_Service描述语言_WSDL_详解.pdf

http://download.csdn.net/detail/cuker919/5308649


4、前面打好基础之后,接下来就是研究研究axis1.4怎么用了,同样的在网上找找高手写的文档。

axis_WebService_-_开发指南.docx

http://download.csdn.net/detail/cuker919/5308603


5、总结上面的学习,搭建axis1.4服务端

  这事我搭建好运行正常的项目:http://download.csdn.net/detail/cuker919/5308625

 第一步:由于要生成server-config.wsdd,所以要发布自己搭建的项目到tomcat里面部署,再用命令才能生成。

     这里就不能简简单单的搭建java工程了,因为要打包,ant感觉好久不用就忘了,maven好用。

     所以就用maven搭建工程,好发布。

 第二步:搭建好工程后,按axis_WebService_-_开发指南.docx 里面的(二、用wsdd(Web Services Deployment Descriptor)方式发布WebService;编写相应的java类,然后编写对应的deploy.wsdd,请看项目里面的该文件。


 第三步:生成相应的server-config.wsdd

     写完配置后,就需要用axis提供的AdminClient工具类帮我们发布WebService,直到生成server-config.wsdd。-- 用maven打包,然后发布到tomcat/webapp里面,然后在CMD下面输入cd到tomcat/webapp/WEB-INF              

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/myaxis1/services/AdminService deploy.wsdd


 第四步:在WebBrowser的地址栏输入:

http://localhost:8080/myaxis1/servlet/AxisServlet

你就可以看到如下效果:

And now... Some Services

  • HelloWorldWSDD (wsdl)
    • getName
    • getAge
  • AdminService (wsdl)
    • AdminService
  • Version (wsdl)
    • getVersion

刚才在deploy.wsdd中指定的WebService就在上面出现了,还有暴露出来的方法。点击wsdl就可以看到刚才一样熟悉的wsdl的xml文档。


  第五步:编写复杂类型对象

     按上面的第二步到第四步再走一遍,然后生成server-config.wsdd,用对比工具对比发现,与第一次生成的wsdd文件基本一样,就service多发布一个,然后把这段copy到第一次的server-config.wsdd文件里面即可。

 <service name="ManagerUser" provider="java:RPC">
      <parameter name="allowedMethods" value="*"/>
      <parameter name="scope" value="request"/>
      <parameter name="className" value="com.cuker.service.ManagerUser"/>
      <beanMapping languageSpecificType="java:com.cuker.entity.User" qname="ns1:User" xmlns:ns1="urn:User"/>
 </service>

  第六步:根据已经获取的WSDL文件,使用下面的工具可以生成服务端和客户端,还省了编码,

工具下载:http://download.csdn.net/detail/cuker919/5349738

把里面的路径改成自己机子上相对的路径即可。

  生成客户端后,直接放在自己的工程里面,直接就可以调用服务端了:如下代码

public class Test {

    public static void main(String args[]){
        String url = "http://localhost:8080/myaxis1/services/***Service?wsdl";
        URL serviceUrl;
        try {
            serviceUrl = new URL(url);
            ***ServiceSoapBindingStub    binding = (***ServiceSoapBindingStub) new ***SServiceImplServiceLocator().get***Service(serviceUrl);
        
            UserBean user = new UserBean();
            user.setAreacode("9999");
            user.setCharging("");
            user.setPassword("123456");
            user.setTeam_id(-1);
            user.setUserid("ytest");
            user.setUsertype(1);
            
            OrderBean orderbean = new OrderBean();
            orderbean.setProductid("001");
            OrderBean[] order =new OrderBean[]{orderbean};
            
            
            ResultBean bean = binding.createUser(user, order, "20130408164312");
            
            System.out.println("返回码:" + bean.getReturnCode()+" 返回消息:"+bean.getReturnMessage());
            
        } catch (Exception e) {
            e.printStackTrace();
        }      
    }
}
0 0