Objekte senden zwischen Java und PHP mit SOAP

Status
Nicht offen für weitere Antworten.
M

micro

Gast
Hallo,

ich fange gerade an mich mit SOAP zubeschäftigen. Da ich keine Ahnung von Java Servlets habe und mir auch kein Webserver mit Servletunterstützung zur Verfügung steht, läuft mein SOAP-Server mit PHP. Das klappt auch wunderbar mit primitiven Datentypen, aber wie sieht es aus wenn ich Objekte zwischen beiden Sprachen verschicken will?
Ist das überhaupt möglich?

also wenn ich zum Beispiel diese Klasse verschicken will?

Java:
Code:
public class IntContainer{
	
	public int a;
	public int b;
	  
	public IntContainer(int a, int b){
	    
	    this.a = a;
	    this.b = b;
	}	  
}
PHP:
Code:
class IntContainer{

  public $a;
  public $b;
  
  function __construct($a, $b){
    
    $this->a = $a;
    $this->b = $b;
  }  
}

Vielen Dank für eure Antworten,
Gruß,
Ming
 

Bleiglanz

Gesperrter Benutzer
einen soap body definieren (z.B. als XML Element)

von "hand" die soap bodys parsen und entsprechenende objekte draus basteln (hin und zurück)

nennt man marshalling

genau dafür gibts die diversen toolkits (Axis usw.)
 
M

micro

Gast
Also ich übergebe der Methode die ich aufrufe statt z.B. einem IntContainer-Objekt einen String in der Art "<IntContainer a="30" b="20" />" und übersetze den dann mit PHP in ein IntContainer-Objekt?

Und wie ist mir z.B. Axis bei der Angelegenheit nützlich?Hab schon mal rumgegooglet aber leider nicks gefunden?Würde Axis das marshalling mehr oder weniger für mich übernehmen?
 

Anselmus

Bekanntes Mitglied
mit jax-rpc (in axis) kannst du nur objekte übergeben, die primitive datentypen enthalten. außerdem dürfen die übergebenen objekte nur get und set methoden haben...

du kannst zwar auch objekte übergeben die andere objekte enthalten, aber am ende muß es auf primitive datentypen hinauslaufen...

habs grade nochmal ausprobiert. das mit dem konstruktor wird auch nicht hinhauen. da geht nur default konstruktor
 

Bleiglanz

Gesperrter Benutzer
sinn und zweck eines toolkits ists, den soap body KOMPLETT vor dem Programmierer zu verstecken

oft gibts tools folgender art:

wsdl2java (macht aus einer wsdl einen haufen java klassen)
--- benutzt für den client, der einfach eine java methode aufruft


java2wsdl (macht z.B. aus einem Interface ein wsdl)
--- benutzt für den endpoint, das framework reicht die daten dann durch

das ganze hin- und herwandeln von xml-soap zu java-daten wird dann vom framework übernommen (=marshalling), als Programmierer siehst du vom xml nichts mehr

etwas in der art sollte es eigentlich auch für php geben...
 

AlArenal

Top Contributor
Also ich arbeite seit nem Jahr mit XML-RPC, ebenfalls in der Kombination PHP aufm Server und Java aufm Client. Ist im Grunde dasselbe. Man muss seine Daten in Strings, ints, booleans, floats und structs verpacken. Das haut eigentlich gut hin. Nutze auf PHP-Seite PEAR::XML_RPC und Java-Seite Apache XML-RPC.

XML hab ich nur mal ganz am Anfang beim Debuggen zu Gesicht bekommen, als ich den Datenverkehr abgehört habe. Dem Protokoll ist es egal in welcher Sprache Client und Server geschrieben sind.
 
M

Micro

Gast
Also erstma vielen Dank für die Antworten!

mit jax-rpc (in axis) kannst du nur objekte übergeben, die primitive datentypen enthalten. außerdem dürfen die übergebenen objekte nur get und set methoden haben...

Mein Ziel ist eigentlich das ich einen Baum aus Objekten übergeben und auslesen kann. Das die Objekte nur Set- und Get-Methoden haben können wäre kein Problem, aber ein Objekt muss mehrere Unterobjekte haben können, also müsste ein Objekt die Unterobjekte als Array speichern können. Gänge das auch?

Kennst du ein Tutorial oder Beispiel zu jax-rpc mit Objekten zum anschauen?

Wäre ich vielleicht mit XML-RPC besser bedient oder würde das keinen Unterschied machen?
 

AlArenal

Top Contributor
Ich benutze XML-RPC auch um letzten Endes Baumstrukturen darzustellen. Allerdings wird die Struktur als solche erst im Client aufgebaut. Ich hole mir eine Liste mit meinen Datensätzen vom Server und habe in jedem Datensatz u.a. die ID des parents. Damit baue ich mir über nen Stack mit etwas Rekursion meine Datenstruktur.

Ich sehe nicht welchen Vorteil ich hätte schon serv erseitig eine komplette Baumstruktur aufzubauen und diese zu verschicken. Den kniffeligen Teil mache ich auch lieber in Java als in PHP.
 
G

Guest

Gast
Ja, das stimmt. Hab auch schon dran gedacht das ganze als NestedSet zu verschicken, aber da hatte ich es noch nich mal geschafft nen Array zuverschicken.
Und wenn es jetzt auch so geht kann ich das hin- und herbasteln mit PHP und Java sparen.

Habs jetzt so gemacht und es geht einwandfrei :

Code:
   <types>
        <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Service">
            <xsd:complexType name="IntContainer">
                <xsd:all>
                    <xsd:element name="a" type="xsd:int" />
                    <xsd:element name="b" type="xsd:int" />
                    <xsd:element name="cons" ref="soapenc:arrayType" wsdl:arrayType="typens:IntContainer[]"/>
                </xsd:all>
            </xsd:complexType>
            <xsd:complexType name="IntContainers">
                <xsd:complexContent>
                    <xsd:restriction base="soapenc:Array">
                        <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:IntContainer[]"/>
                    </xsd:restriction>
                </xsd:complexContent>
            </xsd:complexType>
        </xsd:schema>
    </types>
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
T JSON-Objekte richtig parsen Netzwerkprogrammierung 8
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
C List Deserialisierung entfernt Objekte Netzwerkprogrammierung 2
F HTTP Serialisierte Objekte aus Datei von Server Netzwerkprogrammierung 1
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
V Socket Objekte werden nicht aktualisiert Netzwerkprogrammierung 2
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
B Eigene Objekte per RMI übergeben Netzwerkprogrammierung 2
S Kapselung der Netz-Objekte Netzwerkprogrammierung 3
B verschiedene Serialisierte Objekte identifizieren? Netzwerkprogrammierung 5
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
C Socket ObjectInputStream liest nur Objekte der jeweiligen Programminstanz Netzwerkprogrammierung 5
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T Laufen Objekte, die vom Cajo-Server geliefert werden, lokal auf dem Client? Netzwerkprogrammierung 4
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Messenger - String oder Objekte Netzwerkprogrammierung 4
S Netzwerk und Objekte Netzwerkprogrammierung 5
S RMI 1.) Entfernte Objekte "Zwischenspeichern" 2.) Threadsicherheit Netzwerkprogrammierung 2
T rmi ssl zu große Objekte übergeben -> Exception Netzwerkprogrammierung 10
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
R Mittels BufferedReader Objekte lesen? Netzwerkprogrammierung 5
A Objekte in übergebenen Objekten mit WebServices? Netzwerkprogrammierung 6
A RMI wie kann ich objekte übergeben? Netzwerkprogrammierung 5
P Serialialiserte Objekte übers Netzwerk verschicken Netzwerkprogrammierung 9
OnDemand Daten per API senden, parallel Netzwerkprogrammierung 9
M Socket Senden an alle verbundenen Clients Netzwerkprogrammierung 3
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
E Socket Befehl senden und antowrt bekommen ! Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
L Socket Nachrichten senden Netzwerkprogrammierung 3
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J HTTP Befehl via HTTP senden ohne Browser öffnen Netzwerkprogrammierung 3
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
M Socket Bilder senden Netzwerkprogrammierung 1
H HTTP REST Jersey - PUT-Beispiel von Client senden Netzwerkprogrammierung 0
W Socket Byte Array senden Netzwerkprogrammierung 2
G Mail senden funktioniert nicht mit SSL Netzwerkprogrammierung 7
M MultiClient Server - Senden an alle Clients Netzwerkprogrammierung 8
X UDP - Zu großes Paket senden Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
M Teilnehmerliste vom Server auch an alle Clients senden Netzwerkprogrammierung 0
S Server - Mehrere Klassen sollen Daten senden und empfangen Netzwerkprogrammierung 25
I Kleine Dateien senden Netzwerkprogrammierung 3
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
S Server-Client: Image senden Netzwerkprogrammierung 2
B Socket BufferedImage senden "ohne speichern" Netzwerkprogrammierung 7
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
K Socket Senden und abspeichern Netzwerkprogrammierung 34
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
M Gleicher Port für Senden und Empfangen ? Netzwerkprogrammierung 17
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Empfangen klappt Senden nicht - Connection timed out Netzwerkprogrammierung 12
D Strings per Schleife zum Client senden Netzwerkprogrammierung 4
D daten per post senden Netzwerkprogrammierung 3
M Senden von Daten nicht direkt möglich? Netzwerkprogrammierung 6
B SSH mit Jsch, mehrere Befehle senden Netzwerkprogrammierung 4
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Verschiedene Datentypen senden Netzwerkprogrammierung 4
M Befehle an externes Java-Programm senden Netzwerkprogrammierung 8
1 Datei senden/empfangen funzt nicht... Netzwerkprogrammierung 5
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
Weltall 7 HTTP Dateien an PHP-Skript senden Netzwerkprogrammierung 11
T Outputstream Byte-Array senden Netzwerkprogrammierung 2
N Senden eines Arrays Netzwerkprogrammierung 6
F Char über Netzwerk senden Netzwerkprogrammierung 6
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
J Befehle an Server senden Netzwerkprogrammierung 5
L Zeitspanne für erneutes senden Netzwerkprogrammierung 16
Kr0e Ggf. Performanceproblem durch Senden von vielen kleinen Buffern Netzwerkprogrammierung 17
S Socket OutputStreams senden zu oft Netzwerkprogrammierung 6
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
KeNnY_tHe_OwNeR Empfangen geht, Senden nicht ?! Netzwerkprogrammierung 18
B Befehle an Gameserver senden bzw. empfangen Netzwerkprogrammierung 2
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
T HttpClient - Senden via Post Netzwerkprogrammierung 12
Q Datein von Windows nach Mac senden Netzwerkprogrammierung 4
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
M Dateien über TCP/IP senden Netzwerkprogrammierung 18
Q NullPointExeption beim Versuch byte[] zu senden/writen Netzwerkprogrammierung 3
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
G Information an Server senden? Netzwerkprogrammierung 4
D PDF und integer senden Netzwerkprogrammierung 6
M BufferedImage an PHP-Script senden Netzwerkprogrammierung 4
J Problem beim Senden von File Netzwerkprogrammierung 4
S String[] über Socket senden Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben