<%@ page contentType="text/html; charset=gb2312"%> 用Axis开发基于Java的Web服务
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
用Axis开发基于Java的Web服务
     发布者:o0 发布时间:2007-03-30
 服务的访问

  GET方式的服务访问

  一般的SOAP消息都是采用POST方式实现传递,但也可以通过GET方式来访问。比如以下给出的一个服务——“HelloWorld”,其源码如下:

文件HelloWorld.jws

/**

* @author 飞鹰

*/

public class HelloWorld

{

public String helloWorld()

{

//在服务器端打印输出

System.out.println( "Hello World!" );

//返回相应字符串

return "Hello World!";

}//helloWorld()

}/* HelloWorld */

  这个服务给出一个名位“helloWorld”的无入口参数的操作,返回一个内容为“Hello World!的字符串”,同时在服务器端打印“Hello World!”,将该文件放到“……\webapps\axis”目录下,即可通过GET方法直接访问该服务,访问的地址为http://localhost:8080/axis/HelloWorld.jws?method=helloWorld,可以看到返回的SOAP信封消息,同时服务器端给出了相应的显示信息“Hello World!”这表明HelloWorld服务被成功访问了。如下图所示:



  客户端服务访问编程

  Axis提供了一套API来实现SOAP,从http://localhost:8080/axis/docs/apiDocs/index.html可以看到Axis的API文档。

  其中,org.apache.axis.client.Call和org.apache.axis.client.Service是两个比较常用的类,一般的客户端程序欲访问一个Web Service时,都要生成一个客户端的Service对象和Call对象,在访问服务之前,首先要对Call对象设置相应的参数,包括服务的位置、操作名、入口参数、返回值类型等,最后调用Call对象的invoke方法访问服务。

  以下给出了一个客户端访问Web服务的例程——AXISTest.java:

  文件AXISTest.java

package axisexercise;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import javax.xml.rpc.ParameterMode;

/**

* @author 飞鹰

*/

public class AXISTest

{

public static void main( String[] args ) throws Exception

{

Service service = new Service();

Call call = ( Call ) service.createCall();

//////////访问即时发布的Distance服务

//设置访问点

call.setTargetEndpointAddress( "http://localhost:8080/axis/Distance.jws" );

//设置操作名

call.setOperationName( "convertMile2Kilometre" );

//设置入口参数

call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN );

call.setReturnType( XMLType.XSD_DOUBLE );

Double d1 = new Double( 190 );

//调用服务

System.out.println( d1 + " 英里相当于 " +

call.invoke( new Object[] {d1} ) + " 公里!" );

//////////访问定制发布的Capacity服务

call = ( Call ) service.createCall();

//设置访问点

call.setTargetEndpointAddress( "http://localhost:8080/axis/services/Capacity" );

//设置操作名

call.setOperationName( "convertGallon2Litre" );

//设置入口参数

call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN );

call.setReturnType( XMLType.XSD_DOUBLE );

d1 = new Double( 10.00 );

//调用服务

System.out.println( d1 + " 加仑相当于 " +

call.invoke( new Object[] {d1} ) + " 升!" );

} //main()

}/* AXISTest */

  编译运行后运行可以看到以下的结果:

  190.0英里相当于305.71公里!

  10.0加仑相当于45.46升!
 
  注意程序在访问即时发布的Distance服务和定制发布的Capacity服务时的不同,前者的服务访问点地址为http://localhost:8080/axis/HelloWorld.jws,而后者的则为http://localhost:8080/axis/services/Capacity。

  总结

  Web Services是未来网络应用的发展方向,SOAP和WSDL是Web Services的核心协议,Axis给出了一个很好的SOAP实现,它使得开发Web Services应用变得轻松而有趣。

 

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
Java RPC通信机制之SOAP
连接池
js宝典
JS定时刷新
JS验证上传文件类型
学习心得 - 自定义标签(下)
 
最近评论:
        
你曾悄悄的来过!
wow gold,wow gold,wow gold,ffxi gil max(1322)
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(4528)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(7044)
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号