2010-11-24 11 views

Antwort

1

Jetzt habe ich mein Problem mit Annotationen und globale Verwendung der InitialContext-Klasse gelöst. Stateless Annotation und ejb-jar XML-Dateien und Zugriff auf die globale Jndi Adressen die Schlüssel für die Verwendung.

Zugangscode:

this.jndiAddress="ejb/service/IMyInterface"; 
Context context = new InitialContext(); 
IMyInterface object = (IMyInterface) context.lookup(this.jndiAddress); 
object.doSomething(); 

Service Code;

IMyInterface.java:

public interface IMyInterface { 

    void doSomething(); 

} 

MyClass.java:

@Remote(IMyInterface.class) 
@Stateless(mappedName="ejb/service/IMyInterface") 
public class MyClass implements IMyInterface { 

    @EJB 
    private IMyUserDao userDao; 

    @Override 
    public void doSomething() { 
     User user = userDao.get(1); 
     System.out.println(user.getName()); 
    } 

} 

EJB-jar.xml;

<?xml version="1.0" encoding="UTF-8"?> 
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0"> 
    <display-name>Service</display-name> 
    <enterprise-beans> 
     <session> 
      <ejb-name>MyClass</ejb-name> 
      <ejb-class>package.MyClass</ejb-class> 
     </session> 
     <session> 
      <ejb-name>UserDao</ejb-name> 
      <ejb-class>package.dao.UserDao</ejb-class> 
     </session> 
    </enterprise-beans> 
</ejb-jar> 
3

Ich folgte dem JNDI Tutorial online, um mir zu helfen, was ich brauchte. Es ist ein wenig alt (und für JDK 1.4.2 geschrieben), aber immer noch anwendbar. Sun/Oracle JNDI Tutorial.

+0

Danke Chris, ich lese dieses Tutorial, aber es ist nicht klar in diesem Tutorial, was ich brauche. Ich möchte zwei Projekte erstellen. der erste hat Servlets und verhält sich wie ein Client und der zweite verbindet sich mit der DB und liefert Daten an den Client. Also die erste nimmt Objekte von Sekunde mit JNDI. Aber meine Frage ist, "wie diese Konfiguration vorbereitet ist", gibt es die Frage dieser Frage in diesem Tutorial? Vielleicht muss ich ein drittes Projekt als Schnittstelle zwischen diesen beiden Projekten deklarieren. Haben Sie einen anderen Rat oder muss ich dieses Tutorial genauer lesen? –

+0

Beim Lesen dieses Lernprogramms stellen Sie möglicherweise fest, dass auf viele verschiedene Objekttypen über JNDI zugegriffen werden kann. Die nächste Herausforderung (falls noch nicht geschehen) besteht darin, dass auf einige Objekte direkt zugegriffen werden kann und auf andere per Referenz zugegriffen werden kann (abhängig davon, ob Sie sich im Container befinden oder nicht). Das ist eine Frage. Läuft Ihr Client in einem Container und Ihr DB-Zugriff in einem anderen? Ich gehe nicht davon aus. Als nächstes, wenn Sie DB-Zugriff verwenden, warum nicht nur entweder Entitäten oder Session Beans? Diese können Sie über JNDI erreichen und sind einfach mit Ihrem Container zu registrieren. Das wäre am einfachsten. –

0

FWIW, wenn jemand ihre eine benutzerdefinierte JNDI Ressource in Tomcat überprüfen JNDI tutorial haben will.

Verwandte Themen