Добрый день. Есть проблемма с которой никак не могу разобраться. При попытке использования локального интерфйеса выпадает ошибка на клиенте. Код ошибки: Код | 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 проблемм нет. Помогите плиз Это сообщение отредактировал(а) hound82 - 7.10.2005, 14:56
|