Mappen von Objektmethoden bei SOAP

Status
Nicht offen für weitere Antworten.

K-Man

Bekanntes Mitglied
Hallo
Ich habe mittels Tomcat und Axis einen Webservice entwickelt. Alles funktioniert auch ohne Probleme.
In der deploy.wsdd stehen alle meine Methoden und Objekte. Es gibt zB ein Objekt Test mit der Methode getValue() und der Membervariable value.

Wenn ich jetzt mit einem C#-Client ein Testobjekt erzeuge, dann kann ich nur auf das Feld value zurückgreifen, aber nicht die Methode aufrufen. Kann mir jemand erklären warum? Muss ich in der deploy.wsdd zu den Objekten noch zusätzlich die "freigegebenen" Methoden angeben?

Danke
Stefan
 
G

Guest

Gast
Wie erstellst du die Service-Schicht in C#? Mit wsdl.exe?

Für jeden Getter und Setter deiner Value-Objekte werden in C# Properties und die dazugehörigen
Membervariablen generiert. Das entspricht den Getter-/Setter-Methoden in Java.
 
G

Guest

Gast
Ich hab Visual Studio Express für C#. Ich füge den Service als Webverweis hinzu, so kann ich auf die Methoden zugreifen. Liefert eine Methode aber zb ein Objekt vom Typ Test zurück, dann kann ich nur auf die Member von Test zugreifen, nicht aber auf die Methoden. Es geht also nicht direkt um die Servicemethoden, sondern um evtl Objekte, die mir diese Sevicemethoden zurückliefern.
 
G

Guest

Gast
Welche Methoden vermisst du dort?
Wie ich schon schrieb, jeder Getter und Setter wird zu einer Membervariablen und einem Property.

z.B.
Code:
public class Person
{
   private Long id;
   private String vorname;
   private String nachname;

   public Person()
   {
   }

   public Long getId()
   {
      return id;
   }

   public void setId(Long id)
   {
      this.id = id;
   }

   ... usw. mit den anderen Getter und Setter Methoden

}
wird in WSDL (mit Java2wsdl generiert) zu
Code:
<xs:complexType name="Person">
   <xs:sequence>
      <xs:element minOccurs="0" name="id" nillable="true" type="xs:long"/>
      <xs:element minOccurs="0" name="nachname" nillable="true" type="xs:string"/>
      <xs:element minOccurs="0" name="vorname" nillable="true" type="xs:string"/>
   </xs:sequence>
</xs:complexType>
und in C# wird daraus
Code:
...
public partial class Person {
        
   private System.Nullable<long> idField;
        
   private bool idFieldSpecified;
        
   private string nachnameField;
        
   private string vornameField;
        
   [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
   public System.Nullable<long> id {
      get {
         return this.idField;
      }
      set {
         this.idField = value;
      }
   }
   
   ... usw. mit anderen Properties     
}

Was fehlt?
 

K-Man

Bekanntes Mitglied
Ich mache es über BeanMapping. Aber wenn ich dich richtig verstanden habe, sind alle Member meiner Klasse nicht sichtbar, außer ich schreibe Getter und Setter dazu. In diesem Fall werden diese beim C#-Client zu Membervariabeln. Gilt dies dann auch für is und has-Methoden?

Code:
  	<beanMapping qname="myNS:Test"
  			   xmlns:myNS="http://de.kiefl.testProgram"
  		languageSpecificType=
  				"java:de.kiefl.model.Test"
  	/>


Die Methoden definiere ich so:
Code:
 <parameter name="className" value="de.kiefl.testProgram.TestProgram"/>
  <parameter name="allowedMethods" value="Methode1, Methode2"/>

Ich kann nun auf die einzelnen Methoden zugreifen. Methode1 liefert mir zB das unter BeanMapping definierte Objekt Test zurück. Ich kann auch auf Test zugreifen. Aber nicht über die Methoden der Klasse, sondern direkt über die Felder. Deswegen die Frage, sind die Methoden nicht sichtbar? Muss ich sie sichtbar machen, ähnlich wie im Tag parameter name="allowedMethodes"? Aber wenn das von oben stimmt, dann würde es alles erklären.
 
G

Guest

Gast
K-Man hat gesagt.:
Ich mache es über BeanMapping. Aber wenn ich dich richtig verstanden habe, sind alle Member meiner Klasse nicht sichtbar, außer ich schreibe Getter und Setter dazu. In diesem Fall werden diese beim C#-Client zu Membervariabeln. Gilt dies dann auch für is und has-Methoden?
Ja und Ja. Alles,was als Getter und Setter gilt, wird in C# zu Property.

K-Man hat gesagt.:
Ich kann nun auf die einzelnen Methoden zugreifen. Methode1 liefert mir zB das unter BeanMapping definierte Objekt Test zurück. Ich kann auch auf Test zugreifen. Aber nicht über die Methoden der Klasse, sondern direkt über die Felder. Deswegen die Frage, sind die Methoden nicht sichtbar? Muss ich sie sichtbar machen, ähnlich wie im Tag parameter name="allowedMethodes"? Aber wenn das von oben stimmt, dann würde es alles erklären.
Das von dir genannte Bean-Mapping sagt mir nichts, habe in dieser Form noch nie WebServices geschrieben.
Ich arbeite i.d.R. mit Interfaces und Annotationen, wenn ich bestimmen möchte, welche Methoden sichtbar sein sollen,
welche nicht. Die wsdl-Dateien schreibt wohl kaum jemand von Hand. ;)
 
G

Guest

Gast
Noch eine Anmerkung. is-Getter werden in WSDL generiert, has-Getter nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Behörden Soap service konsumieren SOA 4
M problem mit großem SOAP Response SOA 3
pkm Struktur einer SOAP-Anwendung SOA 28
N SOAP-Nachrichten verschlüsseln | jax-ws SOA 0
S Soap Request absenden - Anfängerfrage SOA 0
I SOAP Webservice Methoden und Parameter auslesen SOA 3
D [SOAP] wsdl & maven & java 1.8 SOA 6
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
E SOAP-Endpunkt per Eclipse-Wizard erstellt, wie nun mit Auth schützen? SOA 2
M Kann man das Protokoll eines REST (Jersey) bzw. SOAP Web Services manipulieren? SOA 5
G SOAP Response "faken" SOA 8
D SOAP Webservice (SAP) SOA 3
K Flex-Ablöse - Was mit den SOAP-Services tun? SOA 5
G Soap, http SOA 3
A Soap with Attachments - Unmarshalling Error SOA 4
K Axis2 SOAP Logging via Client SOA 2
E mit Apache SOAP verschachtelte XML-Tags generieren SOA 2
F XML per SOAP übermitteln SOA 2
H SOAP und Synonym-Wortschatz Leipzig SOA 4
V SOAP over JMS - wie funktionierts? SOA 3
C Undefinierte Zeichenketten in SOAP Nachricht SOA 4
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
R SOAP Nachrichtenaustausch zwischen Axis2-WSs SOA 5
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
I SOAP WSDL und UDDI SOA 12
G --> SOAP zwischen Intranet und Internet SOA 3

Ähnliche Java Themen

Neue Themen


Oben