2017-10-08 32 views
0

我有一個無狀態的ejb需要一些時間來初始化。爲了避免這種代價,我希望在那裏總是有這個EJB實例化的最小數量。是否有類似於MDB minInstances的類似minInstances的類似於bean的配置?我怎樣才能做到這一點?如何配置無狀態EJB(JBOSS)的最小實例?

+0

有人嗎?在發佈問題之前,我已經環顧四周,只發現了一個特定於jboss的註解@StatelessDeployment。 –

回答

0

看看Wildfly 10.x中使用的StrictMaxPoolimplementation,沒有選項可以設置最小大小。

的XSD wildfly-ejb3_4_0.xsd也不會不知道的東西約一分鐘尺寸:

<xs:complexType name="strict-max-poolType"> 
    <xs:attribute name="name" type="xs:string" use="required"/> 
    <xs:attribute name="max-pool-size" type="xs:positiveInteger" default="20" use="optional"/> 
    <xs:attribute name="derive-size" type="xs:string" use="optional"/> 
    <xs:attribute name="instance-acquisition-timeout" type="xs:positiveInteger" default="5" use="optional"/> 
    <xs:attribute name="instance-acquisition-timeout-unit" type="timeout-unitType" 
        default="MINUTES" use="optional"/> 
</xs:complexType> 

在另一方面,StricMaxPoolrelease方法並把所有豆釋放回:

public void release(T obj) { 
     if (ROOT_LOGGER.isTraceEnabled()) { 
      ROOT_LOGGER.tracef("%s/%s Free instance: %s", pool.size(), maxSize, this); 
     } 

     pool.add(obj); 

     semaphore.release(); 
    } 

這意味着一旦創建了max-pool-size bean,該池將不會收縮。因此,您可以實施一些在啓動期間填充池的@Startup bean。

+0

林不知道如何處理上述信息。對日誌記錄的回顧表明所討論的會話bean一遍又一遍地被實例化。我的閱讀表明這是預期的。基本上在一段時間的活動中會話bean被破壞。 –

+0

你如何跟蹤每次再次實例化?像@PostConstruct這樣的生命週期方法在從池中取出後執行,但是沒有得到新的實例。 – siom

+0

登錄對象的構造函數 –

相關問題