[英]How to insert JNDI-name dynamic into Spring
我的問題從這里開始。 我有休息服務,我想查找remote-ejbs。 我正在使用Jersey和Spring作為框架。 我的實際方法是可行的,但是它不夠動態。
我在上下文中定義了以下內容:
<jee:remote-slsb id="myServiceBean"
jndi-name="ejb/ServiceBean"
business-interface="..."
>
<jee:environment>
...
</jee:environment>
</jee:remote-slsb>
我想做類似的事情
<jee:remote-slsb id="myServiceBean"
jndi-name="${ejb.ServiceBean.JNDI_NAME}"
business-interface="..."
>
<jee:environment>
...
</jee:environment>
</jee:remote-slsb>
我需要這樣做,因為JNDI_NAME的版本可能會更改。
ServiceBean{
public static String JNDI_NAME = ejb/2.1/ServiceBean
}
我當時想通過編寫Java代碼來實現此目的,當我用Maven構建項目時,該Java代碼會替換該值。 但這感覺不對。
因此,通用的問題將是在使用maven構建項目時如何將Java類中的String轉換為xml。
使用maven-resources-plugin和Filtering:
src/main/config
+dev
+app.properties
+int
+app.properties
src/main/resources
+context.xml
app.properties (dev)
+ejb.ServiceBean.JNDI_NAME=XXX
app.properties (int)
+ejb.ServiceBean.JNDI_NAME=YYY
In context.xml
<jee:remote-slsb id="myServiceBean"
jndi-name="${ejb.ServiceBean.JNDI_NAME}"
business-interface="..."
>
<jee:environment>
In pom.xml
<properties>
<env_dyn>dev</env_dyn>
...
...
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>src/main/config/${env_dyn}/app.properties</filter>
</filters>
...
...
mvn clean install=> ejb.ServiceBean.JNDI_NAME=XXX in context.xml because default properties>env_dyn=dev
mvn clean install -Denv_dyn=dev => ejb.ServiceBean.JNDI_NAME=XXX in context.xml
mvn clean install -Denv_dyn=rec => ejb.ServiceBean.JNDI_NAME=YYY in context.xml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.