Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Fehler im XML Schema oder bei der Generierung mit xjc?

7 views
Skip to first unread message

Christian Bruckhoff

unread,
Aug 13, 2010, 11:28:44 AM8/13/10
to
Hallo.

Ich habe folgende XML Schema entworfen:

---------------------------

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified"
elementFormDefault="qualified" version="1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de"

targetNamespace="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de">

<xsd:element name="waterGauge" type="waterGaugeType" />

<xsd:complexType name="waterGaugeType">
<xsd:sequence>
<xsd:element name="locationNumber" type="xsd:string" />
<xsd:element name="locationName" type="xsd:string"
minOccurs="0" />
<xsd:element name="ipAddress" type="xsd:string"
minOccurs="0" />
<xsd:element name="getTimeSeriesPath" type="xsd:string"
minOccurs="0" />
<xsd:element name="sensorNumber" type="xsd:integer"
minOccurs="0" />
<xsd:element name="sensorCount" type="xsd:integer"
minOccurs="0" />
<xsd:element name="parameter" type="xsd:string"
minOccurs="0" />
<xsd:element name="maxSensorDeviation" type="xsd:double"
minOccurs="0" />
<xsd:element name="qualityRemark" type="xsd:double"
minOccurs="0" />
<xsd:element name="from" type="xsd:dateTime" minOccurs="0" />
<xsd:element name="to" type="xsd:dateTime" minOccurs="0" />
<xsd:element name="timeStamp" type="xsd:dateTime"
minOccurs="0" />
</xsd:sequence>
</xsd:complexType>

</xsd:schema>

---------------------------

Gemeint ist, dass dieses Schema den Namensraum
wg=http://watergauge.types.webservices.pegelsuite.uni_koblenz.de
besitzt. Also, dass das Element wg:waterGauge vom Typ wg:waterGaugeType ist.

Wenn ich das Schema allerdings mit xjc nach Java importiere und es als
Eingabe für einen WebService mit dem Namespace
dbh=http://databasewebservice.webservices.pegelsuite.uni_koblenz.de
verwende, dann erzeugt dieser das Element wg:waterGauge vom Typ
dbh:waterGaugeType.

Die Signatur des Web Services ist:

---------------------------

package de.uni_koblenz.pegelsuite.webservices.databasewebservice;

@WebService(name = "databaseWebService", serviceName =
"databaseWebService", targetNamespace =
"http://databasewebservice.webservices.pegelsuite.uni_koblenz.de")
@SOAPBinding(style = Style.DOCUMENT)
@XmlSeeAlso( { org.w3._2000._09.xmldsig_.ObjectFactory.class,

org.oasis_open.docs.wss._2004._01.oasis_200401_wss_wssecurity_secext_1_0.ObjectFactory.class,
org.xhydro.minimal._2009._09.ObjectFactory.class,

org.oasis_open.docs.wss._2004._01.oasis_200401_wss_wssecurity_utility_1_0.ObjectFactory.class,

de.uni_koblenz.pegelsuite.webservices.types.sensordatalist.ObjectFactory.class
} )
public class DatabaseWebService {

@WebMethod(action = "getSensorDataList")
@WebResult(name = "sensorDataList", targetNamespace =
"http://sensordatalist.types.webservices.pegelsuite.uni_koblenz.de")
public SensorDataListType getSensorDataList(@WebParam(name =
"waterGauge", targetNamespace =
"http://watergauge.types.webservices.pegelsuite.uni_koblenz.de")
WaterGaugeType waterGauge) ;

---------------------------

Wo ist da was fehlgeschlagen? Liegt es bereits am Schema? Ist beim
generieren was schief gelaufen oder habe ich einen Fehler bei der
Signatur des Web Services gemacht?

Hierbei handelt es sich um ein Doppelposting, da man mich von XML nach
Java verwiesen hat. Es scheint wohl doch eher was auf der Java-Seite
nicht zu stimmen. Das original Posting findet ihr hier:
http://www.tutorials.de/xml-technologien/364851-fehler-im-xml-schema.html

TIA
DAB268

Bernd Eckenfels

unread,
Aug 13, 2010, 12:30:09 PM8/13/10
to
Ohne jetzt näher drüber nachzudenken würde ich:

targetNamespace="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de">
ns:tns="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de"
<xsd:element name="waterGauge" type="tns:waterGaugeType" />

machen.

Gruss
Bernd

Christian Bruckhoff

unread,
Aug 13, 2010, 2:24:29 PM8/13/10
to
Hi.

Ist da ein Unterschied zu meiner Lösung?

targetNamespace="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de">
xmlns="http://watergauge.types.webservices.pegelsuite.uni_koblenz.de"
<xsd:element name="waterGauge" type="waterGaugeType" />

Ich hab das so verstanden, dass xmlns der Standard-Namenraum ist, wenn
keine spezieller verwendet wird. Vodaher würde ich sagen, wären die
beiden Lösungen gleich.

Kann das bitte mal einer bestätigen oder widerlegen?

TIA
Chistian

Christian Bruckhoff

unread,
Aug 19, 2010, 5:14:08 AM8/19/10
to
Hi.

Hat hier keiner eine Idee, woran es leigen könnte? Der Grund liegt
definitiv in Java, da das XML-Schema korrekt ist.

Greetz
Christian

Bernd Eckenfels

unread,
Aug 19, 2010, 12:17:40 PM8/19/10
to
Christian Bruckhoff <brch...@uni-koblenz.de> wrote:
> Hat hier keiner eine Idee, woran es leigen könnte? Der Grund liegt
> definitiv in Java, da das XML-Schema korrekt ist.

Hast du mein Tipp denn probiert? Wenn du dem Schema Parser durch expliziten
Namensraum auf die Sprünge hilfst, könnte das Java genug sein.

Gruss
Bernd

Christian Bruckhoff

unread,
Aug 19, 2010, 12:54:04 PM8/19/10
to
Hi.

Ja habe ich. Die Output-Dateien von xjc unterscheiden sich lediglich in
der Uhrzeit des JAXB Kommentars. :-(

Greetz
Christian

Daniel Urban

unread,
Aug 19, 2010, 4:00:06 PM8/19/10
to
"Christian Bruckhoff"

> Hat hier keiner eine Idee, woran es leigen könnte? Der Grund liegt
> definitiv in Java, da das XML-Schema korrekt ist.

Wenn der Grund definitiv in Java liegt, dann musst Du wohl einen Workaround
bauen oder einen Bug bei Oracle absetzen und auf ein Fix warten.

Muss denn das alles so gemacht werden? Ich habe verstanden, dass Du aus
einem Schema per JAXB Klassen generierst. Außerdem willst Du die Klasse in
einem WebService verwenden. Du kannst den WebService doch auch per Hand
schreiben und dabei den richtigen Namespace angeben. Die Logik des
WebServices musst Du doch sowieso programmieren, oder?

Gruß,

Daniel

Daniel Urban

unread,
Aug 28, 2010, 2:06:15 PM8/28/10
to
"Christian Bruckhoff"

Hast Du Dein Problem mittlerweile gelöst? Ich hatte gerade mal wieder
intensiv mit Web-Services zu tun und dachte, mir mit meinem neu erlangten
Wissen noch einmal Dein Problem anzuschauen. Leider ist mir immer noch nicht
ganz klar, was Du eigentlich gemacht hast. Top-Down oder Buttom-up Ansatz?

Die Signatur Deines Web-Services sieht korrekt aus. Vegleiche hierzu auch
https://jax-ws.dev.java.net/jax-ws-ea3/docs/annotations.html.

Woran merkst Du denn, dass sich der Paramater im falschen Namespace
befindet? Kannst Du vielleicht mal die vom Server generierte WSDL ranhängen?
Außerdem wäre es sinnvoll, mal die JAX-WS Implementierung zu nennen, da jede
Implementierung ihre eigenen Bugs mitbringt.

Gruß,

Daniel

0 new messages