WEBSERVICE客户端

Axis

  axis全称Apache EXtensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器。

  支持WSDL。

  提供转化WSDL为Java类的工具。

  提供例子程序。

  提供TCP/IP数据包监视工具。

  

  Axis是第三代Apache SOAP,从2000年起,SOAP v2开发小组开始讨论如何让Axis更加灵活、可配置,以及能够处理SOAP和来自W3C的各种XML标准。通过不断地讨论和代码编写,Axis目前取得了如下成果:

  速度提高。 Axis通过基于事件的SAX对XML文档进行处理,从而在速度和效率上比Apache SOAP有所提高。

  灵活性提高。

  稳定性提高。

  提供面向组件的部署。

  提供一个简洁的传输抽象框架。其核心引擎完全于传输方式独立。从而使基于何种协议传输的选择更加灵活。

  支持WSDL。包括导出WSDL和客户代理生成等。

  在目前发行1.1版本中有什么东西?

  SOAP1.1/1.2引擎。

  灵活的配置和部署系统。

  支持及时自动生成SOAP服务(JWS)。

  支持所有的基本数据类型,为自定义串行操作提供类型映射系统。

  JavaBean的自动串行操作,包括将自定义属性类型映射到XML的属性和元素。

  RPC和基于消息的SOAP服务提供者。

  从部署好的服务自动生成WSDL。

  WSDL2Java工具可以从WSDL描述文件中产生相应的客户和服务器端SOAP操作框架。

  初步提供安全扩展,能够与Servlet2.2安全集成。

  通过HTTP Cookie和与传输无关的SOAP头信息提供会话跟踪。

  初步支持带附件的SOAP消息。

  在EJB方面提供把EJB作为Web服务的访问途经。

  基于Servlet的HTTP传输。

  基于JMS的传输。

  独立的服务器(但需要HTTP 服务器和Servlet容器支持)。

  提供客户端、服务器端相关应用程序的样例。

 

  Axis的运行需要如下组件包

  axis.jar

  jaxrpc.jar

  saaj.jar

  commons-logging.jar

  commons-discovery.jar

  wsdl4j.jar

  符合JAXP-1.1的XML处理器。

 

   http://ws.apache.org/axis/ 官方站点

 

 

 1      try {
 2              String url = http://localhost:8080/webserviceDemo/services;
 3              Service service =new Service();
 4              Call call = (Call) service.createCall();
 5              call.setTargetEndpointAddress(new java.net.URL(url));
 6              //调用的方法名
 7              call.setOperationName("test");
 8              //方法中的参数 (这里可以指定参数类型,也可以使用匿名参数)
 9              //call.addParameter("arg0 ", XMLType.XSD_STRING , ParameterMode.IN);
10             //call.addParameter("arg1 ", XMLType.XSD_STRING , ParameterMode.IN);
11            String backStr = (String)call.invoke(new Object[]{"1","1"}); //匿名参数
12             System.out.println("方法返回值:"+backStr);
13           } catch (MalformedURLException e) {
14               e.printStackTrace();
15               //System.out.println("new java.net.URL(url)错误!");
16           }catch (RemoteException e) {
17               e.printStackTrace();
18               //System.out.println("远程错误!");
19           }catch (ServiceException e) {
20               e.printStackTrace();
21              //System.out.println("Service 获取 Call对象失败!");
22          }

 

posted @ 2011-11-16 11:12  飝兒  阅读(1696)  评论(0编辑  收藏  举报