Oracle ADF с клиентом EJB3 - PullRequest
       34

Oracle ADF с клиентом EJB3

0 голосов
/ 01 февраля 2012

У меня есть указатель (JNDI) на сервис EJB3, который был создан на другой стороне канала связи.Или, другими словами, он был создан на сервере приложений наших клиентов.Теперь мне нужно сделать интерфейс на основе ADF для вызова этого EJB3.У меня нет проблем с интерфейсом, но я борюсь с тем, как вызвать EJB3.Должен ли я сделать это в своем бэк-бине, как это сделано клиентом:

public class SessionEJBClient {
    public static void main(String[] args) {
        try {
            final Context context = getInitialContext();
            SessionEJB sessionEJB = (SessionEJB)context.lookup("MyApp-SessionEJB#org.test.SessionEJB");
        } catch (CommunicationException ex) {
            System.out.println(ex.getClass().getName());
            System.out.println(ex.getRootCause().getLocalizedMessage());
            System.out.println("\n*** A CommunicationException was raised.  This typically\n*** occurs when the target WebLogic server is not running.\n");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static Context getInitialContext() throws NamingException {
        Hashtable env = new Hashtable();
        // WebLogic Server 10.x connection details
        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "t3://serverhost:serverport");
        return new InitialContext(env);
    }
}

Или есть ли другой способ сделать это?Или, другими словами, как правильно ссылаться и вызывать удаленный EJB3?

10x

Ответы [ 2 ]

0 голосов
/ 03 февраля 2012

ADF может работать поверх POJO или сессионных EJB.Таким образом, вы бы написали слой Java, который вызывает EJB, - тогда вы представите этот слой Java как элемент управления данными ADF, а затем сможете перетаскивать свой путь для создания пользовательских интерфейсов ADF.http://blogs.oracle.com/shay/2009/07/java_class_data_control_and_ad.html http://blogs.oracle.com/shay/2009/01/insert_update_for_jpaejb_30_wi.html

Или, если вы предпочитаете пропустить слой привязки ADF, вы можете написать управляемые bean-компоненты, которые будут вызывать EJB, а затем привязывать интерфейс ADF непосредственно к этим bean-компонентам.

0 голосов
/ 02 февраля 2012

Если вы имеете в виду «и уважать шаблон MVC», то лучшим способом будет переопределение Entity Object и доступ к EJB оттуда.Тогда созданный поверх него виртуальный объект может дать вам «нормальный» уровень ADF BC - тогда вы создадите прикладной модуль, и он будет представлен как элемент управления данными, и вы можете декларативно построить свою страницу поверх этого.Однако слой ADFBC, вероятно, слишком толстый для ваших нужд.

Итак ... если вы не хотите использовать ADF BC, вы можете создать bean-компонент Sessionless без состояния (снова на уровне модели), который будет действовать как Фасад вокруг EJB и делегировать ему вызовы.Преимущество в обоих случаях заключается в отделении бизнес-логики (я полагаю, EJB?) От слоев представления, и в ADF вы можете создать элемент управления данными из уровня ADF BC или Session Bean и использовать его в качестве основы для страниц Faces ADF..

...