Frage

Ich habe ein stateless EJB SessionBean mit bith @local und @Remote Anmerkungen. Der Code funktioniert gut in WebLogic Server. Jedoch darauf Websphere Bereitstellung gibt es folgende Ausnahme.

bm.ejs.container.EJBConfigurationException: BUSINESS_INTERFACE_DESIGNATED_AS_BOTH_REMOTE_AND_LOCAL: 'oracle.odc.session.ODCSession'

Die oracle.odc.session.ODCSession Business-Interface-Klasse kann nicht gleichzeitig remote und lokal sein.

Gibt es eine Abhilfe zur Verfügung, um es für Remote- und lokalen Aufruf ohne das Schreiben eigenes EJBs funktioniert?

War es hilfreich?

Lösung

Eine Abhilfe ist, eine Basis-Schnittstelle mit der Methode Erklärungen haben und dann eine lokale Schnittstelle hat und ein Remote-inteface, die die Basis-Schnittstelle erweitern, z.

public interface MyEJBBase {
    public void foo();
    public void bar();
}

@Local
public interface MyEJBLocal extends MyEJBBase {}

@Remote
public interface MyEJBRemote extends MyEJBBase {}

Andere Tipps

AFAIK gibt es keine Möglichkeit, die Fehler scheint ziemlich beschreibend.

Aus dem Bereich 4.9.7 der EJB 3.2-Spezifikation:

  

Das gleiche Business Interface kann sowohl eine lokale und eine Fern   Business Interface der Bohne.

Sie können Subinterfaces als Abhilfe verwenden:

public interface MyInterface { /* all the methods */ }
public interface MyRemoteInterface extends MyInterface { /* empty */ }

@Stateless
@Remote(MyRemoteInterface.class)
@Local(MyInterface.class)
public class MyBean { /* ... */ }

Beachten Sie, dass die Parameter und Rückgabewerte der Methoden auf dem Remote-Schnittstelle Pass-by-Wert sein, aber die Parameter und Rückgabewerten der Methoden auf dem lokalen Schnittstelle werden Pass-by-reference sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top