CDI-bean-Konfiguration mit beans.xml Datei
Habe ich sehr einfache CDI bean:
package net.resourceAuth;
public class Sample {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
Und jetzt möchte ich zu initialisieren text
Variablen, die mit beans.xml
. Ich versuche mit beans.xml
- Datei wie diese:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:res="urn:java:net.resourceAuth"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<res:Sample>
<res:text>test123</res:text>
</res:Sample>
</beans>
Aber es funktioniert nicht. text
ist immer null. Können Sie mir helfen herauszufinden, was ist hier falsch?
In anderen Worten: ich bin auf der Suche für eine ähnliche Lösung, wie Sie in der JSF faces-config.xml beschrieben beispielsweise hier: http://www.mkyong.com/jsf2/configure-managed-beans-in-jsf-2-0/
InformationsquelleAutor pWoz | 2013-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine eingebaute Lösung für dieses problem. Sie können einige Drittanbieter-Lösungen wie Apache DeltaSpike http://deltaspike.apache.org/ oder implementieren Sie Ihre eigene Verwendung von CDI-Erweiterungen zum Beispiel.
InformationsquelleAutor pWoz
Ich bin wirklich nicht bewusst, dass diese Art der Konfiguration kann gemacht werden in
beans.xml
(dies funktioniert wohl nur im Frühling, aber vielleicht wird jemand mich korrigieren). Der CDI Weg der Initialisierung der Werte wird die Methode annotiert mit@PostConstruct
, so versuchen Sie, diesetext
) in externen properties-Datei. Somit ist Ihre Antwort erfüllt nicht meine Anforderungen. Vielleicht wissen Sie, eine andere Art und Weise zu tun, so eine Konfiguration?Ich weiß, aber wie ich schon sagte, ich bezweifle, dass es irgendeine andere option, die
CDI
. Eh, wo hast du die syntax von<res:Sample>
imbeans.xml
?Ich fand es hier: docs.jboss.org/weld/xml/1.0.0/html/xmlconfiguration.html
Das ist eine alte Referenz. Das wird nicht funktionieren. Es gibt nichts in der CDI, oder alle Implementierungen, die Ihnen erlauben, dies zu tun. Sie schreiben, könnte eine Erweiterung, um Ihnen zu erlauben, es zu tun, aber es ist chaotisch.
Ich denke, Apache DeltaSpike hat eine
@ConfigValue
feature implementiert, aber zuletzt habe ich geprüft, es war nicht dokumentiert. Versuchen E-Mail an den Benutzer-Liste mit Ihren Anforderungen, Sie sind in der Regel ziemlich schnell zu beantworten.InformationsquelleAutor Petr Mensik
Haben Sie versuchen, zu implementieren javax.enterprise.injizieren.spi.Erweiterung, die @Beobachtet ProcessInjectionTarget wie diese Die Verpackung eines InjectionTarget ?
Diesem Beispiel inject bean-Werte aus Ressource-bundle.
InformationsquelleAutor jboz
In der Beispiel-link, den Sie gepostet, wenn Sie sehen, die .xml-Datei verwendet den Namen des Pakets und dann der name der Klasse, so dass, wenn Sie versuchen, sich zu ändern von
<ress:Sample>
zu<ress:net.resourceAuth.Sample>
es funktionieren könnte.InformationsquelleAutor Dimitris