首页 / 浏览问题 / 云GIS / 问题详情
发布工作空间地图到iserver
91EXP 2017年03月17日
我想通过代码实现工作空间的发布,用iObject for java的api可以实现吗?

1个回答

请问你是要将工作空间里的地图发布为地图服务吗?如果是要发布地图服务请用iServer产品发布服务,目前iobjects for java组件并没有提供发布服务的api接口。
1,420EXP 2017年03月17日

iServer的java api也没有发布工作空间为各种服务的方法
那么就有俩解决办法了,

1.改iServer服务配置文件(xml,iServer应用目录下,比如webapps/iserver/WEB-INF/iserver-services.xml,中间件部署的iServer服务配置文件在相应目录,改文件后不需要重启即可完成服务发布)

2.使用iServer REST API,java发送HTTP请求,iServer REST API相关文档链接:
http://support.supermap.com.cn:8090/iserver/help/html/mergedProjects/SuperMapiServerRESTAPI/manager/workspaces/workspaces.htm
注意:方式2使用iServer REST API managerRoot资源需要身份验证才能操作,可以两种方式认证,一种是token,一种是用登陆资源,登陆后获取到相关信息,之后的请求头带上它
token相关:
http://support.supermap.com.cn:8090/iserver/help/html/mergedProjects/SuperMapiServerRESTAPI/Token_RESTServices.htm

推荐方式2

用restapi可以发布,如果地图变了怎么更新?是删除了重新发布还是会自动更新?
iServer发布服务只是在配置文件添加对应配置项,文件工作空间存的是工作空间文件路径,数据库型工作空间存的是数据库连接字符串;数据源路径或连接字符串又是记录在工作空间里的;

总之,iServer发布工作空间后是以工作空间为入口去读相应地图、数据的,所以更新数据不需重新发布服务
提醒:
1.文件型数据源独占的,不能多个进程同时操作,即iServer发布了使用这个数据源的工作空间,则iDesktop和超图组件都不能打开这个数据源
2.iServer的地图和某些资源有缓存,更新地图后前端对接地图服务时URL参数加上cacheEnabled=false,这样每次请求都计算出图不使用服务端缓存;其他服务不需额外设置即可得到最新的数据
1、如果我的工作空间是SqlServer的,是否就不会独占,iserver启动时仍然可以更新。

2、如果我新增了专题图,例如上次发布工作空间是并不存在该专题图的名称,那么我新增的专题图是否能够通过iserver访问到(不重新发布的情况下)。

1.工作空间不存在独占,只有数据源才会;工作空间记录的主要内容有:

 (1.数据源连接

 (2.地图(xml表述,只记录样式、关联的数据集连接、地图及图层属性等)

 (3.符号库
 (4.其他,比如布局场景等

所以只要工作空间连接路径没变,保存了iServer发布的工作空间后,下次请求iServer读到的就是更新后的(不使用缓存的情况下)

2.上面已经说明了,只要是保存了iServer发布的工作空间就行
另,iServer有数据源检查机制,主要是判断缓存存活周期的,默认30s检查数据连接,若改变,则缓存资源失效,可以在webapps/iserver/WEB-INF/iserver-system.xml的checkDatasourceConnectionInterval节点设置,更多配置项请参考iServer帮助文档,链接:

http://support.supermap.com.cn:8090/iserver/help/html/Appendix/iServer_configInfo.htm
http://support.supermap.com.cn:8090/iserver/help/html/Server_Service_Management/Server_Service_Management.htm

加上之前的内容,应该会对你有所帮助

你也可以直接iServer发布工作空间,iDesktop打开iServer发布的,在iDesktop里操作,保存或不保存工作空间,查看iServer服务,然后你就会知道我上面说的工作空间和数据源、地图等的关系了
还是提醒:
修改地图样式等,清下iServer缓存目录下对应地图再for JavaScript浏览或者写个html,用iClient for JavaScript对接,cacheEnabled设置为false
...