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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EJB - Local Interface + JBoss, вопрос 
:(
    Опции темы
hound82
  Дата 7.10.2005, 14:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрый день.
Есть проблемма с которой никак не могу разобраться.

При попытке использования локального интерфйеса выпадает ошибка на клиенте.
Код ошибки:
Код

Exception in thread "main" java.lang.ClassCastException
    at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
    at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
    at task2.model.DAO.CustomerDAO.<init>(CustomerDAO.java:37)
    at task2.model.Main.start(Main.java:22)
    at task2.Runner.main(Runner.java:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:86)
Caused by: java.lang.ClassCastException: $Proxy0
    at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)
    ... 9 more

Код клиента:

Код

public class CustomerDAO {


    private LocalCustomerHome localHome;

    private final String JNDI_NAME = "ejb/Customer";

    public CustomerDAO() throws NamingException {
        Context ctx;
        ctx = new InitialContext();
        Object ref = ctx.lookup(JNDI_NAME);
        localHome = (LocalCustomerHome) PortableRemoteObject.narrow(ref,
                LocalCustomerHome.class);

    }


CustomerBean:
Код

public abstract class CustomerBean implements EntityBean {
    public CustomerBean() {
    }

    public void setEntityContext(EntityContext entityContext) throws EJBException {
    }

    public void unsetEntityContext() throws EJBException {
    }

    public void ejbRemove() throws RemoveException, EJBException {
    }

    public void ejbActivate() throws EJBException {
    }

    public void ejbPassivate() throws EJBException {
    }

    public void ejbLoad() throws EJBException {
    }

    public void ejbStore() throws EJBException {
    }

    public abstract String getCustomerName();

    public abstract void setCustomerName(String customerName);

    public abstract LocalAddress getAddress();

    public abstract void setAddress(LocalAddress address);

    public String ejbCreate(String customerName) throws CreateException {
        setCustomerName(customerName);
        return null;
    }

    public void ejbPostCreate(String customerName) throws CreateException {
    }
}


LocalCustomer:
Код

public interface LocalCustomer extends EJBLocalObject {
    String getCustomerName();

    void setCustomerName(String customerName);

    LocalAddress getAddress();

    void setAddress(LocalAddress address);
}


LocalCustomerHome:
Код

public interface LocalCustomerHome extends EJBLocalHome {
    LocalCustomer findByPrimaryKey(String key) throws FinderException;

    LocalCustomer create(String customerName) throws CreateException;
}


Контейнер JBoss 4.0.2
Дискрипторы:
ejb-jar
Код

      <entity>
          <ejb-name>CustomerEJB</ejb-name>
          <home>ejb2.CustomerHome</home>
          <remote>ejb2.Customer</remote>
          <local-home>ejb2.LocalCustomerHome</local-home>
          <local>ejb2.LocalCustomer</local>
          <ejb-class>ejb2.CustomerBean</ejb-class>
          <persistence-type>Container</persistence-type>
          <prim-key-class>java.lang.String</prim-key-class>
          <reentrant>False</reentrant>
          <cmp-version>2.x</cmp-version>
          <abstract-schema-name>CustomerEJB</abstract-schema-name>
          <cmp-field>
              <field-name>customerName</field-name>
          </cmp-field>
          <cmp-field>
              <field-name>address</field-name>
          </cmp-field>
          <primkey-field>customerName</primkey-field>
      </entity>


jboss
Код

        <entity>
                <ejb-name>CustomerEJB</ejb-name>
                <jndi-name>ejb/Customer</jndi-name>
                <local-jndi-name>ejb/Customer</local-jndi-name>
        </entity>


jbosscmp-jdbc
Код

        <entity>
            <ejb-name>CustomerEJB</ejb-name>
            <cmp-field>
                <field-name>customerName</field-name>
                <jdbc-type>VARCHAR</jdbc-type>
                <sql-type>VARCHAR2(20)</sql-type>
            </cmp-field>
            <cmp-field>
                <field-name>address</field-name>
                <jdbc-type>VARCHAR</jdbc-type>
                <sql-type>VARCHAR2(20)</sql-type>
            </cmp-field>
        </entity>


При работе только с remote проблемм нет.
Помогите плиз smile

Это сообщение отредактировал(а) hound82 - 7.10.2005, 14:56
  Вверх
ZAVS
Дата 10.10.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 25.2.2004
Где: ЕРЕВАН

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



если используешь local interface не надо кастить при помощи PortableRemoteObject
касти прямо


Код

public class CustomerDAO {


    private LocalCustomerHome localHome;

    private final String JNDI_NAME = "ejb/Customer";

    public CustomerDAO() throws NamingException {
        Context ctx;
        ctx = new InitialContext();
        Object ref = ctx.lookup(JNDI_NAME);
        localHome = (LocalCustomerHome) ref;

    }


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

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

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


 




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


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

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