首页 / 浏览问题 / 组件GIS / 问题详情
iObject.java 打开工作空间后getDatasets()结果为空
18EXP 2020年01月17日

我用如下的方式打开工作空间,其中address是工作空间路径(E:/develop/supermap-iserver-10.0.0-win64-zip/samples/data/World/World.sxwu),出现了一个问题,datasource.getDatasets()得到的datasets长度为0,没有数据集, datasets.getCount()的返回也是0。但是通过

http://localhost:8090/iserver/services/data-world/rest/data/datasources/World/datasets
地址访问时,可以看到是有数据集的,请问是什么原因导致的。
还有一个问题,除了REST api之外有没有其他的方法可以通过服务名称获取到工作空间路径。
谢谢!
m_workspace = new Workspace();
WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(address);
conInfo.setType(WorkspaceType.SXWU);
m_workspace.open(conInfo);
Datasources datasources = m_workspace.getDatasources();
Datasource datasource = datasources.get(datasourceName);
Datasets datasets = datasource.getDatasets();
int count = datasets.getCount();
Dataset dataset = datasets.get(datasetName);

1个回答

您好,根据问题描述可以从以下方面排查和解决:

1、出现这个问题很大原因是这个工作空间中的数据源是文件型(.UDB)的,其为独占型数据源,只能同时被一个软件打开,所以iserver已被占用,iobjects Java就无法打开;
2、测试这个是否1中的原因导致的快速方法先暂停iserver和其它软件对其打开,然后再运行iobjects Java打开该工作空间并查看数据集个数;
3、在使用过程中如果想多个软件同时打开某个数据源,则需使用非独占型数据源引擎,比如使用文件型的.UDBX或者数据库型引擎(如Oracle、SQL server和MySQL等);
4、通过服务名称获取工作空间地址目前只能通过REST API来实现。
2,042EXP 2020年01月19日
...