كيفية تكوين EJB على حد سواء المحلية والبعيدة على WebSphere

StackOverflow https://stackoverflow.com/questions/4024060

  •  26-09-2019
  •  | 
  •  

سؤال

لدي جلسة EJB عديمة الجنسية مع BITHLOCAL و remote. الرمز يعمل بشكل جيد في خادم WebLogic. ولكن عند نشره على WebSphere ، فإنه يعطي استثناءً التالي.

bm.ejs.container.ejbConfigurationException: Business_Interface_Designated_AS_BOTH_REMOTE_AND_LOCAL: 'Oracle.odc.session.odcsession'

لا يمكن أن تكون فئة واجهة Business Oracle.odc.session.odcsession بعيدة ومحلية.

هل هناك أي حلول متاح لجعله يعمل دون كتابة EJBs منفصلة عن الاحتجاج عن بُعد ومحلي؟

هل كانت مفيدة؟

المحلول

أحد الحلول هو أن يكون لديك واجهة أساسية مع إعلانات الطريقة ثم الحصول على واجهة محلية ودخل عن بعد ، والتي تمد الواجهة الأساسية ، على سبيل المثال

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

@Local
public interface MyEJBLocal extends MyEJBBase {}

@Remote
public interface MyEJBRemote extends MyEJBBase {}

نصائح أخرى

AFAIK لا توجد طريقة ، يبدو أن الخطأ وصفيًا.

من القسم 4.9.7 من مواصفات EJB 3.2:

لا يمكن أن تكون واجهة العمل نفسها واجهة تجارية محلية وبعيدة عن الفول.

يمكنك استخدام الأماكن الفرعية كحل بديل:

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

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

لاحظ أن المعلمات وقيم الإرجاع للطرق الموجودة على الواجهة البعيدة ستكون ذات قيمة ، لكن المعلمات وقيم الإرجاع للطرق على الواجهة المحلية ستكون مرجعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top