Webservice Contract first

Generic1

Top Contributor
Hallo,

es wird ja empfohlen, Webservices nach dem Contract First- Prinzip zu erzeugen. Ich hab mir jetzt ein paar WSDL's angesehen und weiß jetzt nicht so recht, wie ich so eine WSDL schreiben soll da braucht man ja soviel wissen !?

Meine Frage wäre jetzt, wie macht man das, muss man die WSDL wirklich herunterschreiben können oder gibt es da Unterstützung durch Eclipse?
lg
Generic
 

Generic1

Top Contributor
Also wenn ich mir das Schema unten anschau, so ein XSD muss ich mir dann selber schreiben?
Das ist ja auch nicht so ohne, würd ich mal sagen!?

Aber theoretisch, wenn ich dann die Schema hätte, könnte ich mir mit Spring die WSDL erzeugen, hab ich das richtig verstanden.
Hättest du da einen Link wie man das mit Spring macht, ist das viel Aufwand?

Ich brauche z.B. eine WSDL für einen Login, d.h. die Methode beim WebService heißt
Code:
public Login login(String username, String password)
, weiß vielleicht jemand, wie man da den "XSD- ComplexType" für die Klasse Login macht bzw. wie da die WSDL ausschaut.

Vielen Dank,
lg

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://my.url.com/scm/v1/types/user" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://my.url.com/scm/v1/types/user">

<xsd:complexType name="userBean">
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element minOccurs="0" name="description" type="xsd:string"/>
<xsd:element name="password" type="xsd:string"/>
<xsd:element minOccurs="0" name="userGroup" type="tns:userGroupBean"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType final="#all" name="userBeanArray">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="tns:userBean"/>
</xsd:sequence>
</xsd:complexType>

<xsd:complexType name="userGroupBean">
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element minOccurs="0" name="description" type="xsd:string"/>
<xsd:element minOccurs="0" name="parentGroup" type="tns:userGroupBean"/>
</xsd:sequence>
</xsd:complexType>
</schema>
[/XML]
 
Zuletzt bearbeitet:

Noctarius

Top Contributor
Was wir in der Firma im Prinzip machen ist per JAXB aus dem XSD die Java-Klassen erstellen lassen und diese dann nutzen (Apache CXF Tutorial - Building JAX-WS, JAXB and JPA-based web service with Apache CXF, Spring and Hyperjaxb3 - Confluence - nicht sonn ganz tolles Tutorial, hab aber gerade kein anderes gefunden). Das WSDL lassen wir von Spring erstellen (Now in SVN: dynamically create WSDL based on XSD - Spring Community Forums)

Alternativ geht es auch mit Java pur:
Tutorial: SOAP over HTTP Webservice mit Apache CXF (Java First Development)
 

Generic1

Top Contributor
Also was ich mal brauche sind die XSD's. Da werd ich nicht trum rumkommen, dass ich mich intensiv mit den XSD's befasse, oder gibts da auch ein tool? (Das oben ist nur ein Beispiel von unserer Applikation)

Weiß vielleicht jemand als Beispiel, wie man eine XSD sxhreibt für folgende Klasse:

Java:
public class Login {
   
    private String message;
    private String decision;

   getter und setter

das müsste dann ja irgendwie so aussehen:

[XML]
<xsd:complexType name="loginBean">
<xsd:sequence>
<xsd:element minOccurs="1" name="message" type="xsd:string"/>
<xsd:element minOccurs="1" name="decision" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

[/XML]

Könnte man die XSD so machen?
Das würd ich nämlich hinbekommen, glaub ich, was ich aber nicht versteh ist, wie die XSD's in die WSDL einbezogen werden:


[XML]
<types>
<xsd:schema targetNamespace="http://my.url.com/scm/v1/services/softwarepackageservice/parameters">
<xsd:import namespace="http://my.url.com/scm/v1/types/exceptions" schemaLocation="MyXSD1.xsd"/>
<xsd:import namespace="http://my.url.com/scm/v1/types/exceptions/services" schemaLocation="MyXSD2.xsd"/>
...
[/XML]

Wo nehm ich da die URLs her, z.B.: http://my.url.com/scm/v1/services/softwarepackageservice/parameters, kann ich mir das aussuchen bzw. mit welchen konsequenzen, wird dann bei der codegenerierung ein Package mit diesem Namen erstellt?

Vielen Dank
lg und schöne Weihnachten.
Generic
 
Zuletzt bearbeitet:

Noctarius

Top Contributor
Ja Eclipse hat einen recht brauchbaren XSD Editor, ansonsten XML Editor, kostet allerdings auch in der Personal Version 64€.

PS: Bei dem reinen Codeansatz brauchst du kein XSD, da wird das WSDL automatisch aus deiner Service-Klasse erstellt.
 

Generic1

Top Contributor
Beim Code- Ansatz ists mir klar aber ich möchte den Contract First Ansatz machen.
Weißt du wie man die URLs definiert z.B.: bei

[XML]
<types>
<xsd:schema targetNamespace="http://my.url.com/scm/v1/services/softwarepackageservice/parameters">
<xsd:import namespace="http://my.url.com/scm/v1/types/exceptions" schemaLocation="MyXSD1.xsd"/>
<xsd:import namespace="http://my.url.com/scm/v1/types/exceptions/services" schemaLocation="MyXSD2.xsd"/>
...
[/XML]

und ob die obere XSD passt für die Login- Klasse?
lg und Danke,
Generic1
 

Noctarius

Top Contributor

Sehr schön, den hatte ich gesucht :D

Die Imports müssen die TargetNamespaces beinhalten und auch erreichbar sein. Das heißt: Der Parser muss den TNS auflösen und das passende Schema-File lesen können.

Js das Schema sollte so zur Loginklasse passen. Du solltest dir aber direkt angewöhnen die Häufigkeitsbeschränkungen für Vorkommen von Tags anzugeben. Hier eine hübsche kleine Erklärung von XSD http://www.informatik.uni-mainz.de/lehre/wt/download/vortrag_06/Ausarbeitung.pdf
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Error beim Versuch, einen Webservice zu kontaktieren SOA 4
J SOA WebService JAX-WS Java-Klasse per wsimport generieren lassen SOA 3
K Webservice: 4 counts of IllegalAnnotationExceptions SOA 0
D Zertifikat Authentifizierung am Webservice SOA 0
P JBOSS 7 und Restful Webservice SOA 1
N WebService Ausgabe einer ArrayList SOA 2
N Web Services Client aus externen WebService erstellen SOA 4
I SOAP Webservice Methoden und Parameter auslesen SOA 3
F [WebService] Array von eigenen Objekten SOA 0
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
M JAVA Webservice Währungsrechner DRINGEND Hilfe SOA 1
A Up-/ Download von Dateien zu WebService SOA 6
D WebService Technik - Aufwand Änderung des Application Server SOA 3
R Webservice Timeout Konfiguration SOA 3
D SOAP Webservice (SAP) SOA 3
MQue WebService Versionierung SOA 9
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
A Funktion mit Map als WebService SOA 4
T Webservice serviceName im Handler ermitteln SOA 3
N Webservice Einbinden wsdl SOA 7
M Edit und Remove über Webservice SOA 3
F Client Problem gegen Webservice SOA 3
P Java Webservice mit JWS Bindingnamen customizen SOA 4
L wie ArrayList an Webservice geben? SOA 3
B Webservice Config / SoapStub: Best Practice SOA 3
S Objektübertragung Fehler über Webservice SOA 10
E Webservice durch Java ansprechen SOA 7
L Webservice HTTPS Netbeans SOA 2
G NullPointerException bei Parameterübergabe an Webservice mittels kSoap2 SOA 2
M Webservice per URL ansprechen SOA 14
M Webservice Client erstellen und XML Request senden SOA 3
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S Webservice als "CronJob" SOA 4
M Webservice (JaxWS) extern verfügbar machen SOA 5
M Welches WebService Framework ist denn das beste FRAMEWORK? SOA 5
D Webservice fürs Internet sichtbar machen SOA 2
W WebService aus einer HTML-Seite SOA 9
T WebService innerhalb von Seam-Projekt, komplexe Datentypen SOA 6
N JAX-WS WebService und Tomcat 7 SOA 11
E Trennung von Daten und WebService und Wiederverwendung der Daten SOA 2
D Sicherheit bei REST-Webservice SOA 19
G WebService, was darf der Client alles sehen SOA 19
M Nutzen des Webservice AWSECommerceService SOA 1
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
G WebService -> ServletFilter SOA 2
G WebService Concurrency SOA 19
M Fehler beim Veröffentlichen eines Webservice SOA 6
G WebService Types SOA 7
G OpenLigaDB Webservice Client SOA 4
G WebService WSDL SOA 3
A PHP WebService aus Java aufrufen SOA 2
R Proxy WebService erstellen SOA 3
G JPA/ Webservice: Passwort Feld einer Klasse fürs Lesen "verschleiern" SOA 10
G WebService mit wsdl erstellen SOA 4
P WebService SOA 6
H Webservice: BindingProvider SOA 6
D WebService DB abfrage SOA 4
mabe83 EJB Klassen für Webservice nutzen SOA 2
S Webservice-Client-Klasse gibt immer null zurück SOA 3
G WebService mit komplexen Objekten SOA 5
C Problem mit Java Webservice - SOAPBinding.Style - Wrapper class fehlt SOA 1
T Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt SOA 10
S Webservice, Vererbung und Netbeans SOA 3
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
T WebService Authentifizierung SOA 11
mabe83 Suche Hilfe zum Thema Webservice + EJB SOA 3
T WebService erstellen SOA 28
T Krankes Vorhaben: Von VB auf Java Webservice SOA 10
M Webservice RuntimeModelerException? SOA 5
G Webservice mit Java aufrufen SOA 2
G WebService: mehrere methoden mit demselben Namen SOA 4
T einfacher Webservice SOA 3
G Webservice im JBoss: runtime modeler error SOA 3
V webservice von aussen (webbrowser) ansprechen SOA 2
V Webservice, allgemeine Fragen SOA 9
G Alfresco - WebDav oder WebService SOA 2
0 Webservice nutzen (rpc/enc style) SOA 2
R XML verschicken mit Webservice Server Client SOA 2
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
G Webservice zugreifen SOA 6
G Deploy Apache CXF WebService mit Eclipse SOA 2
G Webservice mit JSON SOA 8
T Webservice über Tomcat loggen SOA 5
thE_29 WebService - JAXBElement - richtige Klasse? SOA 2
L Probleme mit komplexen Datentypen in einen Webservice SOA 2
O brauche hilfe bei java/webservice geschichte SOA 29
M Webservice/ Axis/ Bea Weblogic Server 8.1 SOA 12
E Webservice konfigurieren SOA 2
Y Webservice erstellen SOA 4
F Tutorial zu WebService mit JBoss, Eclipse und Jax-ws? SOA 3
C Webservice im Unternehmen SOA 4
L webservice frage (eclipse/wtp, wsdl) SOA 12
U Webservice mit Axis, Hello World Beispiel SOA 2
J Frage zu Webservice SOA 3
L WebService TestClient Problem SOA 2

Ähnliche Java Themen

Neue Themen


Oben