WebService基础学习笔记 - 2.WebService之AXIS定制发布
发布WSDD
1只有class,包含包的结构;
实现步骤:
2将该程序进行编译 –class;
3将编译后的结构;
Axis\WEB-INF\
1编写一个当前的项目配置文件server-config.wsdd;
<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”>
<parametername=”className” value=”指明需要发布的类的绝对位置” />
<parametername=”className” value=”方法名(*)”/>
<service>
</deployment>
2 在Axis\web-inf\下面执行命令:
java org.apache.axis.client.AdminClient *.wsdd : axis.jar中类 –CLAsspATH
3 将编译后的结果(包含包的层次)拷贝到Axis\WEB-INF\classes下;
5 文件的结构
AXIS
WEB-INF
----server-config.wsdd
classes
----包结构的java服务类
7 取消服务:
1编写取消的*wsdd
<undeploymentname=”test” xmlns=http://xml.apache.org/axis/wsdd/
<service name=”要取消的服务名” />
</undeployment>
2执行命令
Javaorg.apache.axis.client.AdminClient 取消.wsdd;
8. Web Service Object的生存的范围
<parametername=”scope” value=”request/session/application” />
request:Axis为每一个SOAP的请求产生服务对象 ----针对于请求;
session:Axis为每一个调用webService的客户端产生服务对象 ---- 针对会话;
application:在服务器的内存中直接new一个服务对象;
以下是练习:
服务端编写:
package com.webservice.wsdd; public class HelloWSDD {
//定制提供web服务的方法 private int requestCount = 0; public String hello(String name){ requestCount++; System.out.println("调用的次数"+requestCount); return "欢迎您:" + name; }
public Float add(Float a,Float b){ return a+b; }
public static void main(String[] args) { new HelloWSDD(); } } |
编译服务端代码:
将服务端的类,编译成class文件,然后连报名一起复制到Axis\WEB-INF\classes目录下;
全部内容如下:
<?xml version="1.0" encoding="UTF-8"?> <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <globalConfiguration> <parameter name="adminPassword" value="admin"/> <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/> <parameter name="sendxsitypes" value="true"/> <parameter name="sendMultiRefs" value="true"/> <parameter name="sendXMLDeclaration" value="true"/> <parameter name="axis.sendMinimizedElements" value="true"/> <requestFlow> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="session"/> </handler> <handler type="java:org.apache.axis.handlers.JWSHandler"> <parameter name="scope" value="request"/> <parameter name="extension" value=".jwr"/> </handler> </requestFlow> </globalConfiguration> <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/> <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/> <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
<service name="HelloWSDD" provider="java:RPC"> <parameter name="className" value="com.webservice.wsdd.HelloWSDD"/> <parameter name="allowedMethods" value="*"/> </service>
<transport name="http"> <requestFlow> <handler type="URLMapper"/> <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/> </requestFlow> </transport> <transport name="local"> <responseFlow> <handler type="LocalResponder"/> </responseFlow> </transport> </deployment> |
客户端调用编写:
package com.client;
import java.rmi.remoteexception; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service;
public class TestClient { public static void main(String[] args) throws ServiceException,remoteexception { String url = "http://localhost:8080/axis/services/HelloWSDD"; /*区别于JWS方式的指定 hptt://localhost:8080/axis/services/HelloWSDD.jws */ Service service = new Service(); Call call = (Call)service.createCall(); call.setTargetEndpointAddress(url); call.setoperationName(new QName(url,"add")); //解析wsdl文件 Float returnValue = (Float) call.invoke(new Object[]{ new Float(3.2), new Float(2.8)}); System.out.println(returnValue); } } |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。