Zugriff auf JBoss Beans aus einem SLSB?

gorefest

Erfahrenes Mitglied
Moin, Leute!

Ich habe mir ein JBoss Bean per XML zusammengebastelt und bekomme dieses auch durch den Deployer.

Code:
<bean name="MyBean" class="com.foo.MyBean">
        <property ..../>
  </bean>

Nun habe ich ein SLSB und würde gerne dieses Bean verwenden. Wie komme ich da ran? Alle versuche es es @Resource zu holen schlugen fehl.

Also eigenlich sowas wie

Code:
@Stateless
@LocalBinding(jndiBinding="StandardReporting") 
@Clustered
@javax.jws.WebService(serviceName="StandardReporting",portName="StandardReportingPort")
public class StandardReportingBean implements StandardReportingBeanRemote, StandardReportingBeanLocal {

	@Resource(mappedName="MyBean")
	MyBean x;

...

}

Wie bekomme ich Zugriff auf die Beans, die ich per jboss-beans.xml konfiguriere !?

Tausend Dank im Voraus,
gore
 
Hi,

ich verwende JBoss 5.0.2-GA.

@Inject habe ich schon probiert, aber leider ohne Erfolg; wenn ich meine SLSB vom Server kriege ist die Variable NULL.

@Inject mit name noch nicht, das teste ich noch aus; allerdings habe ich bei JBoss in der Doku gefunden, dass @Inject wohl net in EJB3 unterstützt werden :-/


... Für jede Hilfe bin ich natürlich dankbar!

Grüße,
gore
 
Hi,

mit @Resource bist du schonmal richtig.
Wenn du die Bean mit @Resource injectest, dann ist der MappedName der Name unter dem das Remote/Local interface der Bean im JNDI gebunden ist. Sprich, geh mal in die JMX-Konsole und invoke mal JNDI -> list und schau nach unter welchem Namen die Bean gebunden ist.
Sonst versuch es mal mit @Resource(name="MyBean")
 
Hallo,

Danke für Deine Antwort, aber ich werde da net schlau draus. Ich habe ein Stateless Session Bean und möchte auf ein bean zugreifen, welches ich über jboss-beans.xml deployed habe. Das SLSB kriege ich ganz normal via @EJB. Aber das Bean aus der XML Datei net :-/

Ich habe versucht, Deinem Vorschlag zu folgen und finde nur einen JNDIView, der eine List-Methode in der JMX-Konsole hat. Ist das das Bean, welches ich brauche?


Grüße+Danke
gore
 
Hab leider nur nen JBoss 4.3 da und weiß das die JMX im JBoss 5 leicht anders ist, aber sollte so ähnlich sein

Code:
Global JNDI Namespace

+- Ereignissteuerung (class: org.jnp.interfaces.NamingContext)
  |   +- TimerLifecycleListener (class: org.jnp.interfaces.NamingContext)
  |   |   +- local

Dort sollte dann irgendwo deine Bean auftauchen.
Wenn ich mich nicht irre, wäre in diesem Fall wäre der richtige "mappedName"

Code:
@EJB(mappedName="Ereignissteuerung/TimerLifecycleListener") MyBean myBean;

Kannst es auch mal so versuchen, falls nur eine Bean von der Klasse deployed ist, liefert dir JBoss die richtige (weil einzige)
Code:
@EJB MyBean myBean;
 
Hi, nun verstehen wir uns ;-)

Die Beans, die per jboss-beans-xml deployed wurden, sind soweit ich das beurteilen kann, keine EJBs, sondern irgendeine Form von @Resource. Ich werde dennoch mal Deinem Vorschlag nachgehen, den JNDI Tree danach zu durchforsten.

Danke und Grüße
gore
 
Zurück