2015-11-24 2 views
1

Моя проблема начинается здесь. У меня есть служба отдыха, и я хочу искать удаленные ejbs. Я использую Джерси и Весну в качестве рамки для этого. Мой фактический подход работает, но он недостаточно динамичен.Как вставить динамическое имя JNDI в 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 в xml при создании проекта с помощью maven.

ответ

0

Использование Maven-ресурсы-плагинов и фильтрация:

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 
+0

Большое спасибо. Но если я правильно понимаю app.properties, я должен изменить ejb.ServiceBean.JNDI_NAME = ejb/ServiceBean/v2 на ejb.ServiceBean.JNDI_NAME = ejb/ServiceBean/v3, если изменяется JNDI_NAME. После дальнейших исследований я нашел что-то полезное. https://code.google.com/p/maven-svn-revision-number-plugin/ С этим я могу изменить версию перед сборкой и не нужно делать это самостоятельно. Я сделал работу и теперь просматриваю JNDI в своем коде. – euros

Смежные вопросы