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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятка с консептом, Иду по примерам, но... 
:(
    Опции темы
ShurikA
Дата 8.12.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Залез я накпнецто в J2EE.
Начинаю, как обычно с примеров.

По одному из примеров, настрочил вот такой код:
Код

package CRM;

import java.util.Calendar;
import javax.ejb.EJBException;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;

/**
 *
 * @author ShurikAg
 */
@Stateless
public class CRMBean implements CRMRemote {

    @PersistenceContext
    private EntityManager em;

    public void CreateCustomer(String name) {
        try {
            Customer cust = new Customer(name);
            cust.setCreationDate(Calendar.getInstance().getTime());
            em.persist(cust);
        } catch (Exception e) {
            e.printStackTrace();
            throw new EJBException(e.getMessage());
        }
    }
}


При попытке прогнать получаю следующее:
Код

java.lang.NullPointerException
        at CRM.CRMBean.CreateCustomer(CRMBean.java:35)
        at CRM.test.insertNewCustomer(test.java:51)
        at CRM.test.main(test.java:37)



Вроде как ошибка верная, на первый взгляд, но, опять ше цудя по примеру, и не одному, должно работать.
Что я упускаю?

Добавлено через 45 секунд
Кстати, тут тоже самое:
Код

public class test {

    @EJB
    private static CRMBean crm;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            test tst = new test();
            tst.insertNewCustomer();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Run test
     */
    public test() {
        
    }

    public void insertNewCustomer() {
        crm.CreateCustomer("Alex");
    }
}



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
MisterCleric
Дата 8.12.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Привет. Не знаю, как там в примере, но не все понятно по твоему коду
1. Как выглядит твой CRMRemote - именно интерфейс.
2. Действительно ли @PersistenceContext?
3. Как выглядит Customer? Сущности ли это т.е. Entity Bean?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
ShurikA
Дата 8.12.2008, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(MisterCleric @  8.12.2008,  11:09 Найти цитируемый пост)
2. Действительно ли @PersistenceContext?

Не понял твоего вопроса...


Цитата(MisterCleric @  8.12.2008,  11:09 Найти цитируемый пост)
1. Как выглядит твой CRMRemote - именно интерфейс.

Код


package CRM;

import javax.ejb.Remote;

/**
 *
 * @author ShurikAg
 */
@Remote
public interface CRMRemote {
    void CreateCustomer(
            String name);
}



Цитата(MisterCleric @  8.12.2008,  11:09 Найти цитируемый пост)
3. Как выглядит Customer? Сущности ли это т.е. Entity Bean? 

Код

package CRM;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author ShurikAg
 */
@Entity
@Table(name = "Customer")
@NamedQueries({@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c")})
public class Customer implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Basic(optional = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Column(name = "name", length = 255, nullable = false)
    @Basic(optional = false)
    private String name;
    @Column(name = "CreationDate", nullable = false)
    @Basic(optional = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;
    @Column(name = "UpdateDate", nullable = false)
    @Basic(optional = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date updateDate;

    /**
     * Default contractor
     */
    public Customer() {
    }

    public Customer(String name) {
        this.name = name;
    }

    public Customer(Integer id, String name, Date creationDate, Date updateDate) {
        this.id = id;
        this.name = name;
        this.creationDate = creationDate;
        this.updateDate = updateDate;
    }

    public Integer getId() {
        return id;
    }
    
    public Date getCreationDate() {
        return creationDate;
    }

    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Customer)) {
            return false;
        }
        Customer other = (Customer) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "CRM.Customer[id=" + id + "]";
    }
}



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
MisterCleric
Дата 8.12.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

2. Действительно ли @PersistenceContext?

Не понял твоего вопроса...


Ой, просто не дописал: Действительно ли он настроен? И видно, что твое приложение коннектися к базе?

или, по-моему у тебя вообще тут

Код

 @EJB
    private static CRMBean crm;


java.lang.NullPointerException.

Что-то я не помню, что бы так просто прошел EJB- injection...




--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
ShurikA
Дата 8.12.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(MisterCleric @  8.12.2008,  11:41 Найти цитируемый пост)
Ой, просто не дописал: Действительно ли он настроен? И видно, что твое приложение коннектися к базе?

Думаю что да, так как таблица создаётся.



Цитата(MisterCleric @  8.12.2008,  11:41 Найти цитируемый пост)
или, по-моему у тебя вообще тут

Выделить всёкод Java
1:
2:
    
 @EJB
    private static CRMBean crm;


java.lang.NullPointerException.

Что-то я не помню, что бы так просто прошел EJB- injection...


Она таки тут:
Код

        crm.CreateCustomer("Alex");


smile



--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
MisterCleric
Дата 8.12.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



дык у тебя 
Код

crm == null


попробуй ручками залукапить этот бин через JNDI.

От куда вообще вызывается метод main класса test?



--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
ShurikA
Дата 8.12.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Цитата(MisterCleric @  8.12.2008,  11:56 Найти цитируемый пост)
От куда вообще вызывается метод main класса test?

В каком смысле от куда?
Он сидит в том же самом CRM как и всё остальное...
Чую что гдето ступил smile


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
MisterCleric
Дата 8.12.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



ну и что, что он сидит в том же пакете.
Ты ручками из консоли вызываешь этот test класс? 
Я все-таки понимаю по твоим комментариям, что приложение ты подымаешь в EJB-контейнере. Раз таблица у тебя создается. Но ведь так EJB3 не тестятся. 

Для тестирования я вот нашел 
http://ejb3unit.sourceforge.net/Junit.html

А вообще можно и ручками с консоли, но для этого надо сам бин залукапить через JNDI

Код

Properties environment = new Properties();

environment.put(InitialContext.INITIAL_CONTEXT_FACTORY, org.jnp.interfaces.NamingContextFactory);
environment.put(InitialContext.PROVIDER_URL, "localhost:1099"); //если не переопределял порты в сервере приложений

Context ctx = new InitialContext(environment);

CRMRemote crm = (CRMRemote) ctx.lookup("[имя EAR]/CRMBean/remote");



это в метод main


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
ShurikA
Дата 8.12.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

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



Ага, значит я пытался запустить test из EJB контейнера smile 
Тоже не плохо smile

Спасибо.


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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