簡體   English   中英

如何將JNDI名稱動態插入Spring

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM