WebSercvie的接口,返回map方法的标注一个适配器(Adapter)
package com.gosophia.dataViewService.sei;
import java.util.List;
import java.util.Map;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.ws.WebServiceException;
import com.gosophia.commons.Page;
import com.gosophia.commons.SearchCondition;
import com.gosophia.dataViewService.sei.dto.ColumnTitleDTO;
import com.gosophia.dataViewService.sei.dto.MapAdapter;
import com.gosophia.dataViewService.sei.dto.SearchItemDTO;
@WebService(targetNamespace = MetadataWebServiceNameSpace.METADATA_WEBSERVICE_NAMESPACE)
public interface DataViewWebService {
/**
* 按照metaDataTableId 查询检索项信息
*
* @param metadataTableId
* ,不能为空
* @return {数据项页面显示名,数据类型,字段名或 查询Key}
* @throws WebServiceException
*/
@WebResult(name = "findSearchItemsByTableIdResult")
public List<SearchItemDTO> findSearchItemsByTableId(Long metadataTableId)
throws WebServiceException;
/**
* 按照metaDataTableId 查询列表标题
*
* @param metadataTableId
* 元数据表Id,不能为空
* @return 列表标题
* @throws WebServiceException
*/
@WebResult(name = "findTableTitleResult")
public String findTableTitle(Long metadataTableId)
throws WebServiceException;
/**
* 按照metaDataTableId 查询列表各列展示信息 根据fieldDisplayType 字段显示顺序排序
*
* @param metadataTableId
* 元数据表Id,不能为空
* @return 列表各列展示信息
* @throws WebServiceException
*/
@WebResult(name = "findColumnTitlesByTableIdResult")
public List<ColumnTitleDTO> findColumnTitlesByTableId(Long metadataTableId)
throws WebServiceException;
/**
* 全列模糊分页查询
*
* @param metadataTableId
* 表id,不能为空
* @param orderbyStr
* 排序字段实体属性名
* @param orderbyFlg
* 升/降序标记:DESC,降序;ASC,升序
* @param pageSize
* 每页行数
* @param pageNo
* 当前页码
* @param searchCondition
* 查询值
* @return 业务数据及分页信息
* @throws WebServiceException
*/
@WebResult(name = "findDataListSimpleResult")
@XmlJavaTypeAdapter(MapAdapter.class)
public Page<Map<String,String>> findDataListSimple(Long metadataTableId,
String orderbyStr, String orderbyFlg, int pageSize, int pageNo,
String searchCondition) throws WebServiceException;
/**
* 多条件分页查询
*
* @param metadataTableId
* 表id,不能为空
* @param orderbyStr
* 排序字段实体属性名
* @param orderbyFlg
* 升/降序标记:DESC,降序;ASC,升序
* @param pageSize
* 每页行数
* @param pageNo
* 当前页码
* @param searchCondition
* 查询条件对象,可变长数组
* @return 业务数据及分页信息
* @throws WebServiceException
*/
@WebResult(name = "findDataListResult")
@XmlJavaTypeAdapter(MapAdapter.class)
public Page<Map<String, String>> findDataList(Long metadataTableId, String orderbyStr,
String orderbyFlg, int pageSize, int pageNo,
SearchCondition... searchCondition) throws WebServiceException;
}
//适配器的实现
package com.gosophia.dataViewService.sei.dto;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import com.gosophia.commons.Page;
/**
*
* 配置一个拦截器,将查询数据转换成Map格式返回过来
*
* @创建日期 2010-6-4
*
* @版本 V1.0
*/
public class MapAdapter extends
XmlAdapter<MapPair, Page<Map<String, String>>> {
@Override
public MapPair marshal(Page<Map<String, String>> v)
throws Exception {
MapPair page = new MapPair();
ArrayList<MapPair.Entry[]> pageRult = new ArrayList<MapPair.Entry[]>();
for (Map<String, String> map : v.getResult()) {
MapPair.Entry[] object = new MapPair.Entry[map.size()];
int i = 0;
for (Map.Entry<String, String> entry : map.entrySet()) {
MapPair.Entry mapDtoEntry = new MapPair.Entry();
mapDtoEntry.setKey(entry.getKey());
mapDtoEntry.setValue(entry.getValue());
object[i] = mapDtoEntry;
i++;
}
pageRult.add(object);
}
page.setResult(pageRult);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
return page;
}
@Override
public Page<Map<String, String>> unmarshal(MapPair v) throws Exception {
Page<Map<String, String>> page = new Page<Map<String, String>>();
ArrayList<Map<String, String>> lists = new ArrayList<Map<String, String>>();
Map<String, String> map = null;
for (MapPair.Entry[] list : v.getResult()) {
map = new HashMap<String, String>();
for (MapPair.Entry mapEny : list) {
map.put(mapEny.getKey(), String.valueOf(mapEny.getValue()));
}
lists.add(map);
}
page.setResult(lists);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
return page;
}
}
//MapPair对象
package com.gosophia.dataViewService.sei.dto;
import java.io.Serializable;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlType(name = "MapPair")
@XmlAccessorType(XmlAccessType.FIELD)
public class MapPair implements Serializable{
private static final long serialVersionUID = 1L;
private ArrayList<Entry[]> result;
protected int pageNo = 1;
protected int pageSize = 1;
protected long totalCount = -1;
public static class Entry{
private String key;
private String value;
/**
* @return the key
*/
public String getKey() {
return key;
}
/**
* @param key
* the key to set
*/
public void setKey(String key) {
this.key = key;
}
/**
* @return the value
*/
public Object getValue() {
return value;
}
/**
* @param value
* the value to set
*/
public void setValue(Object value) {
this.value = String.valueOf(value);
}
}
/**
* @return the result
*/
public ArrayList<Entry[]> getResult() {
return result;
}
/**
* @param result the result to set
*/
public void setResult(ArrayList<Entry[]> result) {
this.result = result;
}
/**
* @return the pageNo
*/
public int getPageNo() {
return pageNo;
}
/**
* @param pageNo the pageNo to set
*/
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
/**
* @return the pageSize
*/
public int getPageSize() {
return pageSize;
}
/**
* @param pageSize the pageSize to set
*/
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* 取得总记录数, 默认值为-1.
*/
public long getTotalCount() {
return totalCount;
}
/**
* 设置总记录数.
*/
public void setTotalCount(final long totalCount) {
this.totalCount = totalCount;
}
}
分享到:
相关推荐
在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换更加灵活。本文将深入探讨如何在CXF中...
2. **创建服务接口**:定义一个Java接口,该接口包含你想要发布的Web服务操作。这些方法将成为Web服务的端点。 3. **实现服务类**:为定义的服务接口提供具体实现。在实现类中,你可以编写业务逻辑代码。 4. **...
【描述】"cxf写的一个helloworld demo" 指出,此项目的核心是展示如何通过Apache CXF框架实现基础功能。"Hello World"程序通常被用作教学工具,帮助开发者理解新语言或框架的基本工作原理。在这个特定的场景中,我们...
CXF是一个基于Apache的开源WebService框架,提供了丰富的WebService开发功能。 5. Mybatis:在本实验中,我们使用Mybatis来实现数据库操作。Mybatis是一个基于Java的持久层框架,提供了丰富的数据库操作功能。 6. ...
Apache CXF是一个开源的Java框架,用于构建和部署WebServices。CXF不仅支持SOAP,还支持RESTful风格的服务。它提供了丰富的功能,包括WS-*协议栈支持、客户端和服务端的生成工具、多种传输方式(HTTP、JMS等)、以及...
WebService的CXF框架是一个广泛使用的开源项目,用于构建和消费Web服务。它提供了一种简单且强大的方式来实现基于SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)风格的Web服务...
【描述】:本项目旨在展示如何在Java企业级应用(Java EE)中,通过Apache CXF框架创建Web服务,并结合Spring框架进行管理,从而能够灵活地返回不同类型的数据,包括List、自定义Bean对象、纯文本String以及常见的...
CXF是一个流行的开源Java框架,用于构建和消费Web服务。它提供了丰富的功能,包括SOAP、RESTful API支持以及多种协议和标准的实现。在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何...
C#动态调用CXF WEBSERVICE框架共通类。
在Java世界中,Apache CXF是一个强大的Web服务框架,用于构建和消费Web服务。CXF允许开发者通过SOAP、RESTful、XML以及HTTP等方式来创建和使用Web服务。 标题中的“cxf.jar”指的是Apache CXF的核心库文件,它是...
- **项目命名**:首先,在开发环境中创建一个新的Web项目,并将其命名为`cxf_bigdata`。 ##### 2. 目录结构 - 项目的目录结构应该包括以下几个主要部分: - `WEB-INF` - `classes` - 包含POJO类、接口和服务实现...
总的来说,"webservice的cxf框架拦截器demo"是一个很好的实践示例,它展示了如何在CXF中利用拦截器增强Web服务的功能。通过理解并应用这些拦截器,开发者能够更好地控制服务的交互过程,提升系统的可扩展性和灵活性...
【描述】:本压缩包“webservice的cxf框架拦截器demo.rar”提供了一个关于如何在Apache CXF框架下实现Web服务拦截器的实际操作示例。CXF是一个开源的服务框架,它允许开发者创建和部署多种类型的Web服务,包括SOAP和...
CXF框架是Apache组织开发的一款开源服务开发框架,主要用于构建和开发Web服务。它支持SOAP、RESTful等多种服务风格,并且能够处理XML和JSON等多种数据格式。本篇将深入探讨如何在CXF框架中实现WebService,特别是...
在本例中,“webservice天气预报例子cxf实例”指的是使用Apache CXF框架实现的一个天气预报相关的Web服务示例。 Apache CXF是一个开源框架,它为开发和部署Web服务提供了全面的支持。CXF允许开发者通过Java编程模型...
【标题】"mybatis+spring+cxf Webservice框架"是一个集成性的开发框架,它结合了三个主流的技术组件:MyBatis、Spring和Apache CXF,用于构建高效、灵活且易于维护的Web服务。MyBatis是一个优秀的持久层框架,Spring...
Apache CXF是一个开源服务框架,它允许开发者构建和部署Web服务。CXF支持多种协议,如SOAP、RESTful、WS-*等,并且与Spring框架有很好的集成。 1. **服务器端Web服务发布**:CXF允许开发者通过JAX-WS或JAX-RS接口...
2. `xmlbeans-2.6.0.jar`: XMLBeans是一个用于Java的XML处理库,它可以将XML文档映射为Java对象,反之亦然。在CXF中,XMLBeans用于解析和生成XML文档,支持SOAP消息的处理。 3. `bcprov-jdk15on-1.59.jar`: 这是...
做开发时,查了大量资料,发现一比较全面的资料,分享一下!...WebService CXF学习——高级篇(一)(二) 1.整合Spring框架 2.CXF+Spring+Hibernate 3.WS-Security WebService CXF学习——JAXB剖析
CXF是一个开源框架,它简化了创建和使用Web服务的过程,支持WS-I(Web Services Interoperability)规范,确保跨平台和跨语言的互操作性。 首先,让我们深入理解CXF的核心概念。CXF允许开发者使用Java编程模型来...