2016-07-07 13 views
1

Heute habe ich einige Experimente mit EJBs gemacht.Aufrufen von EJB mit geänderter Schnittstelle

JavaEE 6

Websphere 8.0.x

Ich habe eine Schnittstelle einige entfernten Methoden definieren:

interface Calculator{ 
    int add(int x, int y); 
    int mul(itn x, int y); 
} 

Diese Schnittstelle durch ein EJB implementiert ist.

Außerdem habe ich eine andere EJB die Rechner-EJB aus einer anderen Anwendung aufrufen (Ohr). Also insgesamt habe ich zwei Ear-Dateien eingesetzt, alles funktioniert gut.

Nun änderte ich die Rechner-Schnittstelle, ich ließ die mul-Methode, aber in der EJB-Klasse Implementierung der mul-Methode wird noch implementiert, ich die @Override Annotation nur entfernt. Jetzt habe ich das Ohr mit der EJB implementiert, die die geänderte Schnittstelle implementiert.

Zu meiner Überraschung das andere Ohr-Anwendung ist noch in der Lage die mul-Methode aufzurufen.

Gehört das zum EJB-Standard?

Danach habe ich die Calculator-Schnittstelle zu Calculator2 umbenannt und die EJB implementiert diese neue Schnittstelle implementiert. Die andere Ohr-Anwendung, die nur die alte Calculator Schnittstelle hat, ist immer noch in der Lage, die Methoden auf der neu implementierten EJB aufzurufen, die nur die neue Calculator2-Schnittstelle implementiert.

Gleiche Frage: Ist dieser Teil des EJB-Standard?

Antwort

1

Dies sollte der "No Interface-View" der EJB3.1 Spezifikation sein.

Alle Methoden, die für eine EJB öffentlich sind, können ohne eine Schnittstelle zugegriffen werden. Aber ich bin mir nicht sicher, ob Sie das NoInterfaceView parallel zu den Interfaces haben können, die möglicherweise nicht der Spezifikation entsprechen.

+0

wahr, verhält es mich wie eine nicht-Schnittstelle Ansicht, aber der Client in einem anderen appliaction/Ohr und verwendet eine (alte) Schnittstelle zur Injektion. Seltsam, dass es funktioniert – coder

Verwandte Themen