Skip to content

Reuse of <jee:environment /> [SPR-4196] #8874

Closed
@spring-projects-issues

Description

@spring-projects-issues

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

Metadata

Metadata

Assignees

Labels

in: coreIssues in core modules (aop, beans, core, context, expression)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions