Wie kann ich meine WSDL Datei kommentieren?

JayGabriel

Aktives Mitglied
Hallo an alle,
ich hoffe, ihr könnt mir bei meinem verzwickten Problem helfen.

Ich benutze JAX_WS, um einen WebService zugänglich zu machen und habe ihn mittels der "TOP-DOWN" Methode implementiert. Also XSD und WSDL erstellt und daraus dann meine WS Dateien generieren lassen. Dann eine IMPL Klasse erstellt, die auf die ServiceKlasse zugreift und alle angegebenen Funktionen implementiert. Das funktioniert auch wunderbar und ohne Probleme.

Nun wollte ich, da der WS in Entwicklung ist und einige Einstellungen sich immer wieder mal ändern, an wichtigen Stellen Kommentare einfügen. Das klappt ebenfalls, jedoch nur soweit, dass diese Kommentare in meinen eigenen generierten Klassen auftauchen, nicht aber mehr im WSDL File, welches meinen veröffentlichten WebService repräsentiert. Und auch nicht mehr im generierten TestClient.

So sieht es über einer generierten TypKlasse von mir aus (hier taucht noch alles richtig auf):
Java:
/**
 * ProductCode = "productcode"
 * SubscriptionCode = "subscriptioncode"
 * PaymentCode = "paymentcode"
 * InvoiceCode = "invoicecode"
 * PriceCode = "pricecode"
 * DeliveryCode = "deliverycode"
 * ScheduleCode = "schedulecode"
 * VariantCode = "variantcode"
 * AddDeliveryCode = "adddeliverycode"					
 * CountryCode = "countrycode"
 * 
 * <p>Java class for Basic complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="Basic">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="content" type="{http://de/WebAbo/Types}Basiccontent" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Basic", propOrder = {
    "type",
    "content"
})
public class Basic {

[...]

Wie schaffe ich, dass die wenigen Kommentare mitgeliefert werden? Gibt es dafür eine extra Annotation, die ich nur noch nicht gefunden habe?

in meiner XSD Datei sieht es so aus:
[XML]
<complexType name="Basic">
<annotation>
<documentation>ProductCode = "productcode"
SubscriptionCode = "subscriptioncode"
PaymentCode = "paymentcode"
InvoiceCode = "invoicecode"
PriceCode = "pricecode"
DeliveryCode = "deliverycode"
ScheduleCode = "schedulecode"
VariantCode = "variantcode"
AddDeliveryCode = "adddeliverycode"
CountryCode = "countrycode"
</documentation>
</annotation>
<sequence>
<element name="type" type="string" maxOccurs="1" minOccurs="0"></element>
<element name="content" type="tns:Basiccontent"
maxOccurs="unbounded" minOccurs="0">
</element>
</sequence>
</complexType>
[/XML]

Auch in meiner selbst geschrieben WSDL Datei steht es:
[XML]
<wsdl:eek:peration name="getConfig">
<wsdl:documentation>ProductCode = &quot;productcode&quot;
SubscriptionCode = &quot;subscriptioncode&quot;
PaymentCode = &quot;paymentcode&quot;
InvoiceCode = &quot;invoicecode&quot;
PriceCode = &quot;pricecode&quot;
DeliveryCode = &quot;deliverycode&quot;
ScheduleCode = &quot;schedulecode&quot;
VariantCode = &quot;variantcode&quot;
AddDeliveryCode = &quot;adddeliverycode&quot;
CountryCode = &quot;countrycode&quot;
</wsdl:documentation>
<wsdl:input message="tns:getConfigRequest"/>
<wsdl:eek:utput message="tns:getConfigResponse"/>
</wsdl:eek:peration>
[/XML]

Und in der generierten Service Klasse, taucht es ebenfalls auf:
Java:
/**
     * ProductCode = "productcode"
     * SubscriptionCode = "subscriptioncode"
     * PaymentCode = "paymentcode"
     * InvoiceCode = "invoicecode"
     * PriceCode = "pricecode"
     * DeliveryCode = "deliverycode"
     * ScheduleCode = "schedulecode"
     * VariantCode = "variantcode"
     * AddDeliveryCode = "adddeliverycode"					
     * CountryCode = "countrycode"
     * 
     * @param fieldnames
     * @return
     *     returns de.webabo.types.ResultConfig
     */
    @WebMethod(action = "http://de/WebAbo/Service/newConfig")
    @WebResult(name = "resultConfig", partName = "resultConfig")
    public ResultConfig getConfig(
        @WebParam(name = "fieldnames", partName = "fieldnames")
        GetFieldnames fieldnames);

Mein Problem: das veröffentlichte WSDL File ist jedoch "blanko". Da taucht weder der eine noch der andere Dokumentationsblock auf. Wie schaffe ich, dass die Dokumentation mitgeliefert wird? Da das WSLD File und auch die XSD je einen TAG <documentation> bieten, müsste es doch irgendwie machbar sein, oder?

Oder muss ich mit einer Welcome-Seite für meinen WebService arbeiten? Die ist bisher leider auch nicht erreichbar.

Viele Grüße,
Jay
 

DerFeivel

Bekanntes Mitglied
Hi,


versuchs mal indem du bei der implementierenden Klasse (die dein generiertes Interface implementiert) die Annotation:

@WebService(enpointInterface="vollqualifizierter Name deines Paketes", targetNamespace = "Namespace deiner WSDL")

hinzufügst.

Soweit ich mich erinnere, war es zumindest auf dem JBoss so, dass dieser sich seine eigene WSDL generiert hat, wenn man ihn nicht exlipzit über diese Annotationen darauf hingewiesen hat die vorgegebenen zu benutzen.
 

JayGabriel

Aktives Mitglied
Hallo, DerFeivel,

danke für deine schnelle Antwort!

Leider stehen bei mir diese Angaben schon in meiner IMPL Klasse dabei:
Java:
@WebService(name = "WebAboService",
		serviceName = "WebAboService",
		portName = "WebAboServiceSOAP",
		targetNamespace = "http://www.webabo.de/WebAbo/Service",
		endpointInterface = "de.webabo.service.WebAboService")
public class WebAboServiceImpl implements WebAboService{
[...]

Ich habe dazu nun auch gerade mal die Definition von meiner WSDL Datei angeschaut:
[XML]
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://webabo.de/WebAbo/Service"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="WebAboService"
targetNamespace="http://webabo.de/WebAbo/Service"
xmlns:xsd1="http://webabo.de/WebAbo/Types">
[/XML]

Da fiel mir nun auf, das dieses "www" nicht mit drin steht, in der Annotation von meiner IMPL aber schon. Also hab ich den
Code:
targetNamespace = "http://webabo.de/WebAbo/Service"
in meiner IMPL geändert.

Leider hat sich nichts geändert.

Zu meiner Projektstruktur:
meine XSD und WSDL Dateien liegen im WebContent/WEB-INF Ordner. Kann es damit zusammen hängen? Muss ich da dann noch etwas beachten?

edit:
ich arbeite übrigens in Eclipse und mit Tomcat, falls das auch noch notwendig ist zu wissen.

edit2 = Lösung:
Aber dein Post hat mich trotzdem zur Lösung gepracht! :)
Die WSDL Datei musste nicht nur in der IMPL direkt angegeben werden, sondern auch in der Konfigurationsdatei (sun-jaxws.xml). Dort habe ich das Attribut "wsdl" hinzugefügt, musste noch meine WSDL und XSD Datei in einen "wsdl"-Unterordner von WEB-INF packen (kam ein Fehler, dass ein "wsdl"-Order gefehlt hätte) und schon hab ich meine Kommentare nun auch in meiner WSDL drin!

meine sun-jaxws.xml:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
<endpoint name="WebAbo"
implementation="de.webabo.service.WebAboServiceImpl"
url-pattern="/WebAbo"
wsdl="WEB-INF/wsdl/WebAboService.wsdl"/>
</endpoints>
[/XML]

VIELEN Dank! Wenn sich nur alle Probleme so schnell lösen könnten! ;)

Viele Grüße,
Jay
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P WSDL Generierung mit Axis 2 falsch? SOA 3
D [SOAP] wsdl & maven & java 1.8 SOA 6
M Fehlermeldung beim Einbinden der wsdl in SoapUI invalid__wsdl SOA 10
N WSDL verändern der deploy loacation SOA 2
B Was ist falsch an meiner WSDL Datei? SOA 2
Z WSDL, Apache CXF und soapUI SOA 9
N Webservice Einbinden wsdl SOA 7
E WSDL Exception mit SOAPUI SOA 4
G WSDL Java C# SOA 8
R JAXB bzw. JAX-WS WSDL-Generierung SOA 2
G WebService WSDL SOA 3
B WSDL-Datei Funktionsnamen falsch SOA 2
G WSDL namespace schemaLocation SOA 2
G WebService mit wsdl erstellen SOA 4
H Axis2 dynamische URL zu WSDL SOA 2
E wsdl into Java-Klassen Maven-Plugin SOA 2
N Java -> WSDL char mit max-Length SOA 5
P WSDL: Wie definiert man eine Nachricht ohne Übergabeparameter? SOA 10
AndyHa XSD in WSDL wird nicht kompiliert SOA 4
G Stub generieren (WSDL=Axis1.4) (WSDL2JAVA=Axis2) SOA 11
S WSDL xml invalid SOA 1
N Request-XML-String -> AXIS2 -> WSDL-Check -> Respon SOA 2
I SOAP WSDL und UDDI SOA 12
L webservice frage (eclipse/wtp, wsdl) SOA 12
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
S Axis2 / Rampart - XML-Datei verschlüsseln & versenden SOA 14
Java.getSkill() web service soll online xml datei lesen SOA 4

Ähnliche Java Themen

Neue Themen


Oben