Reuse of <jee:environment /> [SPR-4196] #8874
Labels
in: core
Issues in core modules (aop, beans, core, context, expression)
type: enhancement
A general enhancement
Milestone
Ezequiel Chávez opened SPR-4196 and commented
The new "jee schema" have util tags like jee:jndi-lookup/ and jee:remote-slsb/; since this tags depends of jndiEnvironment property, the current solution it's limited for me; since i have more than one ejb bean definition, i can't reuse jee:environment y have to copy-paste for every single jee:remote-slsb, example:
<jee:remote-slsb id="myEjbOne" jndi-name="${myEjbOne.jndiName}" business-interface="${myEjbOne.interface}">
jee:environment
java.naming.factory.initial=${java.naming.factory.initial}
java.naming.provider.url=${java.naming.provider.url}
</jee:environment>
</jee:remote-slsb>
<jee:remote-slsb id="myEjbTwo" jndi-name="${myEjbTwo.jndiName}" business-interface="${myEjbTwo.interface}">
jee:environment
java.naming.factory.initial=${java.naming.factory.initial}
java.naming.provider.url=${java.naming.provider.url}
</jee:environment>
</jee:remote-slsb>
Possible solutions
#1
can define a jee:environment/ with attribute "id" for reuse.
<jee:remote-slsb id="myEjbOne" jndi-name="${myEjbOne.jndiName}" business-interface="${myEjbOne.interface}">
<jee:environment ref="jndiProperties" />
<!----alternative
<jee:environment><ref local="jndiProperties"/></jee:environment>
-->
</jee:remote-slsb>
<jee:remote-slsb id="myEjbTwo" jndi-name="${myEjbTwo.jndiName}" business-interface="${myEjbTwo.interface}">
<jee:environment ref="jndiProperties" />
</jee:remote-slsb>
<jee:environment id="jndiProperties">
java.naming.factory.initial=${java.naming.factory.initial}
java.naming.provider.url=${java.naming.provider.url}
</jee:environment>
#2
can use the tag <property /> nested of </jee:remote-slsb>, or an attribute "jndi-environment"
<jee:remote-slsb id="myEjbOne" jndi-name="${myEjbOne.jndiName}" business-interface="${myEjbOne.interface}">
<property name="jndiEnvironment" ref="jndiProperties" />
</jee:remote-slsb>
<jee:remote-slsb id="myEjbTwo" jndi-environment="jndiProperties" jndi-name="${myEjbTwo.jndiName}" business-interface="${myEjbTwo.interface}" />
<bean id="jndiProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
<prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
</props>
</property>
</bean>
Affects: 2.5 final
The text was updated successfully, but these errors were encountered: