axis 部署及获取webService接口
来源:互联网 发布:悟空助手mac电脑版 编辑:程序博客网 时间:2024/06/05 05:16
一、服务端发布webService
1.需要的jar包:activation.jar ,axis.jar ,axis-ant.jar,axis-schema.jar ,commons-discovery-0.2.jar ,
commons-logging-1.0.4.jar ,jaxrpc.jar ,log4j-1.2.8.jar ,mailapi.jar ,saaj.jar ,wsdl4j-1.5.1.jar ,xmlsec-1.3.0.jar
2.web-inf 目录下编辑server-config.wsdd 文件
<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" />
<!-- 附件列表start -->
<arrayMapping languageSpecificType="java:com.webService.webItem.entity.TbAttache[]" qname="ns1:TbAttacheList" xmlns:ns1="com.webService.webItem.entity"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
<service name="getAttacheList" provider="java:RPC">
<parameter name="allowedMethods" value="findAttacheList"/>
<parameter name="className" value="com.webService.webItem.controller.WebAttacheController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TbAttache" qname="ns1:getAttacheList" xmlns:ns1="urn:WebAttacheController"/>
</service>
<!-- 附件列表end -->
<!-- 事项列表start -->
<arrayMapping languageSpecificType="java:com.webService.webItem.entity.TbItemBaseInfo[]" qname="ns1:TbItemBaseInfoList" xmlns:ns1="com.webService.webItem.entity"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
<service name="getItemList" provider="java:RPC">
<parameter name="allowedMethods" value="findItemList"/>
<parameter name="className" value="com.webService.webItem.controller.WebItemController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TbItemBaseInfo" qname="ns1:getItemList" xmlns:ns1="urn:WebItemController"/>
</service>
<!-- 事项列表end -->
<!-- 事项详情start -->
<service name="getItemBaseInfoById" provider="java:RPC">
<parameter name="allowedMethods" value="findItemBaseInfo"/>
<parameter name="className" value="com.webService.webItem.controller.WebItemController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TbItemBaseInfo" qname="ns1:getItemBaseInfoById" xmlns:ns1="urn:WebItemController"/>
</service>
<!-- 事项详情end -->
<!-- 部门列表start -->
<arrayMapping languageSpecificType="java:com.webService.webItem.entity.TsUnit[]" qname="ns1:UnitList" xmlns:ns1="com.webService.webItem.entity"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
<service name="getUnitList" provider="java:RPC">
<parameter name="allowedMethods" value="findUnitList"/>
<parameter name="className" value="com.webService.webItem.controller.WebUnitController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TsUnit" qname="ns1:getUnitList" xmlns:ns1="urn:WebUnitController"/>
</service>
<!-- 部门列表end -->
<!-- 应用类型列表start -->
<arrayMapping languageSpecificType="java:com.webService.webItem.entity.TbClass[]" qname="ns1:ClassList" xmlns:ns1="com.webService.webItem.entity"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"/>
<service name="getClassList" provider="java:RPC">
<parameter name="allowedMethods" value="findClassList" />
<parameter name="className" value="com.webService.webItem.controller.WebClassController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TbClass" qname="ns1:getClassList" xmlns:ns1="urn:WebClassController"/>
</service>
<!-- 应用类型列表end -->
<!-- 部门详情start -->
<service name="getUnitById" provider="java:RPC">
<parameter name="allowedMethods" value="findUnitById"/>
<parameter name="className" value="com.webService.webItem.controller.WebUnitController"/>
<beanMapping languageSpecificType="java:com.webService.webItem.entity.TsUnit" qname="ns1:getUnitById" xmlns:ns1="urn:WebUnitController"/>
</service>
<!-- 部门详情end -->
<transport name="http">
<requestFlow>
<handler type="URLMapper" />
</requestFlow>
</transport>
</deployment>
3.web.xml中添加配置项
<!--webService axis -->
<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>/AxisServlet</url-pattern>
</servlet-mapping>
<!--部署后的url根路径 -->
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
经过上面三步以后应该能够把webService 部署到服务器上去了,(以tomcat为例)部署成功后在浏览器输入http://localhost:8080/项目名称/services 可看到下面的页面
可以看到这个页面是与server-config.wsdd中的配置是一致的点击链接后可进入到方法中如下图:
到这里就说明我们的接口已经发布成功了
二、客户端获取webService 接口
别人已经发不好了的webServices接口如何在自己的程序中取调用呢?
首先,当然要知道别人发布的webServices 的url ,然后就通过客户端自己写的方法来调用咯具体代码示例如下:
import java.util.ArrayList;
import java.util.List;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.ser.BeanDeserializerFactory;
import org.apache.axis.encoding.ser.BeanSerializerFactory;
import org.nsccsz.dapeng.online.bean.TbAttache;
import org.nsccsz.dapeng.online.bean.TbClass;
import org.nsccsz.dapeng.online.bean.TbItemBaseInfo;
import org.nsccsz.dapeng.online.bean.TsUnit;
/**
*
* @param urlName
* @param itemName 事项名称
* @param classType 服务类型
* @param classId 事项类型
* @param unitName 单位id
* @param spbm
* @return
* @throws Exception
*/
public static List findItemList(String urlName,String itemName,String classType,String ztmsIndex,String unitId)
throws Exception {
TbItemBaseInfo tbItemBaseInfo[];
String endpoint = urlName; // 服务所在位置
Service service = new Service();
Call call = (Call) service.createCall();
// 注册JavaBean,注意和server-config.wsdd中的配置代码比较
QName qn = new QName("urn:WebItemController", "getItemList");
call.registerTypeMapping(TbItemBaseInfo.class, qn,
new BeanSerializerFactory(TbItemBaseInfo.class, qn),
new BeanDeserializerFactory(TbItemBaseInfo.class, qn));
call.setTargetEndpointAddress(new URL(endpoint));
// 调用的服务器端方法
call.setOperationName(new QName("getItemList", "findItemList"));
call.addParameter("itemName", qn, ParameterMode.IN);
call.addParameter("classType", qn, ParameterMode.IN);
call.addParameter("ztmsIndex", qn, ParameterMode.IN);
call.addParameter("unitId", qn, ParameterMode.IN);
call.setReturnType(qn, TbItemBaseInfo[].class);
tbItemBaseInfo = (TbItemBaseInfo[]) call.invoke(new Object[] { itemName,classType,ztmsIndex,unitId });
List<Object> list=new ArrayList();
if(tbItemBaseInfo.length>0){
for(int i=0;i<tbItemBaseInfo.length;i++){
list.add(tbItemBaseInfo[i]);
}}
return list;
}
/**
* 查询单位列表
* @param urlName
* @return
* @throws Exception
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List<TsUnit> findUnitList(String urlName)
throws Exception {
TsUnit tsUnit[]=null;
String endpoint = urlName; // 服务所在位置
Service service = new Service();
Call call = (Call) service.createCall();
// 注册JavaBean,注意和server-config.wsdd中的配置代码比较
QName qn = new QName("urn:WebUnitController", "getUnitList");
// 注册序列化和反序列化类
call.registerTypeMapping(TsUnit.class, qn,
new BeanSerializerFactory(TsUnit.class, qn),
new BeanDeserializerFactory(TsUnit.class, qn));
call.setTargetEndpointAddress(new URL(endpoint));
// 调用的服务器端方法
call.setOperationName(new QName("getUnitList", "findUnitList"));
call.setReturnType(qn,TsUnit[].class);
tsUnit= (TsUnit[]) call.invoke(new Object[] {});
List<TsUnit> list=new ArrayList();
if(tsUnit.length>0){
for(int i=0;i<tsUnit.length;i++){
list.add(tsUnit[i]);
}}
return list;
}
/**
* 根据单位id 查询单位信息
* @param urlName
* @param unitId
* @return
* @throws Exception
*/
public static TsUnit findUnitById(String urlName,String unitId)
throws Exception {
TsUnit tsUnit=null;
String endpoint = urlName; // 服务所在位置
Service service = new Service();
Call call = (Call) service.createCall();
// 注册JavaBean,注意和server-config.wsdd中的配置代码比较
QName qn = new QName("urn:WebUnitController", "getUnitById");
call.registerTypeMapping(TsUnit.class, qn,
new BeanSerializerFactory(TsUnit.class, qn),
new BeanDeserializerFactory(TsUnit.class, qn));
call.setTargetEndpointAddress(new URL(endpoint));
// 调用的服务器端方法
call.setOperationName(new QName("getUnitById", "findUnitById"));
call.addParameter("arg1", qn, ParameterMode.IN);
call.setReturnType(qn,TsUnit.class);
tsUnit= (TsUnit) call.invoke(new Object[] {unitId});
return tsUnit;
}
第一个方法findItemList有多个参数而且返回的是个对象集合
第二个方法findUnitList没有参数 返回的也是个对象集合
第三个方法findUnitById 没有参数 返回的是单个对象
注意了:这个地方在server-config.wsdd配置的时候要是怎么配的对象的集合在这里只能以数组的形式配置
而urlName 可以用配置文件的方式来处理 不要硬编码的 这里urlName的值为 http://localhost://projectName/services/getItemBaseInfoById?wsdl
好了 大概这个样子
- axis 部署及获取webService接口
- 使用axis部署webservice
- Apache Axis部署 WebService
- Axis 部署开发WebService
- axis调用webservice接口
- axis调用webservice接口
- Webservice接口之CXF框架及Axis框架
- 在Axis上部署 WebService
- 最原始webservice 部署 axis
- tomcat下部署webservice axis
- Axis 开发 java WebService 接口
- Axis远程调用WebService接口
- 利用axis请求webservice接口
- 利用axis调用webservice接口
- 使用axis调用webservice接口
- CMDBuild安装及webservice接口的获取
- 基于Axis的WebService测试,开发,部署
- weblogic 部署 AXIS WEBSERVICE 环境问题解决方案.
- 从装机到hadoop完全分布式
- Sql Server 生成32位uuid
- C++回顾之运算符重载
- JVM调优总结
- JBPM4环境搭建
- axis 部署及获取webService接口
- Cron Expressions——Cron 表达式
- 关于元素定位的问题
- django和mezzanine搭建博客小站1
- ubuntu下的openfire安装、配置、运行
- .net cms系统推荐
- ubuntu 无线联网
- 非常好用的大数类模板 Bignum
- 组织隶属关系的用途示例