Java 在standalone.xml(JBOSS)中配置特定的SFSB有状态超时

Java 在standalone.xml(JBOSS)中配置特定的SFSB有状态超时,java,jakarta-ee,jboss,Java,Jakarta Ee,Jboss,对于我的JEE 3.1应用程序,我有一个SFSB,我为它设置了一个特定的超时。我需要能够轻松访问此值,以使其易于配置 首先,我在我的SFSB课堂上做了注释: @StatefulTimeout(value = 2, unit = TimeUnit.HOURS) 这正如预期的那样有效。但我需要这个值是(容易)可配置的。因此,我删除了注释,并将以下xml放在我的ejb-jar.xml中。同样,这也是预期的效果 <session> <ejb-name>MyStatefu

对于我的JEE 3.1应用程序,我有一个SFSB,我为它设置了一个特定的超时。我需要能够轻松访问此值,以使其易于配置

首先,我在我的SFSB课堂上做了注释:

@StatefulTimeout(value = 2, unit = TimeUnit.HOURS)
这正如预期的那样有效。但我需要这个值是(容易)可配置的。因此,我删除了注释,并将以下xml放在我的ejb-jar.xml中。同样,这也是预期的效果

<session>
    <ejb-name>MyStatefulSessionBeanName</ejb-name>
    <ejb-class>foo.bar.MyStatefulSessionBean</ejb-class>
    <session-type>Stateful</session-type>
    <stateful-timeout>
        <timeout>2</timeout>
        <unit>Hours</unit>
    </stateful-timeout>
</session>

MyStatefleSessionBeanname
foo.bar.mystateflesessionbean
有状态
2.
小时

但是ejb-jar.xml打包在.jar中,它位于my.ear应用程序部署中。因此,我的问题是,是否可以将此设置放在jboss的standalone.xml文件中?

如果不重新启动应用程序,就很难做到这一点

如果没有问题,那么可以在standalone.xml中定义系统属性。为此,我建议使用CLI或管理控制台

然后可以在ejb-jar.xml中使用属性值:

<stateful-timeout>
    <timeout>${my.session.timeout.value}</timeout>
    <unit>${my.session.timeout.units}</unit>
</stateful-timeout>

${my.session.timeout.value}
${my.session.timeout.units}

然后,可以通过web控制台或CLI更新属性值,并重新启动应用程序。

请注意,要使此操作正常,需要在standalone.xml中将“spec descriptor property replacement”设置为“true”。您还将失去JavaEE遵从性。感谢Steve和Barry,这解决了我的问题。重新启动服务器对我来说不是问题。