麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

TurbineHowTo之Service

2019-11-18 14:30:48
字體:
來源:轉載
供稿:網友

  在Turbine中實現自己的服務是非常輕易的一件事.你的類只需要繼續org.apache.turbine.services.TurbineBaseService(這是必須的,只有這樣,Turbine的ServiceBroker才能啟動你的服務).
  
  要告訴Turbine你的這個服務,你必需在TrubineResources.PRoperties里這樣配置:
  
  services.MyServiceName.classname = full.class.name.of.your.service
  
  配置好以后,當有程序請求這個服務的時候,Turbine會初始化這個服務.必須說明的是,你的服務并不是在Turbine啟動的時候初始化的.這叫"lazy init",假如你需要你的服務在Turbine啟動是就初始化,你必須在TurbineResources.properties里添加另一條配置:
  
  services.MyServiceName.earlyInit = true
  
  假如你查看一下db/TurbinePoolBrokerService或者servlet/TurbineServletService這兩個簡單的示例的話,你上手會更快一點.
  
  In a Nutshell
  
  * 你不能試著提供帶參數的構造函數,最好是不提供構造函數,因為在類構造時不需要做任何事情(我們只需要默認的構造函數就好了).
  
  * 你的服務只能初始化一次.因此,你的類必須是線程安全的(threadsafe),不能使用類級的變量來處理session級的請求.
  
  * 你需要提供一個"init()"方法,Turbine會在第一次請求的時候調用他(假如earlyInit=true,則是在Turbine啟動時)并且初始化你的服務相關的內容.令人迷惑的是"init()"方法到底應該是什么樣的?因為Turbine使用不同的方法來進行服務的初始化.不過,從 Turbine2.2開始,你只需要提供一個不帶參數的方法就可以了:
  
  public void init() throws InitializationException
  {
  }
  * 假如正常初始化結束來,你必須調用"setInit(true)",否則你的服務仍然不能響應任何的用戶請求.當你這么設置以后,你的服務服務就有可能被調用,所以你就不能再次調用"setInit()"了.
  
  * 你可以提供一個"shutdown()"方法,Turbine會在自己關閉之前調用他.你可以在這里清理你服務的一些內部數據,在執行完"shutdown()"之前,你應該調用"setInit(false)".
  
  一般的模式
  假如你要實現一個FooService,聲明一個繼續org.apache.turbine.services.Service的接口 (your.package.FooService)是一個好習慣.這個接口應該提供一個叫SERVICE_NAME的常量,這是你的服務的名字,比如:
  [code]
  package your.package;
  
  import org.apache.turbine.services.Service;
  
  public interface FooService extends Service
  {
  /**
  * 服務的標記,應該是唯一的,以區分開別的服務
  */
  public String SERVICE_NAME = "FooService";
  
  [...]
  
  }
  [/code]
  your.package.TurbineFooService.java 繼續了org.apache.turbine.services.TurbineBaseService類并且實現your.package.FooService并提供來具體的實現 ,如:
  [code]
  package your.package;
  
  import org.apache.turbine.services.TurbineBaseService;
  
  public class TurbineFooService
  extends TurbineBaseService
  implements FooService
  {
  /**
  * 在這里提供具體的實現
  */
  [...]
  
  }
  [/code]
  your.package.TurbineFoo.java 提供一些靜態的facade方法來調用你的服務,如:
  
  [code]
  import org.apache.turbine.services.TurbineServices;
  
  public class TurbineFoo
  {
  protected static FooService getService()
  {
  return (FooService) TurbineServices
  .getInstance().getService(FooService.SERVICE_NAME);
  }
  
  [...]
  
  public static void fooMethod1()
  {
  getService().fooMethod1();
  }
  
  public static int fooMethod2(int bar)
  {
  return getService().fooMethod2(bar);
  }
  
  [...]
  
  }
  [/code]
  用戶調用你的服務只需要簡單的"TurbineFoo.fooMethod1();",在調用的代碼里就不需要知道具體實現的類是哪一個.
  
  注重:在Turbine2.1和2.2中治理服務的生命周期(lifecycle)的init()和shutdown()方法可能在以后的版本中有所改變的.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜激情视频免费 | 日本黄色一级视频 | 免费看一级视频 | av7777777| 国产亚洲精品久久久久婷婷瑜伽 | 欧洲精品色 | 成人午夜免费看 | 成人免费精品视频 | 黄色免费高清网站 | 美国av片在线观看 | 日韩精品中文字幕一区二区三区 | 久久福利剧场 | 91 在线观看 | 一级成人欧美一区在线观看 | 欧美一级视频免费看 | 毛片一级免费看 | 免费欧美一级视频 | 污片在线观看视频 | 国产精品视频久久久 | 欧美成人精品欧美一级 | 国产91在线亚洲 | 国产精品久久亚洲 | 久草在线播放视频 | 亚洲成人综合网站 | 精品国产一区二区三区四区在线 | 香蕉久草视频 | 黄污网址 | 国产亚洲欧美日韩在线观看不卡 | 国产成人精品区一区二区不卡 | 天天干干 | 中文字幕亚洲欧美 | 精品一区二区三区免费爱 | 欧美日韩在线播放 | 毛片在哪里看 | 2019天天干夜夜操 | 视频h在线 | 在线观看一区二区三区四区 | av免费在线网站 | 久久久久免费电影 | 91短视频版高清在线观看免费 | 亚洲成年人免费网站 |