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?
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