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

Reply via email to