Hi Johannes,
Try breaking up this email into 1-2 questions at a time. It's very hard
to read:)
Just a few points to help:
1) To be doc-literal, import the necessary XSDs. Don't import another
WSDL and assume you'll inherit all the schemas used in that WSDL.
2) Try to avoid using wsdlmerge. I've seen that after using wsdl2java,
the wsdl it generates which combines all schemas inline doesn't always
update the schema namespaces properly. So I've always deployed my
original wsdls instead of the one wsdl2java outputs.
3) The "No WS-RP schema found" can safely be ignored. It's probably
because your service has WSRP properties but no .wsrmd file, which is
not required.
4) If a generated capability method doesn't have parameters when it is
expected to, it might be due to your wsdl not being doc-literal. The
message input might not be defined correctly. Since you didn't include
your schemas (i.e. sas:GetCapabilities), I can't tell if you're defining
them correctly.
5) A capability only needs to implement AbstractWsResourceCapability if
it is providing the get/set methods for your custom resource properties.
6) A SubscriptionManager resource manages a single subscription. So if
you call Subscribe 5 times, you will have 5 instances of
SubscriptionManager.
-Vinh
-----Original Message-----
From: Allen George [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 13, 2008 8:49 AM
To: [email protected]
Subject: Re: generating sources for service using quite complex schema
Hi Johannes,
I'm not as expert as many on this list, but I thought I'd take a stab at
answering some of your questions anyways.
Looking through your SAS.wsdl, I was curious why you did a <wsdl:import>
of the WSRF/WSN wsdls. At least when I created my (much simpler)
WS-Resource I did not have to do that.
Another point: I noticed that you've split your schema definition for
the same namespace into two parts as follows:
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://www.opengis.net/sas/1.0.0">
<xsd:include schemaLocation="OGC-SAS-1_0_0-sasAll.xsd"/>
<xsd:include
schemaLocation="OGC-SAS-1_0_0-sasCapabilities.xsd"/>
<xsd:include schemaLocation="OGC-SAS-1_0_0-sasCommon.xsd"/>
<xsd:include
schemaLocation="OGC-SAS-1_0_0-sasDescribeSensor.xsd"/>
<xsd:include
schemaLocation="OGC-SAS-1_0_0-sasMessageSchema.xsd"/>
</xsd:schema>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://www.opengis.net/sas/1.0.0">
<xsd:element name="SasResourceProperties">
<xsd:complexType>
<xsd:sequence>
<xsd:element
ref="wsrf-rp:QueryExpressionDialect" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="wsn-b:FixedTopicSet"/>
<xsd:element ref="wsn-t:TopicSet"
minOccurs="0"/>
<xsd:element ref="wsn-t:TopicExpression"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="wsn-t:TopicExpressionDialect"
minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="muws1:ResourceId"/>
<xsd:element ref="muws1:ManageabilityCapability"
minOccurs="0"
maxOccurs="unbounded"/>
<!-- ??? -->
<xsd:element ref="muws2:Caption" minOccurs="0"
maxOccurs="unbounded"/>
<!-- ??? -->
<xsd:element ref="muws2:Description"
minOccurs="0" maxOccurs="unbounded"/>
<!-- ??? -->
<xsd:element ref="muws2:Version" minOccurs="0"/>
<!-- ??? -->
<xsd:element ref="muws2:OperationalStatus"/>
<!-- ??? -->
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="ServiceExceptionType">
<xsd:complexContent>
<xsd:extension base="wsrf-bf:BaseFaultType">
<xsd:choice>
<xsd:element ref="ows:ExceptionReport"/>
<xsd:element ref="ows:Exception"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="ServiceException"
type="sas:ServiceExceptionType"/>
</xsd:schema>
I am not sure how a parser will interpret this, but my understanding was
that each <xsd:schema></xsd:schema> pair is separate from the other. Was
there a reason you did not include the imports and message definitions
in one <xsd:schema> pair? Also, I assume that all the imported documents
are defined in the http://www.opengis.net/sas/1.0.0 namespace or have no
namespace?
C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl
-output test -verbose
WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found
I'm not quite sure, but this may be because you don't have
ResourceMetadataDescriptor document attached to your SAS portType as
well as a reference to wsrf-rp:ResourceProperties reference. Perhaps
someone can correct me on this?
(MyCapability2) package net.opengis.www.sas._1.0.0; import
org.apache.muse.core.AbstractCapability; import org.w3c.dom.Element;
public class MyCapability extends AbstractCapability implements
IMyCapability { public Element getCapabilities() throws
Exception { //TODO implement getCapabilities throw
new RuntimeException("Unimplemented Method: getCapabilities"); }
public Element describeSensor(Element SensorID) throws Exception {
//TODO implement describeSensor throw new
RuntimeException("Unimplemented Method: describeSensor"); } }
I cannot see the element definition for sas:GetCapabilities in either of
the WSDLs... What does it look like?
There are several questions that I have
* concerning the generated sources:
o The getCapabilities method (in MyCapability2) should expect
some XML input - do you have any idea why the generated
method only has a return parameter? Is that due to the fact
that I used doc/literal?
No - I don't think it's because it's doc/lit. All my WSDLs use doc/lit
and they have input parameters for the methods. I am curious if the
element definition is being found properly.<br>
o The describeSensor method (in MyCapability2) looks ok - if
the SensorID Element is actually the complete
DescribeSensor
request XML document which would be send by a client in the
SOAP body. Looking at the registerPublisher method, it
seems
like wsdl2java removes the top-level XML fragment from the
request (in this case the RegisterPublisher XML element)
and
lists all elements contained in that element instead (even
converting them if they are of simple type).
What does the sas:DescribeSensor element look like? Is SensorID a
complex type? (Note that you can write your own Java classes to
represent this type and define a custom serializer in muse.xml to
convert to/from the xml wire format; this would allow you to use a Java
type as a method parameter)
o Neither of the capability classes extends
AbstractWsResourceCapability - is that due to the fact that I did not
extend the resource type with my own elements (i.e., it just lists
elements from WSN, WSRF and MUWS)?
The capabilities look fine. I've not seen any generated capability
extend AbstractWsResourceCapability...
o The registerPublisher method (in MyCapability1) takes the
elements contained in a usual RegisterPublisher request,
i.e. as they are listed in the schema from OASIS, as
parameters. As I said earlier I would like to make use of
the extension mechanism for that operation. Do I therefore
have to modify the schema before generating source code or
is there some way to retrieve the pure request body via
muse?
Were you planning on extending it using the <xsd:extension>system?
* in general:
o According to the SubscriptionManager.wsdl that is contained
in the generated folders (WebContent/WEB-INF/classes/wsdl)
there will be one subscription manager that will be
referenced in all Subscribe request responses. So will each
subscription reference the same manager?
Could you clarify this point? My understanding is that when subscribing,
you set the producer EPR to the EPR of the resource that you're
subscribing to. That said, all subscribe operations are handled by the
same subscription manager under Muse's hood. Any renew, destroy request
etc. will contain a subscription reference that (using reference
parameters) will identify the exact subscription you want to perform
these operations on...
I hope this helps a bit at least.
Cheers,
Allen
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]