ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
397
397
EMPFEHLEN
-
26.06.07 08:41 #1
- Registriert seit
- Apr 2007
- Beiträge
- 191
Hallo
arbeite mich gerade in RMI ein und überlege gerade ob ich meine objekte als remote objekte versende oder seralisiere.
Das Programm ist eine Datenbankapp, wobei der client methoden vom server aufruft und dieser die dafür benötigten daten aus der datenbank abruft und in objekte speichert, diese dem client zurückliefert, damit dieser sie in der gui anzeigen kann, der client verändert keine daten sondern ist bloß fürs anzeigen und abfragen von benutzeingaben zuständig. Aus denen generiert er wieder serveranfragen und so weiter.
die Objekte bestehen aus simplen datentypen wie int aber auch aus arrays oder hashmaps, oder aus anderen Objekten( wie z.b Person hat Adresse). Kann ich diese jetzt infach durch hhinzufügen von
serialisieren und als objekte übertragen oder sollte ich sie besser als remote objekte übertragen.Code :1
...implements serialize
-
26.06.07 13:59 #2
- Registriert seit
- Apr 2007
- Beiträge
- 191
Keiner ne idee und kann mir sagen ob es reicht zu serialisieren
-
Hab deine Anfrage leider erst jetzt gefunden, also alle Objekte die du über RMI übertragen willst müssen serialisierbar sein und ebenso auch die Unterobjekte falls du sie selbst dek. hast.
Zu beachten ist das es auch java Objekte gibt die nicht serial. sind z.B. Streams des weiteren musst du bei allen Container Objekten wie java.util.Vector etc.tiefe Kopien machen musst da diese sonst nur Referenzen enthalten.
Tipp: Wer sich mit RMI auskennt sollte sich auch mal mit Corba beschäftigen.
Wenn du RMI einsetzt musst du dich auch mal mit dessen Rechtekonzept auseinandersetzen
Falls noch Fragen über RMI immer her damit
-
13.07.07 12:19 #4
- Registriert seit
- Apr 2007
- Beiträge
- 191
Hallo, wie meinst du das mit den tiefen kopieren habe ja klassen die ärrayliste enthalten reicht es da nicht wenn ich schreibe implements serializable muss ich da zusätzlich noch was machen?
-
Nein ich denke das reicht nicht bin mir bei ArrayList nicht sicher aber denke das es das gleiche Problem ist:
Bsp: du füllst einen java.util.Vector(); mit n byte arrays und übertragst das Object welches den Vector enthält über RMI zum Client dann beinhaltet der vector nicht die eigentlichen byte arrays sondern nur die Speicheradd. und zwar die wo die byte arrays im Speicher des Servers liegen und das nützt dir aufm client nicht mehr viel.
lad mal den Code hoch dann schau ich es mir mal an
-
13.07.07 15:22 #6
- Registriert seit
- Apr 2007
- Beiträge
- 191
hallo also hier sind zwei Klassen , die klasse AttatchmentOverviewresponse erhalte ich als rückgabeobjekt von Server.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
public class AssignAttachRequest implements Serializable { private static final long serialVersionUID = 1L; private int processID; private Attachment attach; public AssignAttachRequest(int processID, Attachment attach) { this.processID = processID; this.attach = attach; } public Attachment getAttach() { return attach; } public void setAttach(Attachment attach) { this.attach = attach; } public int getProcessID() { return processID; } public void setProcessID(int processID) { this.processID = processID; }
Und hier noch die Attachment Klasse von der ich die arraylist habe
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
public class AssignAttachResponse implements Serializable { private static final long serialVersionUID = 1L; private int errorCode; private String errorMessage; public AssignAttachResponse(int errorCode, String errorMessage) { this.errorCode = errorCode; this.errorMessage = errorMessage; } public int getErrorCode() { return errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorCode(int errorCode) { this.errorCode = errorCode; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
Es sind alles bloß solche datenobjekte, welche der server dann erstellt und zurückschickt. Und auch die parameter in den Methoden des Servers sind nur datenobjekte. Das heißt jede klasse enhält bloß konstruktor und getter bzw setter.
Geht das so oder muss ich da noch was ändern.
Und diese serialVersionId ist es da richtig die default ID zu verwenden?
-
Also wenn nur diese 2 Ojekte über RMI versendet werden dürfte es keine Probleme geben da beide Objekte nur serialisierbare Typen enthalten und jetzt verstehe ich auch was du mit der Liste gemeint hast, ist naturlich dann auch egal ob du diese Objekte zur Datenhaltung in einer Liste verwaltest.
Falls es doch noch Probleme gibt sag einfach bescheid
-
Hat das denn eigentlich geklappt mit deinen PDF Files über RMI übertragen?
Geändert von dontschew (16.07.07 um 14:28 Uhr)
-
Habe eine ähnliche Frage
:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
ActionListener actionListenerUpdate = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { DTO dto = new DTO(); try { Registry registry = LocateRegistry.getRegistry(); Service service = (Service) registry.lookup("service"); service.serviceFunction(dto); } catch (AccessException ae) { ae.printStackTrace(); } catch (RemoteException re) { re.printStackTrace(); } catch (NotBoundException nbe) { nbe.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }; JButton btnUpdate = new JButton("Update"); btnUpdate.addActionListener(actionListenerUpdate);
Wie kann ich das dto- Object serialisieren, da er folgende Fehlermeldung bringt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: net.dsb.configImport.ConfigVhs3ImportDTO at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122) at net.dsb.configImport.ConfigVhs3Import_Stub.overrideData(Unknown Source) at net.dsb.swingConfigImport.GUIConfigVhs3Import$3.actionPerformed(GUIConfigVhs3Import.java:234) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:5501) at javax.swing.JComponent.processMouseEvent(JComponent.java:3135) at java.awt.Component.processEvent(Component.java:5266) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3968) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Window.dispatchEventImpl(Window.java:1778) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Caused by: java.io.NotSerializableException: net.dsb.configImport.ConfigVhs3ImportDTO at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302) at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:258) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:117) ... 26 more
Gruß TruckCannot convert from Newbie to Developer!
~ Freue mich über jede positive Bewertung ~
-
20.08.07 15:42 #10
- Registriert seit
- Mar 2007
- Ort
- Suhl/Thüringen
- Beiträge
- 161
Wie sieht denn die Object Implementierung aus?
-
Cannot convert from Newbie to Developer!
~ Freue mich über jede positive Bewertung ~
Ähnliche Themen
-
Serialisieren
Von nex_m im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 02.04.09, 19:18 -
Remote Screen Übertragung war Remote Anwendung - CORBA?
Von flashray im Forum JavaAntworten: 6Letzter Beitrag: 05.12.06, 22:36 -
Serialisieren von XML
Von bl4ck29 im Forum Delphi, Kylix, PascalAntworten: 0Letzter Beitrag: 18.04.06, 15:07 -
Nochmal serialisieren...
Von fireblade1282 im Forum JavaAntworten: 5Letzter Beitrag: 27.05.05, 23:21 -
WMV in SOAP-XML serialisieren
Von Christian Kusmanow im Forum .NET ArchivAntworten: 1Letzter Beitrag: 29.09.04, 16:32





Zitieren
Login





