一个wsdl文档的根元素是definitions元素,
wsdl文档包含7个重要的元素:types,import,message,portType,binding,service,operations。
2.WSDL的声明必须定义成使用:UTF-8 或者UTF-16 编码。<? xml version="1.0" encoding="UTF-8"?>
废话不多说直接进入主题,需要用到的jar包附件有,有需要的可以下载。下面请看本人亲测的一个小程序。
1.先写一个类,包含需要操作的方法
public class Capacity {
public double convertGallon2Litre(double gallon)
{
return gallon * 4.546;
}
}
2.一定要在/WEB-INF/下创建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">
<handler type="java:org.apache.axis.handlers.http.URLMapper"
name="URLMapper" />
<service name="Capacity" provider="java:RPC">
<parameter name="className" value="samples.capacity.Capacity"/>
<parameter name="allowedMethods" value="*"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>
注:不加handler、transport可能会报异常。
3.在web.xml文件中配置
<!-- WebService -->
<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>/service/*</url-pattern>
</servlet-mapping>
注:<url-pattern>/service/*</url-pattern> 这个就是你要访问的服务地址,可以改写你自己的服务名字
以上代码写好以后,部署到tomcat中,启动服务,访问http://localhost:8080/wsdl/services/Capacity?wsdl即可。
4.以下是测试类。
public static void main(String[] args) throws ServiceException, RemoteException {
//调用定制发布的soap服务
Service service = new Service();
Call call = (Call)service.createCall();
//设置访问点
call.setTargetEndpointAddress("http://localhost:8080/wsdl/services/Capacity");
//设置操作名
call.setOperationName("convertGallon2Litre");
//设置入口参数
call.addParameter("opl", XMLType.XSD_DOUBLE, ParameterMode.IN);
call.setReturnType(XMLType.XSD_DOUBLE);
double dl = new Double(10.00);
System.out.println(dl+"加仑相当于"+call.invoke(new Object[]{dl})+"升");
}