首先需要了解一下什么是WebService,WebService并不是一个软件,而是一个规范。这个规范与jsp,Servlet, EJB规范类似。在实际应用中会使用很多WebService的具体实现,Axis1.x就是其中之一。WebService规范使用了SOAP(Simple Object Access protol)协议,对于一般的开饭人员来说,并不需要了解SAOP协议。SOAP消息的内容是标准的XML格式,SOAP消息一般式通过HTTP协议进行传输的,但也可以通过其他的协议,如SMTP协议。
Axis1.x由Apache组织负责开发和维护。Axis1.x是第二代的WebService引擎,第一代是Apache SOAP,第二代是Axis1.x,第三代就是Axis2,Axis2采用了性能更为优越的XML解析技术,采用了面向组建的架构设计,从而具有更好的灵活性和可扩展性,并支持异步调用等高级特性
当客户在浏览器中输入如下URL会显示这个WebService的WSDL:
http://localhost:8099/axis2/services/Version?wsdl 这个WebService生成wsdl文档,这其实就是SOAP协议所描述的
客户端在使用WebService时需要通过上面这个URL来获得WSDL的内容,并使用WSDL来生成相应的客户端代理类(也就是我们常说的stub类)。Stub类可以隐藏访问WebService细节部分,使调用WebService服务器方法和调用本地代理类Stubs的方法一样(实际上客户调用本地代理类Stubs时会远webService服务器端上的相应被代理类上的方法)
第一种方法:
Axis支持三种WebService 的部署和开发,分别为:
1、Dynamic Invocation Interface(DII)方式
2、Dynamic Proxy方式
3、Stubs方式
Stubs方式与设计模式中的“远程代理”非常类型,建立学axis的朋友可以学学设计模式中的代理模式(远程代理)
在使用Stubs方式时,你可能会用到WSDL2Java.bat生成客户端代理类,WSDL2Java.bat内容如下
set Axis_Lib=./lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:\workspace\doradospace\ESS_DEV\src
set Package=com.aegon_cnooc.ess.WebService.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package%
http://vm- shaswt93/WSP/services/allEntrance?wsdl(把这个地址改成服务器上的地址, 如果用的是本地服务的话,可以改成http://localhost:8080/项目名/services/allEntrance?wsdl, 其中allEntrance为ServiceNamespace )
pause;
- 执行WSDL2Java.bat文件,生成代理类
- 使用代理来测试如下
AllEntranceLocator allEntranceLocator = new AllEntranceLocator();
AllEntranceHttpBindingStub allEntrance = (AllEntranceHttpBindingStub)allEntranceLocator.getallEntranceHttpPort();
System.out.println(allEntranceLocator.getallEntranceHttpPortAddress());
System.out.println(allEntrance.execute(requestXML));//requestXML是xml报文
第二种方法:是使用axis1.4中提供的类
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.junit.BeforeClass;
import org.junit.Test;
public class HelloServerTest {
private static String serviceName = null;
private static String serviceUrl = null;
@BeforeClass
public static void beforeClass(){
//设置服务名
serviceName = "HelloServer";
/**
1.设置服务URL
2.如果是本地测试的话serviceUrl后面的"?wsdl" 可以保留,但是连WSP上测试"?wsdl"必须省略(实际上连WS那边生成的代理类是没有"?wsdl"的)
3.serviceUrl = "http://localhost:8099/axis/services/"+serviceName+"?wsdl";
*/
serviceUrl = "http://localhost:8099/axis/services/"+serviceName;//这种是通用的
}
@Test
public void testHelloServer() throws Exception{
/**
* 创建调用对象
*/
Service service = new Service();
Call call = (Call)service.createCall();//javax.xml.rpc.Call
//设置URL
call.setTargetEndpointAddress(serviceUrl);
/**
* 设置调用WebService上的 远程方法sayHello
*/
call.setOperationName("sayHello");
/**
* 1.执行远程调用,同时获得返回值
* 2.new Object[]{"gaoweigang"}给sayHello方法传参String
*/
String parameterName = "gaoweigang";
String name = (String)call.invoke(new Object[]{parameterName});
System.out.println(name);
}
}
分享到:
相关推荐
使用cxf wsdl2java生成webservice客户端命令
soapui生成webservice客户端代码,比较详细的讲解了配置,以及生成客户端代码的步骤
webservice客户端生成工具
WebService客户端 WebService客户端 WebService客户端
cxf 开发webservice客户端 代码经过测试
xfire+webService 客户端和服务器端的例子 xfire-distribution-1.2.6.zip 是xfire的包,网上可以下载的,本人已经下载完毕。 另附两个xfire的配制文档,供大家参考。 XFire-WebService.pdf Xfire WebService...
C++通过gSOAP开发WebService客户端
webservice客户端与服务器端的实现demo
cxf生成webservice客户端
Java开发生生WebService客户端代码操作步骤 Java开发生生WebService客户端代码操作步骤 Java开发生生WebService客户端代码操作步骤
webservice 客户端 服务端实例 代码全套 完整 就爱男单实例
webservice客户端简单实例 环境 apache-tomcat-6.0.33 jdk1.6.0_32 windows7
cxf开发webservice客户端和服务器端,详细的cxf使用指令,有用的示例代码及注释。
webservice 客户端自动生成工具,采用批处理脚本(axis1.4的方式)来自动生成客户端java代码,只需要修改一个wsdl的地址,就可以生成代码,谁用谁知道。
这个工程详细的介绍了webService服务客户端如何调用简单和复杂的webService,其中就包括传递的参数是对象类型,返回数据是数组类型,还有最简单的基本类型。压缩包里还配置说明,清晰的说明webService的整个过程,对...
webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用webService在客户端调用...
服务端采用jdk原生态的生成,客户端为了不需要采用命令行生成采用了axis2的document方法,可调用,代码中既有客户端又有服务端,亲测可用
使用axis2生成的webservice客户端经常要用的依赖包,内含14个jar
Java写的WebService客户端,可以发送XML文件,拿来就能用
webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java webservice 客户端 实例 java