用Axis开发基于Java的Web服务
来源:互联网 发布:linux 启动模式 编辑:程序博客网 时间:2024/04/28 07:46
Java高级:用Axis开发基于Java的Web服务
发布时间:2007.11.22 05:00 来源:赛迪网技术社区 作者:baocl
服务的访问
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应用变得轻松而有趣。
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用Axis开发基于Java的Web服务
- 用axis开发Web服务
- [转贴]用Axis和SOAP开发基于JAX-RPC的Web服务
- 用Axis和SOAP开发基于JAX-RPC的Web服务(2)
- 基于weblogic+axis的web services开发
- 用Apache axis开发Web服务
- 用Apache axis开发Web服务
- 使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- [转]使用SOAP开发java web服务--Axis开发方案
- 使用SOAP开发java web服务--Axis开发方案
- HTTP协议头详解
- APPLET AND XSS THE MAIL
- Converse 5
- xml文件的建立、添加、查询
- 51单片机IO口模拟串口通讯C源程
- 用Axis开发基于Java的Web服务
- 用VB生成DLL封装ASP代码一个例子:连接access数据库等
- 用vmware workstation 6.0 安装vmware-tools
- VB.NET从VS2003升到VS2005后报表无法使用的解决方法 - 探寻者飞 - 博客园
- NetBeans 6.0终于正式发布了
- 程序员是真正的主角——SD2.0大会有感
- c#中字符串编码方式的转换,附带程序uft8到gb2312的互换
- Java对象创建和初始化过程,处理字符串的机制
- MappedByteBuffer的umap() JAVA Bug!