2017-02-06 1 views
2

Meine Anwendungsstruktur istKlasse in lib/jar Zugang EJB in einem Ohr

MyEAR.ear 
    |-- MyWAR.war 
    |-- MyEjb.jar 
    |-- lib 
     |- data.jar 
     |- vo.jar 
     |- util.jar 
     |- jpa.jar  

myWAR.war hat eine Servlet-Klasse, die DataHelp.class Anrufe, die EJB-Aufruf hat.

// MyWAR.war 
Class servlet{ 
    DataHelper helper = new DataHelper(). 
    helper.getData(); 
} 

// lib/data.jar 
Class DataHelper{ 
    @EJB 
    MyEjb ejbBean; 

    public Object getData(){ 
     ejbBean.getData(); 
    } 
} 

// MyEJB.jar 
@Stateless 
@LocalBean 
public class MyEjb { 
    @PersistenceContext(unitName = "db.jpa.jar") 
    EntityManager em; 

    public Object getData(){ 
      // JPA 
    } 
} 

MyEjb ejbBean; in DataHelper ist null. Ich habe versucht, das Glas neben ejb.jar zu bewegen. Immer noch der gleiche Fehler.

Können Sie mir bitte helfen, die Verpackung zu konfigurieren. Ich brauche data.jar auch in einem anderen Projekt, also muss es ein unabhängiges Glas sein.

Danke.

+0

Mögliche Duplikat [Mein Ohr ist nicht in der Lage ejb Modulklassen finden] (http://stackoverflow.com/questions/41306341/my-ear-is-not -able-to-find-ejb-modul-classes) –

Antwort

1

Um die ejb inject in der DataHelper-Klasse korrekt zu verwenden, sollte sich data.jar innerhalb von MyEAR.ear als ejb jar-Modul befinden, nicht in lib. Wenn Sie es in anderen Projekten verwenden möchten, machen Sie es ähnlich, indem Sie es als EJB-Glas ins Ohr setzen. Dann fügen Sie den folgenden auf die application.xml

<module> 
    <ejb>data.jar</ejb> 
</module> 
+0

Wenn 'data.jar' in 'myEAR.ear' als ejb-jar-Modul verschoben wird ... wo endet es genau? Neben 'MyEjb.jar'? – Thufir

Verwandte Themen