1、 提供了開發服務平台的解決方案:比如應用認證、會話管理、安全控制、錯誤模型、版本管理、超時限制
2、 啟動:RopServlet截獲http請求
配置:
<servlet> <servlet-name>rop</servlet-name> <servlet-class>com.rop.RopServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>rop</servlet-name> <url-pattern>/router</url-pattern> </servlet-mapping>
3、 注解
1)@ServiceMethodBean 標注在class之前,使相應的class成為一個Rop服務的Bean
2)@SeviceMethod(method = “服務方法名稱”, version=“版本號”, needInSession = 是否要工作在會話環境中)
4、 統一服務的URL
所有的服務都使用統一的URL,Rop通過method系統級參數將請求分配到指定的服務方法中完成服務代理。服務平台最終的URL為:<開放根平台URL>/<RopServlet的映射URI>
5、 數據轉換過程
HTTP報文---HttpRequestContext---RopRequestContext---RopRequest輸送給服務方法
6、 使用注解實現HTTP請求到服務處理方法的映射,例如:
@Service public class Hello () { @ServiceMethod (method = “sayHello”, version = “1.0”) public void say () { System.out.println (“Hello”); } }
7、 Rop注解@ServiceMethod的屬性
method:代碼服務方法名
version:版本號
group:服務分組名,無特殊意義,默認分組為ServiceMethodDefinition.DEFAULT_GROUP
groupTitle:服務分組標識
tags:類型是String[],可以給服務打上TAG,在時間處理監聽器、服務攔截器利用TAG進行特殊處理
title:服務的標識
httpAction:服務允許的HTTP請求方法,可選值在HttpAction枚舉中定義,即GET或POST,如果不指定則不限制
needInSession:表示該服務方法是否需要工作在Session環境中,默認所有的服務方法必須工作在會話環境中,可以設置needInSession = NeedInSession.NO
ignoreSign:表示服務是否需要進行請求數據簽名驗證,當@ignoreSign用在屬性上時,該屬性對應的請求參數排除在簽名參數列表之外
timeout:服務超時時間,單位為秒,如果服務方法執行時間超過timeout后,Rop將直接中斷服務並返回錯誤的報文