2011-01-17 5 views
1

1: Unsere Anwendung läuft auf Weblogic Application Server, Version 10.3.0EJB 3.0-Lookup in Weblogic 10.3.0

2: In unserem System brauchen wir eine EJB zu implementieren, um die EJB 3.0-Spezifikation entsprechen.

finden Sie den Beispielcode für unsere UAT-Umgebung wie folgt:

/*The remote interface*/ 

package com.serverside.ejb.session; 
import javax.ejb.Remote; 

@Remote 
public interface ASimpleSessionBeanRemote { 

public void printThis(String print); 

} 


/*The bean class*/ 

package com.serverside.ejb.session; 

import javax.ejb.Remote; 
import javax.ejb.Stateless; 

/** 
* Session Bean implementation class ASimpleSessionBean 
*/ 
@Stateless(name="ASimpleSessionBean", **mappedName = "ASimpleSessionEJB"**) 
@Remote(ASimpleSessionBeanRemote.class) 
public class ASimpleSessionBean implements ASimpleSessionBeanRemote { 

    /** 
    * Default constructor. 
    */ 
    public ASimpleSessionBean() { 
     // TODO Auto-generated constructor stub 
    } 

@Override 
public void printThis(String print) { 
    // TODO Auto-generated method stub 
    System.out.println("ASimpleSessionBean : "+print); 
} 

} 

3: Die oben genannten Dateien, wenn im Glas verpackt erfolgreich auf dem Server bereitgestellt bekommen.

4: Wie pro EJB 3.0-Spezifikation sind die deployement Deskriptoren nicht mandatory.Hence, wird das Glas nicht ejb-jar.xml und weblogic-ejb-jar.xml

5 umfassen: Finden Sie, Bezug des EJB3.0 Annotationen gemäß der Weblogic Application Server Dokumentation:

Annotation : @Stateless 

Package: javax.ejb.Stateless 

Attribute : mappedName 

Description : 

Specifies the product-specific name to which the stateless session bean should be mapped. 
You can also use this attribute to specify the JNDI name of this stateless session bean. WebLogic Server uses the value of the mappedName attribute when creating the bean’s global JNDI name. In particular, the JNDI name will be: 
mappedName#name_of_businessInterface 
where name_of_businessInterface is the fully qualified name of the business interface of this session bean. 
For example, if you specify mappedName="bank" and the fully qualified name of the business interface is com.CheckingAccount, then the JNDI of the business interface is bank#com.CheckingAccount. 

6: zu der obigen Spezifikation entspricht, wobei die Probe auf dem EJB Anwendungsserver bereitgestellt hat, die Bindung Namen (wie in der JNDI-Struktur reflektiert wird), wie folgt:

ASimpleSessionEJB # com.serverside.ejb.session.ASimpleSessionBeanRemote

A jndi Lookup unter diesem Namen erfolgreich ist:

InitialContext.doLookup("ASimpleSessionEJB#com.serverside.ejb.session.ASimpleSesionBeanRemote"); 

7: Nun wir die Bindung Namen ein einfacher String dh der Lookup sein wollen muss sei etwas wie:

InitialContext.doLookup ("ASimpleSessionEJB");

8: Zur Umsetzung Point-7 haben wir versucht, die ejb-jar.xml und weblogic-ejb-jar.xml wie folgt (Sorry, konnte nicht herausfinden, wie mit anhängen/render XML-Dateien):

9: Trotz der Punkt-8 bleibt die Bindung Namen wie folgt:

ASimpleSessionEJB#com.serverside.ejb.session.ASimpleSessionBeanRemote 

10: Bitte leiten Sie uns über die Lösung und Umsetzung Point-7 zu besuchen.

Danke!

+0

Bitte lesen Sie meine Antwort im folgenden Thread: http://StackOverflow.com/Questions/8909573/how-to-access-ejb-from-a-Quartz-job/10885831#10885831 –

Antwort

0

Können Sie Ihre weblogic-ejb.xml irgendwie einfügen? Atleast Namenselement.

Können Sie auch angeben, wo Sie diesen Suchcode ausführen? Ich hoffe, dass es innerhalb des Web-Containers läuft, sonst wirst du die weblogic-ejb.xml nicht sehen. :)

Wenn nichts hilft, warum erstellen Sie nicht einfach eine Eigenschaftendatei, wo Sie Ihren Schlüssel und einen langen Remote-Namen angeben können und dann nur diesen Schlüssel zum Nachschlagen verwenden?

Prost.

JS

0

in dem WebLogic-ejb-jar.xml sollten Sie den WebLogic-Enterprise-Bean-Abschnitt mit einem jndi-namen Abschnitt hinzufügen können.Dies funktionierte perfekt für mich in den Weblogic-Versionen 10.3.1, 10.3.3 und 10.3.4. Ich stoße auf ein Problem mit 10.3.0. Der ejb scheint gut zu funktionieren, und der Jndi-Eintrag ist da, aber wenn ich versuche, ihn aufzurufen, bekomme ich, dass er die Bean-Klasse nicht finden kann. Ich bin mir nicht sicher, was das verursacht, aber hoffentlich wird der jndi-name Abschnitt für dich tun.

Viel Glück.

1

Dies ist eine Beispielkonfiguration von weblogic-ejb-jar.xml

<wls:weblogic-enterprise-bean>  
    <wls:ejb-name>BasketBean</wls:ejb-name>    
    <wls:jndi-name>BasketBean</wls:jndi-name> 
</wls:weblogic-enterprise-bean> 

Dann können Sie jndi Lookup wie diese machen: InitialContext.doLookup ("BasketBean");

Verwandte Themen