美文网首页
使用iServer JAVA API访问iServer数据服务进

使用iServer JAVA API访问iServer数据服务进

作者: SuperMap技术控 | 来源:发表于2021-11-04 08:53 被阅读0次

作者:MR

之前一篇博客(SuperMap iServer JAVA API介绍)介绍了SuperMap iServer JAVA API(以下简称JAVA API)用处、用法,本篇介绍JAVA API访问iServer数据服务的具体应用,并提供工程源码下载。作为示例,这里使用eclipse创建一个控制台应用。
###一、创建JAVA工程&主类
  创建一个Java工程,工程下新建lib文件夹,复制%iServerROOT%WEB-INFlibiserver-all-8.1.1-14511.jar到lib文件夹里,并将iserver-all-8.1.1-14511.jar右键添加到Build Path里。
  本文新建一个包,命名dataSample,其下创建一个类,命名DataSample,添加main方法。工程结构如图(JDK1.8):

###二、获取数据服务提供者
  本文访问的数据服务REST资源根目录如下:

http://support.supermap.com.cn:8090/iserver/services/data-world/rest

创建/释放RestDataProvider方法如下:

/**
* @param RootURL
*           数据服务REST资源根目录
* @return
*/
privatestatic RestDataProvider getDataProvider( String rootURL )
{
// 服务提供者设置
RestDataProviderSetting ProviderSetting =newRestDataProviderSetting( );
ProviderSetting.restServiceRootURL = rootURL;
// 创建服务提供者
returnnewRestDataProvider( ProviderSetting );
}

/**
* @param provider
*           待释放资源的服务提供者对象
*/
privatestatic void dispose( RestDataProvider provider )
{
if( provider !=null)
{
provider.clearCache( );
provider.dispose( );
}
}

RestDataProvider类参考最新在线地址如下(建议使用CHM格式):

http://support.supermap.com.cn:8090/iserver/help/html/mergedProjects/iServerJavadoc/com/supermap/services/providers/RestDataProvider.html

###三、业务逻辑实现

接下来就可以使用服务提供者对象提供的方法实现各种业务逻辑了,本文实现创建一个点数据集并添加点。main方法如下:

privatestatic final String DATAURL = "http://support.supermap.com.cn:8090/iserver/services/data-world/rest";

/**
* @param args
*/
publicstatic void main( String[ ] args )
{
long start = System.currentTimeMillis( );
RestDataProvider dataProvider = getDataProvider( DATAURL );
final String datasourceName = "World";
final String copyDSName = "Capitals";
final String newDSName = "TESTPoints";
// 新建数据集(这里就不new完挨着赋值了,复制一个,目前通过REST API创建数据集不支持设置字段)
Boolean flag =true;
try
{
if( dataProvider.copyDataset( datasourceName, copyDSName, datasourceName, newDSName ) )
{
System.out.println( copyDSName + " 数据集已复制,新数据集为 " + newDSName );
}else
{
flag =false;
}
}catch( Exception e )
{
System.out.println( newDSName + " 数据集已存在" );
}
if( flag && dataProvider.clearFeatures( datasourceName, newDSName ) )
{
System.out.println( newDSName + "数据集已清空" );
int[ ] ids =newint[ ] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List

运行时会有报错java.lang.NoClassdeFoundError,这是因为我们虽然都只使用了iserver-all-8.1.1-14511.jar包里的方法,但是该包还会import别的包,所以编译没错,运行时就会报错了,目前暂无便捷的依赖管理工具去自动列出需要的依赖项,只能手动和根据报错添加依赖的包;反编译查看import也不是很好用,需要反编译你使用的类,找到它的依赖、依赖的依赖...,所以本文建议排除法,JAVA API所有的依赖都在%iServerROOT%WEB-INFlib目录下,把这些jar包都加到Build Path就行了,并且,已知本文使用的方法不涉及SuperMap iObjects Java,所以可以去掉com.supermap开头的(即Java组件的)的jar包,也不需要配置Java组件环境,剩下的jar先通过文件名排除一部分,然后一个一个去掉看运行结果来排除剩下的。

###结果

###其他&下载
  可以输出工程为jar,使用java命令运行(可以写成批处理脚本或shell脚本)即可,本文不再介绍。
  排除无用jar包后的工程如下,使用eclipse打开工程即可运行查看结果。

使用iServer JAVA API访问iServer数据服务进行数据操作示例工程
http://download.csdn.net/detail/supermapsupport/9833944

相关文章

网友评论

      本文标题:使用iServer JAVA API访问iServer数据服务进

      本文链接:https://www.haomeiwen.com/subject/cdbhzltx.html