eclipse3.4开发webservice

eclipse自动能把一个类部署为web services,并生成客户机.所以我的做法是:
1,建立一个动态web工程
2,在这个动态web工程创建类和方法,和一般的写法没什么区别
3,用eclipse把类部署为web services,会自动生成wsdl和server-config.wsdd
4,把工程导出为war包,把war包部署到web server中,这样web services就创建并部署好了,很简单.

在ie地址栏里输入wsdl中的那个url,如果能显示出wsdl的内容,部署就ok了
查看部署的所有web services: http://ip:port/动态web工程/servlet/AxisServlet

在第3步中,可以选择web services运行时和服务器,运行时一般有三种,一是apache
axis,二是jax-rpc,三是jax-ws,这三种就是常用的web services实现

对于web services的客户端,开发工具也提供自动生成和部署的功能,但生成的都是stub存根,当web services的接口发生变化,就要重新生成stub客户端,并重新部署,所以一般不使用stub类型的客户端.其实只要几行代码,就可调用web services:

String endpointURL = "...."; //wsdl中的url
Service service = new Service();
Call call = ( Call ) service.createCall();
call.setTargetEndpointAddress( new java.net.URL( endpointURL ) );
call.setOperationName( new QName( "wsdl中的namespace", "要调用的方法名称" ) );
call.addParameter( "入参名称", QName实例, ParameterMode.IN );
call.addParameter( ... ); //加其它参数
call.setReturnClass( Class.forNam( "返回的类名称" ) );
call.setReturnType( new QName( "名字空间", "xml中的类型名称" ), Class.forName( "返回类的名称" ) );
Object[] inputs = ... //入参的值在这里面
call.invoke( inputs )

所以,只要知道wsdl,就能够调用web services

注意:
1,入参和返回参数必须是基本类型或实现Serializable接口
2,如果是自定义的类,除了要实现Serializable接口,客户端调用时(动态,非stub),要做xml类型到java类的映射,如上面的addParameter()方法和setReturnType()方法
3,如要查看请求和响应soap的内容,apache axis中有一个soapmonitor,将它整合到你的web services应用中即可

猜你喜欢

转载自blog.csdn.net/sxbcsdn/article/details/83372462