Übergabe eines Datensatzes (Übergabestruktur)

Status
Nicht offen für weitere Antworten.

chipmount

Aktives Mitglied
Hi Leute,

es geht um folgendes: Client und Server (jdbc corba, oracle)

Client: Eingabe des Datensatzes (bestnr(number), name(varchar2), bestelldatum(varchar2))

Server: einfügen einse vollständigen Datensatzes in die Tabelle "Bestellung"
Die Parameterübergabe soll rein mit in,inout, out Parametern erfolgen

Die Übergabe eines Datensatzes Bestellung soll mit einer eigens
dafür vorzusehenden ÜBERGABESTRUKTUR erfolgen!!!

Ich weiss nich, wie man so eine ÜBERGABESTRUKTUR macht und das dann wieter an die DB weitergibt

Hat jemand eine Idee

Danke
 

Bleiglanz

Gesperrter Benutzer
OJEMINE

gehts da um ne Corba IDL?

mit ÜBERGABESTRUKTUR ist wahrscheinlich ein Java Interface (Sagen wir "foo.bar.Bestelldaten") gemeint, so dass du auf dem Client den Aufruf

Code:
corbastub.fuegeEin(aktuelleDatenWieEingeben);
durchführen kannst, Das Argument ist vom Typ foo.bar.Bestelldaten und wird dann gemarshallt - übers Netz geschickt - vom CorbaServer unmarshallt usw. usw.

wieviel weisst du über Corba?

warum nimmst du nicht gleich JDBC?
 

chipmount

Aktives Mitglied
leider hab ich keine/wenig ahnung von corba, java etc leider muss ich hier mit corba arbeiten weil... mann will es so :roll:

ich habe an sowas gedacht

ClientProgramm:
Code:
import java.io.*;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;

public class ComputingClient {
   public static void main(String[] args) {
      try {
         ORB orb = ORB.init(args, null);
         NamingContext namingContext =
            NamingContextHelper.narrow(orb.resolve_initial_references("NameService"));
         Computer c =
            ComputerHelper.narrow(namingContext.resolve(new NameComponent[] {
                                                              new NameComponent("computer", "Object")
                                                           }));
         System.out.println("Bestellung");
         BufferedReader in =
            new BufferedReader(new InputStreamReader(System.in));
         String bestnr;
         System.out.print("BestNr: ");
         bestnr = in.readLine();
         if (bestnr == null) {
            System.out.println("Syntax Error");
            return;
         }
         String name;
         System.out.print("Name: ");
         name = in.readLine();
         if (name == null) {
            System.out.println("Syntax Error");
            return;
         }
         String bestelldatum;
         System.out.print("Bestelldatum: ");
         bestelldatum = in.readLine();
         if (bestelldatum == null) {
            System.out.println("Syntax Error");
            return;
         }
         
              in.close();
      }
      catch (org.omg.CORBA.ORBPackage.InvalidName e) {
         System.out.println("Error " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
         System.out.println("Error: " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
         System.out.println("Error: " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
         System.out.println("Error: " + e);
      }
      catch (IOException e) {
         System.out.println("Error: " + e);
      }
      catch (NumberFormatException e) {
         System.out.println("Syntax Error");
      }
   }
}


wie übrge ich diese werte an server und wo mach ich das???

meine IDL Datei (sieht ein wenig arm aus oder??)

Code:
interface Computer {
   void bestellung(in string bestnr, in string name, in string bestelldatum);
  };

mein SERVANT (hier muss doch die jdbc/sql operationen rein oder???):
Code:
import java.sql.*;
public class ComputerImpl extends _ComputerImplBase {
   public String  getBestellung(String bestnr, String name, String bestelldatum) {
      
   }
   
}

mein SERVER:
Code:
import org.omg.CORBA.*;
import org.omg.CosNaming.*;

public class ComputingServer {
   public static void main(String[] args) {
      try {
         ComputerImpl c = new ComputerImpl();
         ORB orb = ORB.init(args, null);
         orb.connect(c);
         //System.out.println(orb.object_to_string(c));
         NamingContext namingContext =
            NamingContextHelper.narrow(orb.resolve_initial_references("NameService"));
         namingContext.rebind(new NameComponent[] {
                                     new NameComponent("computer", "Object")
                                  },
                              c);
         System.out.println("ready");
         orb.run();
      }
      catch (org.omg.CORBA.ORBPackage.InvalidName e) {
         System.out.println("Error: " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.InvalidName e) {
         System.out.println("Error: " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.NotFound e) {
         System.out.println("Error: " + e);
      }
      catch (org.omg.CosNaming.NamingContextPackage.CannotProceed e) {
         System.out.println("Error: " + e);
      }
   }
}


hatt jeman eine bessere IDEE???[/code]
 

Bleiglanz

Gesperrter Benutzer
leider hab ich keine/wenig ahnung von corba, java etc leider muss ich hier mit corba arbeiten weil... mann will es so
wer ist "man"?

dieses Thema ist definitiv zu komplex und umfangreich, als dass du dir hier grossartige Hilfe erhoffen kannst - sowas kann man nicht als Anfänger und mit ein paar Foren als Anlaufpunkt erledigen
 

Bleiglanz

Gesperrter Benutzer
keine Ahnung, dein Code schaut jetzt mal nicht so schlecht aus, vielleicht kannst du dich ja irgendwie durchwursteln

wenn du Probleme hast, kannst du ja hier wieder fragen; aber nicht

bitte helft mir

sondern was konkretes (Fehlermeldung, klares Problem, usw.)
 

Bleiglanz

Gesperrter Benutzer
Der Witz - die Idee hinter - das Tolle - an CORBA/RMI/Webservices ist gerade, dass du beim Client
Code:
MeinStub stub = //blalba mit Narrow;

stub.bestellung(bestnr,name,datum); // HIER GEHTS LOS
einfach einen Methodenaufruf machst. In der Zeile mit "HIER GEHTS LOS" wird folgendes gemacht:

1) die drei Parameter werden serialisiert

2) übers netz an das passende Serverobjekt übertragen

2') am Server gleich deserialisiert und als normales Java Zeugs weitergegeben

3) dann wird am Server der eigentliche "Code" ausgeführt

4) wenns Rückgabewerte gibt, dann werden auch diese serialisiert und übers Netz zurückgeschickt

das alles ist automatisch, es schaut so aus, als ob du einen ganz normalen Methodenaufruf gemacht hast! das ist der Witz beim dem ganzen RPC-Kram! Du musst nichts machen, der Stub erledigt den fast alles für dich :)
 

chipmount

Aktives Mitglied
mir ist auch klar das es ein wenig bei corba.. automatisch geht
aber ich muss doch erst meine schnittstellen in IDL datei deffinieren muss ich denn hier die parameter mitübergeben??
Code:
void bestellung(in string bestnr, in string name, in string bestelldatum);

was meinst du denn mit
Code:
MeinStub stub = //blalba mit Narrow;
 

chipmount

Aktives Mitglied
meinst du sowas (auf der client seite)???
Code:
MeinStub stub =MeinStubHelper.narrow(obj);
stub.bestellung(bestnr,name,datum);
 

chipmount

Aktives Mitglied
also hab jetz folgendes gemacht

meine schnittstellendeff:
Code:
module M_N
{
interface I_N{
struct abc {
string bestnr;
string name;
string bestelldaum;
};
void setBestellung (in abc bestellung, out long anzahl);
};
};

Client gipt die werte ein
clientprogramm:
Code:
...
        String name; 
         System.out.print("Name: "); 
         name = in.readLine(); 
          String bestnr; 
         System.out.print("Name: "); 
         bestnr = in.readLine(); 

.....
//parameterübergabe an server via corba

M_N.I_NPackage.abc bestellung= new M_N.I_NPackage.abc (bestnr, name, bestelldatum);

server programm soll die werte in die db ablegen
serverprogramm:
Code:
.....

class I_NImpl extends I_NPOA{

//aufruf setbestellung
public void setBestellung(M_N.I_NPackage.abc bestellung, org.omg.CORBA.IntHolder anzahl)
{
try
{
    JDBC bla bla....
}
}

problem ist:
die eingegebenen werte kommen irgendwie beim server nicht an der client krigt aber eine mitteilung von dem server das 0 datensätze geändert worden sind

was ist falsch an meiner Client übergabe


Code:
M_N.I_NPackage.abc bestellung= new M_N.I_NPackage.abc (bestnr, name, bestelldatum);

danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M SocketError bei Aufruf eines SOAP-Servers Netzwerkprogrammierung 8
G seite nach posten eines html-forms laden Netzwerkprogrammierung 0
J Protokolle innerhalb eines Heimnetzwerks Netzwerkprogrammierung 6
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
X Response eines RESTful-Service mit JSON Netzwerkprogrammierung 8
F Neuer Json aus teilen eines vorhandenen Json Netzwerkprogrammierung 0
N Client Identifikation eines Servers Netzwerkprogrammierung 1
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
K Multiplayer eines Spiels Netzwerkprogrammierung 21
K Ansprechen eines Remote Druckers Netzwerkprogrammierung 2
L Erstellen eines Online Multiplayer Apps Netzwerkprogrammierung 10
eLogic Download eines Links Netzwerkprogrammierung 2
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
2 Schliessen eines Serversockets Netzwerkprogrammierung 2
Hindi93 Abbruch eines Programmes abfangen Netzwerkprogrammierung 8
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
C Alle Computer eines Netzwerkes finden Netzwerkprogrammierung 32
N Senden eines Arrays Netzwerkprogrammierung 6
U Name eines Netzlaufwerks ermitteln Netzwerkprogrammierung 5
L Body eines http Request auslesen Netzwerkprogrammierung 2
K Ende eines HTTP Response/Request Netzwerkprogrammierung 6
aze Tcp Verkehr eines Applets simulieren Netzwerkprogrammierung 10
J Socket Erreichbarkeit eines Java Servers (Socket-Lösung) über das Internet Netzwerkprogrammierung 3
M Socket Leistungsfähigkeit eines xSocketservers, wieviele Verbindungen max? Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
cowabunga1984 Transferierte Datenmenge eines SOAP Clients (JAX-WS) anzeigen Netzwerkprogrammierung 2
K TrafficClass eines UDP Pakets kommt beim Empfänger nicht an Netzwerkprogrammierung 5
musiKk Problem bei bidirektionaler Nutzung eines Socket Netzwerkprogrammierung 2
J Machbarkeit eines Bluetooth-Servers? Netzwerkprogrammierung 2
S Realisierung eines Netzwerkcodes für ein Strategiespiel Netzwerkprogrammierung 7
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Broadcast - senden eines Packetes an alle rechner im netz Netzwerkprogrammierung 15
P problem beim schließen eines Streams Netzwerkprogrammierung 6
K Mit Java-MailAPI dir Verfügbarkeit eines SMTP-Servers prüfen Netzwerkprogrammierung 4
J while-Schleife / Abbruchbed. beim Einlesen eines Streams Netzwerkprogrammierung 4
U Ende eines Inputstreams ermitteln Netzwerkprogrammierung 3
J Länge eines Streams Netzwerkprogrammierung 4
T Timeout eines KSOAP-Calls Netzwerkprogrammierung 5
G Info eines Webseites kopieren Netzwerkprogrammierung 16
J Antwort eines Soaprequests parsen mittels org.apache.soap Netzwerkprogrammierung 2
E Möglichkeit zum Timeout eines Process Netzwerkprogrammierung 7
T Erstellung eines Proxy Netzwerkprogrammierung 11
T Pfad eines Servlets rausfinden Netzwerkprogrammierung 2
O Einbinden eines java-servers Netzwerkprogrammierung 9
G Verzeichnis eines Rechners übers Netzwerk auslesen Netzwerkprogrammierung 5
B Problem mit der Ausgabe eines Strings an SocketOut Netzwerkprogrammierung 4

Ähnliche Java Themen


Oben