发布服务:
在Manager->Services中选择“Publish GIS Resource”,选择发布刚才保存mxd文档。可以看到,在Capabilities中“GeoData Access”被自动勾选了。
发布完成以后,Manager会自动创建两个同名的服务:一个是Map Service,另一个是Geodata Service。
注意,这里需要检查一下这两个服务的Pooled参数,一般默认发布服务的时候都选Pooled,因为这样有利于提高访问效率(就像JDBC的数据库连接池)。但是基于web的在线编辑不能用pooled。因为pooled的原理就是在服务器程序启动的时候先创建好n个完全相同的实例,客户端访问的时候直接从池中获取实例,用完以后再释放到池中以供其他用户使用。所以池化的实例只适用于进行只读的操作,或者对实例进行一些属性进行临时的修改,释放的时候调用reset方法。但是在线编辑修改的是SDE中的底层数据,这样的话就不能确保第一次创建的pooled实例(SOC中的map service实例)跟第二次创建的pooled实例是完全相同的。
第一次发布的时候没有修改pooled参数,导致在Web应用中点击“Editingtask”没有任何反应,也不报错误。后来把程序导入到Eclipse中编译运行在Console中看到如下的错误信息才想起上面的道理:
严重: At least oneAGSLocalMapResource with NotPooled Service is required to display Editing task.
2006-12-2714:45:59 com.esri.adf.web.ags.tasks.EditingTask a
在Manager->Services中选择“Publish GIS Resource”,选择发布刚才保存mxd文档。可以看到,在Capabilities中“GeoData Access”被自动勾选了。
发布完成以后,Manager会自动创建两个同名的服务:一个是Map Service,另一个是Geodata Service。
注意,这里需要检查一下这两个服务的Pooled参数,一般默认发布服务的时候都选Pooled,因为这样有利于提高访问效率(就像JDBC的数据库连接池)。但是基于web的在线编辑不能用pooled。因为pooled的原理就是在服务器程序启动的时候先创建好n个完全相同的实例,客户端访问的时候直接从池中获取实例,用完以后再释放到池中以供其他用户使用。所以池化的实例只适用于进行只读的操作,或者对实例进行一些属性进行临时的修改,释放的时候调用reset方法。但是在线编辑修改的是SDE中的底层数据,这样的话就不能确保第一次创建的pooled实例(SOC中的map service实例)跟第二次创建的pooled实例是完全相同的。
第一次发布的时候没有修改pooled参数,导致在Web应用中点击“Editingtask”没有任何反应,也不报错误。后来把程序导入到Eclipse中编译运行在Console中看到如下的错误信息才想起上面的道理:
严重: At least oneAGSLocalMapResource with NotPooled Service is required to display Editing task.
2006-12-2714:45:59 com.esri.adf.web.ags.tasks.EditingTask a
严重: Error while attempting tostart editing com.esri.adf.web.ADFException: No layer available.
arc server 9.2+sp3后, 支持pooled service了,这时的数据是不能有version的.
要进行web在线编辑必须满足4个条件
editable data : arcsde geodatabase
map service pooling : non - pooled
application connection : local
arcgis server license : advanced
浙公网安备 33010602011771号