我的问题从这里开始。我有休息服务,我想查找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构建Project时,它会替换值。但那感觉不对。
因此,一般的问题是如何在使用maven构建项目时将Java类中的String转换为xml。
答案 0 :(得分:0)
使用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