# JMS Objektzugriff Request Reply erzeugt lediglich Kopie



## Guest (9. Jun 2008)

Folgendes Problem, versuche ein Objekt vom Server zu beziehen und über ein Interface auf ClientSeite Daten vom OriginalObjekt zu ändern.

Client:

```
...
ObjectMessage response = (ObjectMessage)receiver.receive();
     Test test = (Test)response.getObject(); //Test ist das Interface zum Objekt auf dem Server
     //test.setTest("Das ist ein Test");
     System.out.println(test.getTest());
...
```

Server:

```
...
Test text = new Test();
  
   Queue tempQueue = (Queue) request.getJMSReplyTo();
   ObjectMessage response = session.createObjectMessage(); 
   
   //TextMessage response = session.createTextMessage();
   
   //response.setText(text);
   response.setObject(text);
   QueueSender sender = session.createSender(tempQueue);
   sender.send(response);
```

Das geht auch alles, nur das der Client nur eine Kopie vom OriginalObjekt bezieht. Das heißt alle Änderungen über set-Methoden sind nur lokal für den Client gültig. Wie kann ich auf das Server Objekt zugreifen.

Für alle Antworten im Voraus vielen Dank.
Grüsse.
Conrad.


----------



## lhein (9. Jun 2008)

In meinen Augen wäre dieses Verhalten auch absolut logisch. Dein Server sendet ein Objekt per ObjectMessage an einen Empfänger. Dieser hat nun das Objekt und kann es ändern. Damit der Server das auch mitbekommt, musst Du das geänderte Objekt auch zurücksenden. 
Direktes Ändern von Objekteigenschaften eines Serverobjekts per JMS wäre mir zumindest neu.

lhe


----------



## Guest (9. Jun 2008)

Vielen Dank für die Antwort.
Hab verstanden.

Grüsse
Conrad


----------



## Guest (9. Jun 2008)

Muss hier nochmal nachhaken. Auf der ClientSeite steht mir ja nur das Interface zu der Klasse zu Verfügung, da sich ja die Anwendungslogik auf der ServerSeite befinden sollte. Da ensteht, sofern ich das Objekt vom Client an den Server zurücksenden will ein Problem:

Client:

```
...
bjectMessage response = (ObjectMessage)receiver.receive();
this.test = (Test)response.getObject();
     
this.test.setTest("Das ist ein Test");
     
     
request.setObject(this.test); //this.test ist das Interface zu der Klasse Test auf der ServerSeite
...
```

Nur ein Interface kann ich nicht serialisieren. Wie kann ich es dann an den Server übertragen und ist dort überhaupt ein CAST auf das Interface möglich?


----------



## Guest (9. Jun 2008)

Habs jetzt die Objekte die über das Interface zu beziehen sind können easy wieder zurückgesendet werden.


----------

