使用工具自动生成代码,虽然比较快捷,但是产生的代码一大堆,一般人很难看懂里面的原理。而且根本不需要那么多东西在里面。只需要很简单的一个Service类,然后配置一下server-config.xml文件就可以了。
后面将根据一个例子简单说明一下过程。
- 1.编写WS服务接口,实现类,并根据需要编写作为参数的类。
服务接口:










服务实现类:





















































使用到的参数类QDIIStockPoolDetail:






























- 2.编写server-config.wsdd文件
<? 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 ="sendMultiRefs" value ="true" />
< parameter name ="disablePrettyXML" value ="true" />
< parameter name ="dotNetSoapEncFix" value ="true" />
< parameter name ="enableNamespacePrefixOptimization" value ="false" />
< parameter name ="sendXMLDeclaration" value ="true" />
< parameter name ="sendXsiTypes" value ="true" />
</ globalConfiguration >
< handler name ="LocalResponder" type ="java:org.apache.axis.transport.local.LocalResponder" />
< transport name ="http" >
< requestFlow >
< handler type ="java:org.apache.axis.handlers.http.URLMapper" />
< handler type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
</ requestFlow >
< parameter name ="qs:list" value ="org.apache.axis.transport.http.QSListHandler" />
< parameter name ="qs:wsdl" value ="org.apache.axis.transport.http.QSWSDLHandler" />
< parameter name ="qs.method" value ="org.apache.axis.transport.http.QSMethodHandler" />
</ transport >
< transport name ="local" >
< responseFlow >
< handler type ="LocalResponder" />
</ responseFlow >
</ transport >
< service name ="QDIIWebService" provider ="java:RPC" >
< parameter name ="className" value ="com.sinitek.busin.qdii.webservice.QDIIWebServiceImpl" />
< parameter name ="allowedMethods" value ="*" />
< parameter name ="wsdlServiceElement" value ="QDIIWebService" />
< parameter name ="wsdlTargetNamespace" value ="urn:QDIIWebService" />
< beanMapping
languageSpecificType ="java:com.sinitek.busin.qdii.webservice.QDIIStockPoolDetail"
qname ="ns1:QDIIStockPoolDetail"
xmlns:ns1 ="urn:QDIIWebService" />
</ service >
</ deployment >
- className:对应服务实现类
- allowedMethods:*表示允许服务类的所有方法暴露给客户端
- wsdlServiceElement:对应客户端看到的服务类名--比如EXCEL中用Web Service References引入WebService后看到的服务类名称
- wsdlServicePort:
- wsdlPortType:
- wsdlTargetNamespace:对应用户的命名空间
- scope:比如Session
对于自己定义的参数类,需要序列化:比如上面的beanMapping:
- languageSpecificType:参数类的全路径
- qname:xml 命名空间:类名
- xmlns:定义xml的命名空间
下面还有几个序列化的例子:



































- 3.以上文件准备好以后,启动web服务器。通过网址http://localhost:port/services查看发布的web服务。
- 4.访问web service
- 4.1使用vb访问:通过web service references找到服务
- 4.2使用java访问:如上一篇所讲,通过wsdl文件自动生成然后使用。