Hi All, I am receiving the following error when trying to reference 2 Stateful Session beans (TransactionPersistenceContext & ExtendedPersistenceContext): -------------------------------------------------------------------------------------- Distributing D:\Test\EJB3ex511-client\dist\EJB3ex511-client.jar to [EMAIL PROTECTED] Deploying D:\Test\EJB3ex511-client\dist\EJB3ex511-client.jar Deploying D:\Test\EJB3ex511-client\dist\EJB3ex511-client.jar Applicaton Deployed Operation start started Operation start completed run-deploy: run-tool: run-jar: log4j:WARN No appenders could be found for logger (org.jboss.security.SecurityAssociation). log4j:WARN Please initialize the log4j system properly. no cabin should be null: null Master Suite 1 1 3 Updating detached cabin instance with new bed count of 4 Finding cabin to see it has been updated with a merge() on server new bed count is: 4 javax.naming.NamingException: Could not dereference object [Root exception is java.lang.reflect.UndeclaredThrowableException] at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1150) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:705) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587) at javax.naming.InitialContext.lookup(InitialContext.java:392) at ejb3ex511client.Main.main(Main.java:50) Caused by: java.lang.reflect.UndeclaredThrowableException at $Proxy1.createProxy(Unknown Source) at org.jboss.ejb3.JndiProxyFactory.getObjectInstance(JndiProxyFactory.java:52)
-------------------------------------------------------------------------------------- Here are the codes for 1 Stateless (TravelAgentBean - pre-requisite) & 1 Stateful (TransactionPersistenceContextBean) session beans and a Client manipulating these beans: @Stateless | public class TravelAgentBean implements TravelAgentRemote | { | @PersistenceUnit(unitName="EJB3ex51") private EntityManagerFactory factory; | @PersistenceContext(unitName="EJB3ex51") private EntityManager manager; | | public void createCabin(Cabin cabin) | { | manager.persist(cabin); | } | | public Cabin findCabin(int pKey) | { | return manager.find(Cabin.class, pKey); | } | | public void updateCabin(Cabin cabin) | { | manager.merge(cabin); | } @Stateful | public class TransactionPersistenceContextBean implements TransactionPersistenceContextRemote | { | @PersistenceContext(unitName="titan", type=PersistenceContextType.TRANSACTION) | private EntityManager manager; | | private Cabin cabin; | | public void setCabin(int pk) | { | cabin = manager.find(Cabin.class, pk); | } | | public void updateBedCount(int newBedCount) | { | cabin.setBedCount(newBedCount); | } | | @Remove | public void remove() | { | } | } public static void main(String[] args) { | | try | { | Context jndiContext = getInitialContext(); | Object ref = jndiContext.lookup("travelagent.TravelAgentRemote"); | TravelAgentRemote dao = (TravelAgentRemote)ref; | | Cabin noCabin = dao.findCabin(1); | System.out.println("no cabin should be null: " + noCabin); | | Cabin cabin_1 = new Cabin(); | cabin_1.setId(1); | cabin_1.setName("Master Suite"); | cabin_1.setDeckLevel(1); | cabin_1.setShipId(1); | cabin_1.setBedCount(3); | | dao.createCabin(cabin_1); | | Cabin cabin_2 = dao.findCabin(1); | System.out.println(cabin_2.getName()); | System.out.println(cabin_2.getDeckLevel()); | System.out.println(cabin_2.getShipId()); | System.out.println(cabin_2.getBedCount()); | | System.out.println("Updating detached cabin instance with new bed count of 4"); | cabin_2.setBedCount(4); | dao.updateCabin(cabin_2); | | System.out.println("Finding cabin to see it has been updated with a merge() on server"); | Cabin cabin_3 = dao.findCabin(1); | System.out.println("new bed count is: " + cabin_3.getBedCount()); | | ref = jndiContext.lookup("travelagent.TransactionPersistenceContextRemote"); | TransactionPersistenceContextRemote txBean = (TransactionPersistenceContextRemote)ref; | | Cabin fetchedCabin = dao.findCabin(1); | int oldBedCount = fetchedCabin.getBedCount(); | | System.out.println("Set up transaction persistence context stateful bean"); | txBean.setCabin(1); | txBean.updateBedCount(5); | | fetchedCabin = dao.findCabin(1); | System.out.println("Cabin bed count will still be " + oldBedCount + ": " + fetchedCabin.getBedCount()); | | System.out.println("Set up extended persistence context stateful bean"); | | ref = jndiContext.lookup("travelagent.ExtendedPersistenceContextRemote"); | ExtendedPersistenceContextRemote extendedBean = (ExtendedPersistenceContextRemote)ref; | | extendedBean.setCabin(1); | extendedBean.updateBedCount(5); | | fetchedCabin = dao.findCabin(1); | System.out.println("Cabin bed count will be 5: " + fetchedCabin.getBedCount()); | | // cleanup | txBean.remove(); | extendedBean.remove(); | | } | catch (javax.naming.NamingException ne) | { | ne.printStackTrace(); | } | } | | public static Context getInitialContext() | throws javax.naming.NamingException | { | return new javax.naming.InitialContext(); | } I have tried to split the client into separate classes but the outcome is still the same. I am running Netbeans 5.5, JBoss 4.0.5 AS on Windows XP platform. I have struggled with this issue for many days after trying different method of deployment including using both sun-appserver-pe9.0 & JBoss 4.0.5 AS without success. This exercise is from workbook (ex05_1), title EJB 3.0 by Bill Burke. Any assistance would be very much appreciated. Thanks, Henry View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4019038#4019038 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4019038 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user