2011-07-28 8 views
5

Sınıf yolundan EJB'ye (3.1) dosya yüklenen Özellikler sınıfını enjekte etmenin basit bir yolu var mı? BöyleEJB3.1 özellikler dosya enjeksiyonu

şey: bkail söylediği gibi

@Resource(name="filename.properties", loader=some.properties.loader) 
private Properties someProperties; 

Teşekkür ederim,

Bozo

+1

değil POM için bu eklemek kadar basittir) örneklerdir standart JavaEE. CDI'nin @ Inject + @ Produces ile böyle bir şey yapabileceğinden şüpheliyim, fakat CDI ile yeterince tanıdık değilim. (Bu yorumu, başkasının ayrıntılarını doldurabileceği umuduyla bırakarak.) –

cevap

3

, aşağıdaki şekilde bunu başarabilirsiniz. Ben böylece Sonra oluşturmak loader.getClass().getResourceAsStream ("filename.properties");

Önce enjeksiyon tip

@BindingType 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, 
     ElementType.PARAMETER }) 
public @interface PropertiesResource { 

    @Nonbinding 
    public String name(); 

    @Nonbinding 
    public String loader(); 

} 

tanımlamak kullanarak yüklemek istediğiniz bir şey yaptığım atlanır, ancak durumunda bunun için bir seçenek sağlanan, senin loader=some.properties.loader gerçekten ne anlama geldiğini emin değilim Bunun için üretici, Adlandırılmış bileşeninize enjekte edin (0).

@Inject 
@PropertiesResource(name = "filename.properties", loader = "") 
private Properties props; 

Bu @HttpParam örnek here olarak verilir kaynak belgelerine bakarak yaptı. Bu kaynak 1.0.0 yılında, kaynak 1.1.0 başına gibidir, elde açıklama kullandığınız uygulama sunucusu CDI uygulama olarak kaynak (GlassFish 3.x veya JBoss varsa bu

PropertiesResource annotation = ip.getAnnotation(PropertiesResource.class); 
0

gibi yapılabilir 7.x veya Weblogic 12 o zaman bir kaynak kAYNAK belgelerinde here

açıklanmıştır uzatma kullanmak istiyorum o kolayca

<dependency> 
    <groupId>org.jboss.weld</groupId> 
    <artifactId>weld-extensions</artifactId> 
    <version>${weld.extensions.version}</version> 
    <type>pom</type> 
    <scope>import</scope> 
</dependency>