EJB + JSP: невозможно создать удаленный объект из интерфейса Home - PullRequest
0 голосов
/ 05 марта 2011

Я новичок в области J2EE / EJB и следую некоторым базовым примерам.Я реализовал очень простой класс, который суммирует 2 числа.У меня есть домашний и удаленный интерфейсы и сам Enterprise Bean (без сохранения состояния).

Adder.java //Remote interface
AdderHome.java //Home interface
AdderBean.java //The EJB class

При тестировании как приложения EJB все работает отлично.Но теперь я хотел бы протестировать его как страницу JSP, но я получаю сообщение об ошибке (на самом деле нет вывода) в тот момент, когда удаленный интерфейс создается из домашнего интерфейса.Я использую J2EE 1.4 с JBoss 4.

Вот код страницы JSP.Он должен печатать только одну строку.

<%@page import="javax.naming.*" %>
<%@page import="javax.rmi.PortableRemoteObject" %>
<%@page import="java.util.Properties" %>
<%@page import="com.lucasmariano.*" %>

<%
        //Preparing the properting to be put in the InitialContext
        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.put(Context.PROVIDER_URL, "localhost:1099");

        try {
            //Get an Initial Context               
            InitialContext jndiContext = new InitialContext(properties);
            System.out.println("got context");               

            //get a reference to the bean
            Object ref = jndiContext.lookup("Adder");
            System.out.println("got reference");


            //Get a reference to this to the bean's home interface
            AdderHome home = (AdderHome) PortableRemoteObject.narrow(ref, AdderHome.class);
            out.println("GETTING OBJECT <BR />");

            //create an Adder object from the Home interface

            //######  HERE IS THE PROBLEM!!!  #######
            Adder adder = home.create();
            out.println("ADDER OBJECT CREATED <BR />");
            out.println("2 + 5 = " + adder.add(2,5));

        }catch(Exception e ){
            System.out.println(e.toString());
        }
  %>

Нужно ли добавить какое-то новое значение в мой web.xml?

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Я согласен с Даффимо. То, что вы делаете, просто неправильно.

EJB - отличная технология, но EJB2 был просто злом. Он был спроектирован в башне из слоновой кости с единственной целью: сделать жизнь разработчиков максимально трудной.

В это время и в этот день нет оснований для начинать с EJB2. Единственная причина изучения EJB2 - это необходимость поддерживать какое-то старое унаследованное приложение, написанное на EJB2 (но тогда я предлагаю найти другую работу).

Несмотря на то, что EJB3 версии выше, всего на 1 версию выше. Это просто, легко, очень логично и получило много отзывов от сообщества. Но даже EJB3 довольно стар. Текущая версия - EJB3.1, которую можно использовать с Glassfish v3.1, JBoss AS 6 или Resin 4 (со Resin вы получите EJB3.1 lite +).

0 голосов
/ 05 марта 2011

Я бы не рекомендовал идти по этому пути. Скриплеты в JSP не одобряются.

Какой сервер приложений Java EE вы используете? Я надеюсь, что это Java EE 5 или выше. Интересно, вы начинаете со старого стандарта EJB?

...