【ArcGIS SOE】01開發伺服器物件擴充套件概述
阿新 • • 發佈:2021-01-13
技術標籤:學習筆記arcgis server
-
ArcObjects API for developing SOEs
-
SOE annotations
@ArcGISExtension批註指示帶批註的介面或類作為ArcGIS擴充套件自動顯示給ArcGIS平臺。該@ArcGISExtension註解用於由ArcGIS作為一種您的介面和類作為擴充套件,而不需要嵌入一些外部源的任何配置或API呼叫相關聯。以下是帶註釋的SOE的介面和類的示例:@ArcGIS Extension
此批註是必需的,並且缺少它會導致SOE的Java類在部署時對於ArcGIS for Server不可見。因此,該SOE在執行時將不存在。// Custom Interface @ArcGISExtension interface ISoeInterface{ public String mySoeFoo(); } // SOE class @ArcGISExtension public class test01 implements IServerObjectExtension,ISoeInterface { // IServerObjectExtension methods public void init(IServerObjectHelper arg0)throws IOException, AutomationException{ // Called once when the instance of the SOE is created } public void shutdown()throws IOException, AutomationException { // Called once when the SOE’s context is shut down } //IMySoeInterface method public String mySoeFoo(){ return "some string"; } }
SOE需要@ServerObjectExtProperties批註來儲存將SOE部署為地圖服務的擴充套件時提供給ArcGIS for Server的名稱/值對。 支援以下元素對:@ServerObjectExtProperties
- displayName-這是當用戶在ArcGIS for Server管理客戶端(例如ArcGIS Server管理器)和ArcMap中的“目錄”視窗中將其啟用為功能時,SOE將具有的顯示名稱。這個名字可以有空格。
- 說明-用於更詳細,更友好地描述您的SOE,並將顯示在ArcGIS for Server管理客戶端中,以幫助管理員瞭解SOE的用法。
- 屬性-在這裡可以定義SOE的屬性。例如,如果SOE允許編輯層,則屬性值可以指示哪個層可用於編輯,從而使管理員可以控制SOE的執行時間使用/行為。
- allSOAPCapabilities-將SOE作為Web服務公開時,可以建立可由ArcGIS for Server管理員啟用或禁用的功能。這種功能稱為“網路功能”。此引數的值是一個逗號分隔的列表,其中包含SOE公開的所有功能。
- defaultSOAPCapabilites-此引數的值列出了預設情況下在SOE上啟用的所有Web功能。
@ServerObjectExtProperties(displayName = "my soe",description = "my frist SOE",
properties = {"property1Name=property1Value","property2Name=property2Value"},
defaultSOAPCapabilities = {"myWebCapability1"},
allSOAPCapabilities = {"myWebCapability1", "myWebCapability2"}
)
// SOE class
@ArcGISExtension
public class test01 implements IServerObjectExtension,ISoeInterface {
// IServerObjectExtension methods
public void init(IServerObjectHelper arg0)throws IOException,
AutomationException{
// Called once when the instance of the SOE is created
}
public void shutdown()throws IOException, AutomationException {
// Called once when the SOE’s context is shut down
}
//IMySoeInterface method
public String mySoeFoo(){
return "some string";
}
}
-
Interfaces and classes
此介面是可選的,僅當SOE需要額外的初始化(例如使用ArcGIS Server管理器中的伺服器管理員定義的值初始化屬性)時才需要實現。該介面包括一個稱為construct()的方法,該方法在呼叫IServerObjectExtension.init()之後僅在建立SOE時被呼叫一次。對於具有屬性的SOE,construct()將SOE的配置屬性作為屬性集移交。com.esri.arcgis.system.IObjectConstruct
IObjectActivate介面是可選的(也就是說,除非您的SOE需要在處理請求之前和之後執行的特殊邏輯,否則不需要其實現)。它包括兩種方法:com.esri.arcgis.system.IObjectActivate
- activate()-每次客戶端通過SOAP或REST向SOE請求時呼叫
- deactivate()-每次客戶端獲取和釋放伺服器物件的上下文時呼叫。
如果計劃將Java SOE公開為基於SOAP的Web服務,則您的SOE類必須擴充套件SOAPRequestHandler基類。如果要建立REST SOE,則不需要擴充套件此基類。該基類定義了IRequestHandler介面公開的handleStringRequest()方法。該方法接收SOAP請求,從SOE類呼叫適當的業務方法,生成SOAP響應,然後將其返回給客戶端應用程式,從而減輕了您處理SOAP請求和響應的負擔,並使您可以專注於SOE的業務邏輯開發。在“開發SOAP SOE”主題中將對此進行詳細討論。com.esri.arcgis.server.SOAPRequestHandler
如果計劃將Java SOE作為RESTful Web Service,則必須實現IRESTRequestHandler介面。該介面提供兩種方法:com.esri.arcgis.system.IRESTRequestHandler
- handleRESTRequest()-為對SOE的每個HTTP請求呼叫一次。
- getSchema()-在執行時由ArcGIS REST處理程式呼叫以查詢SOE的資源和操作層次結構。
-
ArcGIS Java ArcObjects軟體開發套件
- Eclipse IDE外掛
這些外掛有助於使用Java ArcObjects API來開發自定義應用程式和擴充套件。其中包括:- 用於建立自定義SOAP和REST SOE,自定義地理處理工具,自定義渲染器,要素類擴充套件和載入項的嚮導。
- 可用於生成部署工件的工具,例如各種Java擴充套件的jar檔案。
有關為Eclipse安裝ArcGIS外掛的說明,請參閱“開發桌面應用程式”->“使用ESRI Eclipse外掛”->“安裝ESRI外掛”。
- 樣品
- 檔案