2017-06-02 4 views
0

Im Moment arbeite ich an einer Anwendung, die eine Verbindungsfactory verwenden muss. Wenn ich die Verbindungsfactory direkt auf globaler Ebene nach dem in WAS festgelegten Namen suche, funktioniert alles gut, aber für die Entkopplung möchte ich einen Ressourcenverweis in meiner Anwendung definieren und diesen Namen suchen. Also habe ich in meinem application.xml folgenden Eintrag:Ressource auf Komponentenebene in Websphere kann nicht gefunden werden

<resource-ref> 
    <res-ref-name>jms/connectionFactory</res-ref-name> 
    <res-type>javax.jms.ConnectionFactory</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 

Was ich dann in meinem EJB macht folgende Lookup:

ConnectionFactory connectionFactory = 
(ConnectionFactory) ic.lookup("java:comp/env/jms/connectionFactory"); 

Dies führt zu dieser Ausnahme:

javax.naming.NameNotFoundException: Name comp/env/jms not found in context "java:". 

Ich versuchte es auch mit:

ConnectionFactory connectionFactory = 
(ConnectionFactory) ic.lookup("java:app/jms/connectionFactory"); 

führt zu:

Weiß jemand, was ich hier falsch mache? Vielen Dank im Voraus!

Antwort

0

Weitere Untersuchungen brachten mich zu: Lookup jndi resources WebSphere 8.5, Spring 3.1.3, Hibernate 4.1.10 EJB 3

Es ist die Antwort enthalten ist:

Sowohl der Eintrag in der application.xml und die Suche haben mit Java vorangestellt werden: app/env. Für meinen Fall ist dies:

<resource-ref> 
    <res-ref-name>java:app/env/jms/connectionFactory</res-ref-name> 
    <res-type>javax.jms.ConnectionFactory</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 

und:

ConnectionFactory connectionFactory = 
(ConnectionFactory) ic.lookup("java:app/env/jms/connectionFactory"); 
0

java: comp Ressourcenreferenzen werden an die Komponente scoped, so dass die Ressource-Referenz für die gleiche Komponente definiert werden muss, von dem Sie versuchen, um es nachzuschlagen. Beachten Sie, dass java: app für die gesamte Anwendung gilt. Wenn Sie also zu java: app wechseln und das funktioniert, ist es wahrscheinlich, dass java: comp nicht funktioniert, weil die Ressourcenreferenz für die falsche Komponente definiert wurde.

Verwandte Themen