博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
阅读量:5326 次
发布时间:2019-06-14

本文共 4576 字,大约阅读时间需要 15 分钟。

今天突然给了个任务让测试点在面内算法,然后通过SuperMap iServerJava 6R发布出来并测试并发访问性能。好久没结果Java突然有点乱,胡子眉毛一把抓,不过思路总算清晰起来了,记录下来以备后需查找吧。

测试总体思路

1、扩展领域开发开出点在面内REST接口。

(1)扩展Component。

扩展Componentpackage com.zhangwei.Extend;import java.util.List;import com.supermap.services.components.Component;import com.supermap.services.components.ComponentContext;import com.supermap.services.components.ComponentContextAware;import com.supermap.services.components.commontypes.Feature;import com.supermap.services.components.commontypes.Geometry;import com.supermap.services.components.spi.DataProvider;@Component(providerTypes={DataProvider.class}, optional=false, type = "")public class InWithComponent implements ComponentContextAware{	//数据提供者    private DataProvider dataProvider = null;    /**     * 构造函数     */    public InWithComponent() {    }    /***     * 思路:     * 1、从数据集中查询相应ID的数据,现在假设一个点,多个面对象。     * 2、判断点是否在对象几何中。     */    public Geometry inWithString(String datasourceNameR,String datasetNameR,int[] idsR,String datasourceNameP,String datasetNameP,int[] idsP) {    	List
listFeatureListR = dataProvider.getFeature(datasourceNameR,datasetNameR,idsR,null); List
listFeatureListP = dataProvider.getFeature(datasourceNameP,datasetNameP,idsP,null); int geometryLength = listFeatureListR.size(); int i = 0; //是否是结果标识 boolean flag = false; while(i
providers = context.getProviders(Object.class); if(providers != null) { for(Object provider : providers) { if(provider instanceof DataProvider) { this.dataProvider = (DataProvider)provider; } } } }}

(2)扩展服务接口,由于是测试,此处不用Restlet或者JAX-RS,此处为了模拟数据传输对服务器影响,所以直接加了参数解析及返回结果,其实只是测试之用。

扩展接口package com.zhangwei.Extend;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.supermap.services.Interface;import com.supermap.services.InterfaceContext;import com.supermap.services.InterfaceContextAware;import com.supermap.services.components.commontypes.Geometry;@Interface(componentTypes = { InWithComponent.class }, optional = false, multiple = false)public class ISWithInServlet extends HttpServlet implements InterfaceContextAware{	private static final long serialVersionUID = 1L;	private InWithComponent inWithComponent = null;	private String id = null;	public ISWithInServlet() {		this.id = String.valueOf(System.currentTimeMillis());    }    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {        PrintWriter out;        response.setContentType("text/html;charset=UTF-8");        response.setCharacterEncoding("UTF-8");        request.getParameter("in").toString();        out = response.getWriter();        int[] idsR = new int[2];		idsR[0] = generateRandom(1,72);		idsR[1] = generateRandom(1,72);		int[] idsP = new int[1];		idsP[0] = generateRandom(1,163);        Geometry geometry = inWithComponent.inWithString("World","Ocean",idsR,"World","Capitals",idsP);        out.print("[6390,,4883,4882,183,7136,7135,181,180,2987,651,,4578,4577]"+geometry.id);        out.close();    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    	    }    public void setInterfaceContext(InterfaceContext context) {    	 this.getServletContext().setAttribute(this.id + "InterfaceContext", context);         List components = context.getComponents(Object.class);         if (components != null) {             for (Object component : components) {                 if (component instanceof InWithComponent) {                     this.inWithComponent = (InWithComponent) component;                     break;                 }             }         }    }       /**     * java中如何获取某个范围内的随机数      * @param a     * @param b     * @return      */    public static int generateRandom(int a, int b) {        int temp = 0;        try {            if (a > b) {                temp = new Random().nextInt(a - b);                return temp + b;            } else {                temp = new Random().nextInt(b - a);                return temp + a;            }        } catch (Exception e) {            e.printStackTrace();        }        return temp + a;    }}

转载于:https://www.cnblogs.com/awei20081/archive/2011/08/24/2151525.html

你可能感兴趣的文章
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>
Linux设置环境变量的方法
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
epoll使用具体解释(精髓)
查看>>
AndroidArchitecture
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
大数据学习
查看>>
简单工厂模式
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
Objective-C 【关于导入类(@class 和 #import的区别)】
查看>>
倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点击运行按钮进入到运行状态报错Error starting TwinCAT System怎么办 AdsWarning1823怎么办...
查看>>
【转】javascript 中的很多有用的东西
查看>>
Centos7.2正常启动关闭CDH5.16.1
查看>>
Android 监听返回键、HOME键
查看>>
Android ContentProvider的实现
查看>>