met behulp van een <jee: jndi-lookup string in een instantie van PropertyPlaceholderConfigurer

Omgeving: Windows-server 2003, lente 3.0, Tomcat 6

Hoe kan ik verwijzen naar een JNDI-eigenschap in een PropertyPlaceholderConfigurer?

Concreet gebruik ik JNDI om een ​​java.lang.String op te zoeken die een pad naar vertegenwoordigt een eigenschappenbestand dat mijn webapp nodig heeft





  
  
    
        how to use mypropsfile1 here ??
        how to use mypropsfile2 here ??
    
  

Mijn "jee: jndi-lookup" werken AFAIK. Mijn probleem lijkt te zijn hoe te verwijzen naar JNDI-bronnen in het tag-paar

Bij voorbaat dank! Mark

3

4 antwoord

Uw aanpak werkt mogelijk niet Mark, dit komt omdat PropertyPlaceHolderConfigurer een BeanFactoryPostProcessor is en wordt aangeroepen op het moment dat de bean-definities worden gemaakt, terwijl de jndi-lookup zich in dit stadium afspeelt.

Ik zag een discussie-item oudere lente-forum een aanbeveling voor een aanpak voor het gebruik van een op jndi lookup gebaseerd eigenschappenbestand, dat mogelijk aan uw behoeften voldoet:

0
toegevoegd

Ik doe dit in het voorjaar van 3 met behulp van een kaart als volgt:

       


    
        
            
        
    

Dit werkt in de meeste gevallen goed. U kunt in de problemen komen als u AOP gebruikt of iets dat de bean in een Proxy-klasse verpakt, zelfs als u eager init juist instelt. Een oplossing is in dat geval rechtstreeks toegang te krijgen tot de somethingWithMap-bean vanuit de app-context wanneer nodig:

applicationContext.getBeansOfType (type, includeNonSingletons, allowEagerInit);

*Note that this will return a Map where you can access the bean by name.

0
toegevoegd

Ik geloof dat je zoiets moet doen. Ik heb het niet getest, maar in feite neemt de setLocations-methode in PropertyPlaceholderConfigurer een array van Resource op (in ons geval UrlResource - http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/core/io/UrlResource.html ) die op zijn beurt een constructor heeft met het bestandspad.





  
  
        
           
               
           
           
               
           
        

  

I am not sure if there is a tag called in spring . Check this http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-introduction

0
toegevoegd

Niet precies voor een enkele JNDI-eigenschap, maar deze gebruikt in plaats daarvan een Properties-verwijzing, verkregen via JNDI:

<!-- Lookup Properties reference through JNDI -->



    
    <!-- Once the reference is obtained from JNDI, it can be used like any other reference -->
    

0
toegevoegd