axis发布webservice
首先下载必须的jar包 分别是:axis.jar??? axis-ant.jar ? commons-discovery-0.2.jar ? ?commons-logging-1.0.4.jar ? wsdl4j-1.5.1.jar ?wsdl4j-1.6.2.jar 下载完jar包后则在web.xml中配置servlet拦截器: <servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/djk/*</url-pattern> </servlet-mapping> 配置这个拦截器的目的是请求走给axis处理 然后新建一个xml文件放在和web.xml同级目录 名字写成server-config.wsdd 内容如下: <!-- Use this file to deploy some handlers/chains and services --> <!-- Two ways to do this: --> <!-- java org.apache.axis.client.AdminClient deploy.wsdd --> <!-- after the axis server is running --> <!-- or --> <!-- java org.apache.axis.utils.Admin client|server deploy.wsdd --> <!-- from the same directory that the Axis engine runs --> <ns1:deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java" xmlns:ns1="http://xml.apache.org/axis/wsdd/"> <ns1:globalConfiguration> <ns1:parameter name="sendMultiRefs" value="true" /> <ns1:parameter name="disablePrettyXML" value="true" /> <ns1:parameter name="adminPassword" value="admin" /> <ns1:parameter name="dotNetSoapEncFix" value="true" /> <ns1:parameter name="enableNamespacePrefixOptimization" value="false" /> <ns1:parameter name="sendXMLDeclaration" value="true" /> <ns1:parameter name="sendXsiTypes" value="true" /> <ns1:parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl" /> <ns1:requestFlow> <ns1:handler type="java:org.apache.axis.handlers.JWSHandler"> <ns1:parameter name="scope" value="session" /> </ns1:handler> <ns1:handler type="java:org.apache.axis.handlers.JWSHandler"> <ns1:parameter name="scope" value="request" /> <ns1:parameter name="extension" value=".jwr" /> </ns1:handler> </ns1:requestFlow> </ns1:globalConfiguration> <ns1:handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /> <ns1:handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" /> <ns1:handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /> <!-- Services from BisServiceService WSDL service --> <ns1:service name="DjkWebService" provider="java:RPC" style="rpc" use="encoded"> <ns1:parameter name="wsdlTargetNamespace" value="http://unifBoss.iptv.nyl.com" /> <ns1:parameter name="wsdlServiceElement" value="DjkServiceService" /> <ns1:parameter name="schemaUnqualified" value="http://unifBoss.iptv.nyl.com,http://bean.unifBoss.iptv.nyl.com" /> <ns1:parameter name="wsdlServicePort" value="DjkWebService"/> <ns1:parameter name="className" value="com.djk.service.impl.DjkServiceImpl"/> <ns1:parameter name="wsdlPortType" value="DjkService" /> <ns1:parameter name="typeMappingVersion" value="1.2" /> <ns1:operation name="createUser" qname="operNS:createUser" xmlns:operNS="http://unifBoss.iptv.nyl.com" returnQName="createUserReturn" returnType="rtns:ResultBean" xmlns:rtns="http://bean.unifBoss.iptv.nyl.com" soapAction="" > <ns1:parameter qname="custBean" type="tns:CustBean" xmlns:tns="http://bean.unifBoss.iptv.nyl.com" /> <ns1:parameter qname="sequenceID" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema" /> </ns1:operation> <ns1:parameter name="allowedMethods" value="createUser" /> <typeMapping xmlns:ns="http://bean.unifBoss.iptv.nyl.com" qname="ns:ResultBean" type="java:com.djk.service.bean.ResultBean" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping xmlns:ns="http://bean.unifBoss.iptv.nyl.com" qname="ns:CustBean" type="java:com.djk.service.bean.CustBean" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> </ns1:service> <ns1:transport name="http"> <ns1:requestFlow> <ns1:handler type="URLMapper" /> <ns1:handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /> </ns1:requestFlow> <ns1:parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler" /> <ns1:parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" /> <ns1:parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler" /> <ns1:parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler" /> <ns1:parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler" /> <ns1:parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler" /> </ns1:transport> <ns1:transport name="local"> <ns1:responseFlow> <ns1:handler type="LocalResponder" /> </ns1:responseFlow> </ns1:transport> </ns1:deployment> ??? <ns1:service name="DjkWebService" provider="java:RPC" style="rpc" use="encoded">表示这个webservice的服务名称是DjkWebService请求这个webservice的时候可以写成www.xx.xxx.xxx.xx:8080/xxx/djk/DjkWebService
??? <ns1:operation name="createUser" qname="operNS:createUser" xmlns:operNS="http://unifBoss.iptv.nyl.com" returnQName="createUserReturn" returnType="rtns:ResultBean" xmlns:rtns="http://bean.unifBoss.iptv.nyl.com" soapAction="" > operation name="createUser"对应接口中的方法? 。returnType="rtns:ResultBean"对应方法的返回值 ????? <ns1:parameter name="allowedMethods" value="createUser" />表示createUser这个方法发布 ??? <typeMapping 表示返回bean对应的java类的路径 ????? <typeMapping 表示参数CustBean对应的java类的路径 这样webservice的一个xml文件写完 接着写java类和接口 import com.djk.service.DjkService; import com.djk.service.bean.CustBean; import com.djk.service.bean.ResultBean; public class DjkServiceImpl implements DjkService { public ResultBean createUser(CustBean custBean,String sequenceID) { System.out.println(custBean.getId()); System.out.println(custBean.getName()); ResultBean resultBean= new ResultBean(); resultBean.setReturnCode("0"); resultBean.setReturnMessage("ok"); return resultBean; } } 这个service对应在xml文件中配置过 里面的方法也配置过 接着看2个实体类: package com.djk.service.bean; import java.io.Serializable; import org.apache.axis.description.TypeDesc; /** * 返回数据bean * @author djk * */ public class ResultBean implements Serializable { /** * */ private static final long serialVersionUID = 434303728726404199L; // Type metadata private static TypeDesc typeDesc = new TypeDesc( ResultBean.class,true); /** * 返回码 */ private String returnCode; /** * 返回信息 */ private String returnMessage; static { typeDesc.setXmlType(new javax.xml.namespace.QName("DjkWebService","resultBean")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("returnCode"); elemField.setXmlName(new javax.xml.namespace.QName("","returnCode")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string")); elemField.setMinOccurs(0); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("returnMessage"); elemField.setXmlName(new javax.xml.namespace.QName("","returnMessage")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string")); elemField.setMinOccurs(0); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); } public String getReturnCode() { return returnCode; } public void setReturnCode(String returnCode) { this.returnCode = returnCode; } public String getReturnMessage() { return returnMessage; } public void setReturnMessage(String returnMessage) { this.returnMessage = returnMessage; } } package com.djk.service.bean; import org.apache.axis.description.TypeDesc; /** * 用户类 * @author djk * */ public class CustBean { /** * 编号 */ private String id; /** * 名称 */ private String name; private static TypeDesc typeDesc = new TypeDesc( CustBean.class,true); static { typeDesc.setXmlType(new javax.xml.namespace.QName("DjkWebService","custBean")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("id"); elemField.setXmlName(new javax.xml.namespace.QName("","id")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string")); elemField.setMinOccurs(0); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("name"); elemField.setXmlName(new javax.xml.namespace.QName("","name")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string")); elemField.setMinOccurs(0); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 这样一个webservice工程就结束了 对应的wsdl文件是: <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:unif="http://unifBoss.iptv.nyl.com"> <soapenv:Header/> <soapenv:Body> <unif:createUser soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <custBean xsi:type="bean:CustBean" xmlns:bean="http://bean.unifBoss.iptv.nyl.com"> <id xsi:type="xsd:string">1</id> <name xsi:type="xsd:string">djk</name> </custBean> <sequenceID xsi:type="xsd:string">123131</sequenceID> </unif:createUser> </soapenv:Body> </soapenv:Envelope>可以使用soapui进行测试 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |