java.rmi.RemoteException: RemoteException occurred in server
asty Feb 28, 2005 5:35 AMHi,
I am trying to implement a simple shopping cart using stateful Session Bean.
I am passing an item from the client and bean is supposed to add this item in an ArrayList object and return this ArrayList object.
I don't know what's going wrong.
This is the code of the Session bean:
package cart.sessionbean; import java.util.ArrayList; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** /** * @ejb.bean name="MyCartEJB" * jndi-name="MyCartEJBBean" * type="Stateful" * @ejb.dao class="cart.sessionbean.MyCartEJBDAO" * impl-class="cart.sessionbean.dao.MyCartEJBDAOImpl" * @ejb.resource-ref res-ref-name="jdbc/OracleDS" * res-type="javax.sql.Datasource" * res-auth="Container" * @jboss.resource-ref res-ref-name="jdbc/OracleDS" jndi-name="java:/OracleDS" **/ public abstract class MyCartEJBBean implements SessionBean { private ArrayList myCart; protected SessionContext ctx; /** * The ejbCreate method * @ejb.create-method * */ public void ejbCreate (ArrayList myCart)throws javax.ejb.CreateException { System.out.println("Entering MyCartEJBBean.ejbCreate"); this.myCart=myCart; System.out.println("Leaving MyCartEJBBean.ejbCreate"); } public void setSessionContext(javax.ejb.SessionContext ctx) { this.ctx=ctx; } public void unsetSessionContext() { this.ctx=null; } /** * @ejb.interface-method * view-type="remote" * @dao.call name="addToCart" **/ public java.util.ArrayList addToCart(String itemID,int quantity) { return null; } /** * @ejb.interface-method * view-type="remote" */ public void setMyCart(ArrayList myCart) { this.myCart = myCart; } /** * @ejb.interface-method * view-type="remote" */ public ArrayList getMyCart() { return myCart; } }
and this is the client:
package cart.client; import java.rmi.RemoteException; import java.util.Hashtable; import java.util.ArrayList; import javax.ejb.CreateException; import javax.naming.InitialContext; import javax.naming.NamingException; import cart.sessionbean.dao.CartContents; /** * @author Abhishek * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class ShoppingCartClient { CartContents cartObject=new CartContents(); ArrayList resultCart=new ArrayList(); int size=0; private cart.sessionbean.MyCartEJBHome getHome() throws NamingException { return (cart.sessionbean.MyCartEJBHome) getContext().lookup( cart.sessionbean.MyCartEJBHome.JNDI_NAME); } private InitialContext getContext() throws NamingException { Hashtable props = new Hashtable(); props.put( InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099"); InitialContext initialContext = new InitialContext(props); return initialContext; } public void testBean() { try { cart.sessionbean.MyCartEJB myBean = getHome().create(resultCart); //-------------------------------------- //This is the place you make your calls. System.out.println("Adding item to cart"); resultCart=myBean.addToCart("id001",1); System.out.println("Going to Sleep for 1 min ......................... " ); Thread.sleep(60000); // sleep for 1 minute. //System.out.println("Reply from bean after 1min " + myBean.getMyCart()); resultCart=myBean.getMyCart(); size=resultCart.size(); for(int i=0;i<size;i++) { cartObject=(CartContents)resultCart.get(i); System.out.println(cartObject.getItemid()); System.out.println(cartObject.getQuantity()); } System.out.println("Going to Sleep for 1 min ......................... " ); Thread.sleep(60000); System.out.println("Adding item to cart"); resultCart=myBean.addToCart("id002",2); resultCart=myBean.getMyCart(); for(int i=0;i<size;i++) { cartObject=(CartContents)resultCart.get(i); System.out.println(cartObject.getItemid()); System.out.println(cartObject.getQuantity()); } } catch (RemoteException e) { e.printStackTrace(); } catch (CreateException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } catch (InterruptedException e) { } } public static void main(String[] args) { ShoppingCartClient test = new ShoppingCartClient(); test.testBean(); } }
And this is the error message I am getting when I run the client:
Adding item to cart java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.ServerException: RuntimeException; nested exception is: java.lang.ClassCastException at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:292) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:534) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133) at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source) at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:135) at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:87) at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46) at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45) at org.jboss.proxy.ejb.StatefulSessionInterceptor.invoke(StatefulSessionInterceptor.java:104) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85) at $Proxy1.addToCart(Unknown Source) at cart.client.ShoppingCartClient.testBean(ShoppingCartClient.java:52) at cart.client.ShoppingCartClient.main(ShoppingCartClient.java:93) Caused by: java.rmi.ServerException: RuntimeException; nested exception is: java.lang.ClassCastException at org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:360) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) at org.jboss.ejb.StatefulSessionContainer.internalInvoke(StatefulSessionContainer.java:410) at org.jboss.ejb.Container.invoke(Container.java:674) 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:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:549) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:359) 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:324) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:534) Caused by: java.lang.ClassCastException at cart.sessionbean.MyCartEJBSession.getDao(MyCartEJBSession.java:44) at cart.sessionbean.MyCartEJBSession.addToCart(MyCartEJBSession.java:56) 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:324) at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(StatefulSessionContainer.java:878) at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186) at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(StatefulSessionInstanceInterceptor.java:271) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243) at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191) ... 21 more
Please help me. Thanks,
Asty