axis是Apache的一个Web Service的发布平台,它提供了两种web service 的发布方式:
1、即时发布JWS:
1、编写普通的无包结构的java文件,主要是类--方法;
2、修改编写好的java文件的后缀名为jws;
3、发布web service服务,这个主要是将编写好的jws文件放到axis项目平台中,并根据放入的文件目录来确定服务访问的地址;
4、编写客户端来对发布的服务进行测试。
下面是客户端代码的编写:
<span style="white-space:pre"> </span>String url = "";
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(url);
call.setOperation("test");
String result = (String) call.invoke(new Object[]{});
注意:这里的话,即时发布我们必须要有发布java的源代码,并且不能有包结构,那么当有包结构的时候,这个时候,我们就要使用axis平台为我们提供的第二种发布方式--定制发布。
2、定制发布WSDD
定制发布要有需要发布服务的class文件或者jar文件,在发布的时候我们需要保留包的文件目录结构。
实现的步骤:
1、编写带有包结构的java代码(普通:方法的编写);
2、生成编写好java类的class文件或者jar文件;
3、将编译好的结果(包含包层次)拷贝到axis项目下的axis\web-inf\classes下;
4、使用命令在axis服务平台上注册服务(声明服务的方法)
Axis\web-inf\, 要在axis项目的这个文件下创建一个wsdd定制服务的配置文件,默认这个文件是没有的。
1、编写一个当前的项目配置文件server-config.wsdd
1、编写一个个人*.wsdd文件,描述一个web服务
<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="urn:cominfo" provider="java:RPC">
<parameter name="className" value="指明需要发布的类的绝对位置"/>
<parameter name="allowedMethods" value="方法名(*)" />
</service>
</deployment>
2、在Axis\web-inf\下面执行命令:这个是axis平台提供的生成配置文件命令,其实也就是使用到了java执行命令
java org.apache.axis.client.AdminClient *.wsdd ---使用这个我们是自动的生成wsdd文件,当然我们也可以自己来写这个文件;
5、文件的结构:
AXIS
web-inf
-------server-config.wsdd ---这个是定制发布服务的配置文件的位置
classes
-----这里放完整包路径的服务类的class文件或者jar包
6、修改server-config.wsdd文件的配置
在这个配置文件中首先是全局配置<globalConfiguration></globalConfiguration>
还有<handler>过滤器
要发布服务配置<service>等
7、取消一个服务:
1、编写取消的*.wsdd
<undeployment name="test" xmlns="http://xml.apache.org/axis/wsdd/">
<service name="要取消的服务名"/>
</undeployment>
2、执行命令
java org.apache.axis.client.AdminClient 取消.wsdd 执行这个命令来取消服务
8、Web Service Object的生存范围
<parameter name="scope" value="request/session/application"/>
REQUEST :Axis为每一个SOAP的请求产生服务对象--针对请求的
Session : 为每一个调用webService的客户端产生服务对象----针对会话,这个是针对客户端来创建服务对象的。
Application :这个是在服务器内存中直接new一个服务对象,这个是全局的服务对象。在服务器的内存中只有一个服务对象。