I;m trying to code up a little example using JBoss Remoting 1.4.4 in JBoss AS 4.0.4.GA, and JBoss Serialization. This example is based on the "Trasporters sample - proxy" example in the user guide.
I've got an MBean that manages the lifecycle of a socket based Remoting server that has a few methods in it. The client can get a reference to the server (hosted at socket://localhost:5400/?serializationtype=jboss), and call a method on the server that returns a String with no problems. However, if I try to create a proxy for a pojo on the client and pass that into the server, I get an InstatiationException from within the remoting framework when I call a method on the server and pass in the proxy. Here is a snippet from the TestClient main method: | //Get the remote server | remote = (TestRemote) TransporterClient.createTransporterClient( | "socket://localhost:5400/?serializationtype=jboss", | TestRemote.class); | | //Just test out getting a simple String | String classPath = remote.getMyClasspath(); | System.out.println("Server Classpath: " + classPath); | | //Create a new PersonImpl which implements a Person interface | PersonImpl aPerson = new PersonImpl("Chris DeLashmutt"); | aPerson.setAge(31); | System.out.println("Asserting Person " + aPerson.getName() | + " with age of " + aPerson.getAge()); | | //Create a local server for the Person proxy | server = TransporterServer.createTransporterServer( | "socket://localhost:5401/?serializationtype=jboss", | aPerson, Person.class.getName()); | | //Create the proxy to pass to the server | Person personProxy = (Person) TransporterClient | .createTransporterClient( | "socket://localhost:5401/?serializationtype=jboss", | Person.class); | | //Pass the person to the server | remote.assertFact(personProxy); | | //Have the server set a random age on the Person through the proxy | System.out.println("Fireing rules"); | remote.applyRules(); | | //Show the new age of the person | System.out.println("Person " + aPerson.getName() | + " now has age of " + aPerson.getAge()); | The server is very simple, and the exception I get is on the server side, but before my method actually gets invoked. The Person interface just specifies a couple getters/setters for name and age, and the PersonImpl is just a POJO with a no-arg constructor, and a String constructor to set the name. The exception I get is a SerializationException caused by an InstantiationException. It looks like the error is coming from the Remoting code trying to instantiate an org.jboss.remoting.transport.local.LocalClientInvoker, but there isn't any no-arg constructor for that class, so it fails. | 13:55:11,187 ERROR [ServerThread] failed | org.jboss.serial.exception.SerializationException: Could not create instance of org.jboss.remoting.transport.local.LocalClientInvoker - org.jboss.remoting.transport.local.LocalClientInvoker | at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:327) | at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:239) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353) | at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273) | at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353) | at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273) | at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.ProxyPersister.readData(ProxyPersister.java:66) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.ArrayPersister.readObjectArray(ArrayPersister.java:196) | at org.jboss.serial.persister.ArrayPersister.readData(ArrayPersister.java:172) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353) | at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273) | at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353) | at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273) | at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411) | at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81) | at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639) | at org.jboss.serial.io.JBossObjectInputStream.readObjectOverride(JBossObjectInputStream.java:165) | at java.io.ObjectInputStream.readObject(ObjectInputStream.java:333) | at org.jboss.remoting.serialization.impl.jboss.JBossSerializationManager.receiveObject(JBossSerializationManager.java:127) | at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66) | at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:350) | at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:412) | at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:239) | Caused by: java.lang.InstantiationException: org.jboss.remoting.transport.local.LocalClientInvoker | at java.lang.Class.newInstance0(Class.java:335) | at java.lang.Class.newInstance(Class.java:303) | at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:319) | ... 44 more | What am I doing wrong here? View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3964672#3964672 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3964672 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user