Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EJB 2.0 ejbLoad() NullPointerException 
V
    Опции темы
MaxPayneC
Дата 3.6.2010, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Здравствуйте. Есть бин, у него есть несколько инстанс-полей и метод ejbLoad():

Код

    public void ejbLoad() throws RemoteException
    {
        Properties properties = new Properties();
        properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        properties.put(Context.PROVIDER_URL, "localhost:1099");
        try
        {
            Context initialContext = new InitialContext(properties);

            Connection connection = ((DataSource) initialContext.lookup("java:jbdc/oracle/test")).getConnection();
            try
            {
                PreparedStatement loadStatement = connection.prepareStatement("select car_name from cards where car_id = ?");
                try
                {
                    loadStatement.setInt(1, this.id);
                    ResultSet carInfoResultSet = loadStatement.executeQuery();
                    try
                    {
                        if (!carInfoResultSet.next())
                        {
                            throw new FinderException("Car not found");
                        }

                        this.name = carInfoResultSet.getString(1);
                    }
                    finally
                    {
                        carInfoResultSet.close();
                    }
                }
                finally
                {
                    loadStatement.close();
                }
            }

            finally

            {
                connection.close();
            }

        }
        catch (Exception ex)
        {
            throw new RemoteException("Exception while removing entity", ex);
        }

    }


Когда клиент вызывает remove() на home-интерфейсе, контейнер вызывает ejbLoad() и случается NullPointerException на строке 16, вызванная тем, что инстанс-поле с основным ключом есть null. В чем может быть причина этого?
PM   Вверх
MaxPayneC
Дата 3.6.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Дополнительные подробности: работает это все под сановской жвм 1.6.0.20, апп-сервер жбосс 4.2.3.

Очень интересно ведет себя бин: при вызове remove() и соответствующем вызове ejbLoad() контейнером this.entityContext.getPrimaryKey() возвращает объект класса remote-интерфейса бина. При вызове же ejbStore() (скажем, при попытке поменять значения полей) - this.entityContext.getPrimaryKey() возвращает Integer. Дескриптор развертывания:

Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
        "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
    <description>com.netcracker.ejbtest.bmp.Car deployment descriptor</description>
    <display-name>com.netcracker.ejbtest.bmp.Car</display-name>
    <enterprise-beans>
        <entity>
            <description>com.netcracker.ejbtest.bmp.Car deployment descriptor
            </description>
            <display-name>Car</display-name>
            <ejb-name>Car</ejb-name>
            <home>com.netcracker.ejbtest.bmp.CarHome</home>
            <remote>com.netcracker.ejbtest.bmp.Car</remote>
            <ejb-class>com.netcracker.ejbtest.bmp.CarBean</ejb-class>
            <persistence-type>Bean</persistence-type>
            <prim-key-class>java.lang.Integer</prim-key-class>
            <reentrant>False</reentrant>
            <abstract-schema-name>Car1</abstract-schema-name>
        </entity>
    </enterprise-beans>
</ejb-jar>


Судя по странному поведению метода getPrimaryKey(), я где-то накосячил именно в дескрипторе. Никто не подскажет, где именно?
PM   Вверх
MaxPayneC
Дата 3.6.2010, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Как обычно, проблема в моих кривых руках smile Вызывал у home-интерфейса home.remove(car), в то время как следует home.remove(id).
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1079 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.