tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
397
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    schuetzejanett schuetzejanett ist offline Mitglied Gold
    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
    Code :
    1
    
     ...implements serialize
    serialisieren und als objekte übertragen oder sollte ich sie besser als remote objekte übertragen.
     

  2. #2
    schuetzejanett schuetzejanett ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    191
    Keiner ne idee und kann mir sagen ob es reicht zu serialisieren
     

  3. #3
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    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
     

  4. #4
    schuetzejanett schuetzejanett ist offline Mitglied Gold
    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?
     

  5. #5
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    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
     

  6. #6
    schuetzejanett schuetzejanett ist offline Mitglied Gold
    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?
     

  7. #7
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    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
     

  8. #8
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    Hat das denn eigentlich geklappt mit deinen PDF Files über RMI übertragen?
    Geändert von dontschew (16.07.07 um 14:28 Uhr)
     

  9. #9
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    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ß Truck
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

  10. #10
    dontschew dontschew ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Suhl/Thüringen
    Beiträge
    161
    Wie sieht denn die Object Implementierung aus?
     

  11. #11
    Avatar von _Truck_
    _Truck_ _Truck_ ist offline Mitglied Gold
    Registriert seit
    Jul 2007
    Ort
    Erde
    Beiträge
    109
    Zitat Zitat von dontschew Beitrag anzeigen
    Wie sieht denn die Object Implementierung aus?
    Hat sich erledigt, konnte es auf eine andere Art und Weise lösen...
    Trotzdem danke !

    Gruß Truck


    PS: Weiß auch nicht wo der Fehler gelegen hatte!
     
    Cannot convert from Newbie to Developer!

    ~ Freue mich über jede positive Bewertung ~

Ähnliche Themen

  1. Serialisieren
    Von nex_m im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 02.04.09, 19:18
  2. Antworten: 6
    Letzter Beitrag: 05.12.06, 22:36
  3. Serialisieren von XML
    Von bl4ck29 im Forum Delphi, Kylix, Pascal
    Antworten: 0
    Letzter Beitrag: 18.04.06, 15:07
  4. Nochmal serialisieren...
    Von fireblade1282 im Forum Java
    Antworten: 5
    Letzter Beitrag: 27.05.05, 23:21
  5. WMV in SOAP-XML serialisieren
    Von Christian Kusmanow im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 29.09.04, 16:32