|
View:
New views
10 Messages
—
Rating Filter:
Alert me
|
|
|
generating sources for service using quite complex schemaHello.
I would like to use muse for my scenario but run into problems just when I wanted to do more than the tutorial. Before describing the problem, I would like to outline my scenario shortly so that you get an understanding of what I want to achieve. Did I already mention that I am a newbie to muse. :-) I have to warn you: this email is quite large - so better get a new cup of coffee before reading. The scenario is as follows: Sensors generate observations which are pushed to the service (so the service may act like a notification broker). The observations are published on one topic while sensor status messages (created by the service) are published on another. Clients can subscribe for both types of messages. For the observation topic subscribers can use message content filters that allow at least xpath expressions but can also be more specific filters (encoded in XML). I would like to extend the notification producer interface with some additional operations (DescribeSensor, GetCapabilities). Depending on the use case, even the RegisterPublisher and Notify operation from WSN could be realized by that service. If so, the RegisterPublisher request would make use of the extensibility mechanism defined for that operation to send also the sensor description in XML. Feedback on how muse could / should be used to handle this scenario would be most appreciated! Ok, let me explain what I accomplished so far. First of all, I tried to create a wsdl description for the new service. As I am not too familiar with using wsdl defined web services, I may have made silly mistakes - if so please tell me what I did wrong. That wsdl used imports to reference definitions from other wsdl files (the WS-Notification and -Resource specs). For my custom operations I needed to import schema which defined the request / response messages and types used in these operations. After some trials with wsdlmerge I got this exception message: C:\muse-test\wsdlmerge_test>wsdlmerge.bat -uri http://www.opengis.net/sas/1.0.0 -address http://localhost:8080/52nSAS/sas -output SASmerged.wsdl -verbose SAS.ws dl WS-BaseNotification-1_3.wsdl WS-BrokeredNotification-1_3.wsdl WS-Resource-1_2 .wsdl WS-ResourceProperties-1_2.wsdl SEVERE: [ID = 'WsdlMergeFailed'] wsdlmerge encountered an error. Use -verbose to see more detailed information. An exception was caught: null The exception generated the following stacktrace: java.lang.NullPointerException at org.apache.muse.tools.generator.util.DefinitionInfo.createOutput(Defi nitionInfo.java:198) at org.apache.muse.tools.generator.util.DefinitionInfo.createOperation(D efinitionInfo.java:173) at org.apache.muse.tools.generator.util.DefinitionInfo.addOperation(Defi nitionInfo.java:308) at org.apache.muse.tools.generator.WsdlMerge.copyOperations(WsdlMerge.ja va:340) at org.apache.muse.tools.generator.WsdlMerge.merge(WsdlMerge.java:219) at org.apache.muse.tools.generator.WsdlMerge.run(WsdlMerge.java:141) at org.apache.muse.tools.generator.WsdlMerge.main(WsdlMerge.java:113) The wsdl is attached (SAS.wsdl). I also created my own wsdl (see attached wsdl: SASallinone.wsdl) which contains all the message definitions and which imports all required schema (quite a bunch). Then I run wsdl2java. That worked, but the result is not exactly what I expected (though that may be due to my insufficient knowledge of muse). Also, there was a warning that I do not understand because the WS-ResourceProperties-1_2.xsd is in the directory where the wsdl file is and the schema import looks ok to me: C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl -output test -verbose WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found. C:\muse-test\wsdl>wsdlmerge However, code has been generated; the classes (excluding the interfaces) look like this: (MyCapability1) package org.oasis_open.docs.wsn.br_2; import org.apache.muse.ws.addressing.EndpointReference; import org.apache.muse.core.AbstractCapability; import java.util.Date; import org.w3c.dom.Element; public class MyCapability extends AbstractCapability implements IMyCapability { public Element registerPublisher(EndpointReference PublisherReference, Element[] Topic, boolean Demand, Date InitialTerminationTime) throws Exception { //TODO implement registerPublisher throw new RuntimeException("Unimplemented Method: registerPublisher"); } } (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"); } } 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? 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). 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)? 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? o In the SASallinone.wsdl I added the Notify operation from the NotificationConsumer interface to the services binding and port type. * 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? Will a Renew or Destroy request for a certain Subscription be differentiated from requests to other Subscriptions via some parameters added by muse to the subscription endpoint? o How could we implement a RegisterPublisherManager in muse? Would we just have to add another service binding to the wsdl before generating source code? The operations of that manager would be quite similar to those of the SubscriptionManager, could we profit from that? Please help me getting started. Thanks. Johannes <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://www.opengis.net/sas/1.0.0" xmlns:sas="http://www.opengis.net/sas/1.0.0" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl-soap12="http://schemas.xmlsoap.org/wsdl/soap12" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2" xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2" xmlns:wsrf-rl="http://docs.oasis-open.org/wsrf/rl-2" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" xmlns:wsrf-rpw="http://docs.oasis-open.org/wsrf/rpw-2" xmlns:wsrmd="http://docs.oasis-open.org/wsrf/rmd-1" xmlns:wsn-b="http://docs.oasis-open.org/wsn/b-2" xmlns:wsn-bw="http://docs.oasis-open.org/wsn/bw-2" xmlns:wsn-brw="http://docs.oasis-open.org/wsn/brw-2" xmlns:wsn-t="http://docs.oasis-open.org/wsn/t-1" xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd" xmlns:muws2="http://docs.oasis-open.org/wsdm/muws2-2.xsd" xmlns:sml="http://www.opengis.net/sensorML/1.0.1" xmlns:ows="http://www.opengis.net/ows/1.1" name="SAS"> <!-- Bring in required wsdl definitions --> <wsdl:import namespace="http://docs.oasis-open.org/wsn/bw-2" location="WS-BaseNotification-1_3.wsdl"/> <wsdl:import namespace="http://docs.oasis-open.org/wsn/brw-2" location="WS-BrokeredNotification-1_3.wsdl"/> <wsdl:import namespace="http://docs.oasis-open.org/wsrf/rw-2" location="WS-Resource-1_2.wsdl"/> <wsdl:import namespace="http://docs.oasis-open.org/wsrf/rpw-2" location="WS-ResourceProperties-1_2.wsdl"/> <wsdl:types> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/ows/1.1"> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsAll.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/sensorML/1.0.1"> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-sensorML.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/08/addressing"> <xsd:include schemaLocation="WS-Addressing-2005_08.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/ws/2004/09/mex"> <xsd:include schemaLocation="WS-MetadataExchange-2004_09.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rl-2"> <xsd:include schemaLocation="WS-ResourceLifetime-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rp-2"> <xsd:include schemaLocation="WS-ResourceProperties-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/r-2"> <xsd:include schemaLocation="WS-Resource-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rmd-1"> <xsd:include schemaLocation="WS-ResourceMetadataDescriptor-CD-01.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsdm/muws1-2.xsd"> <xsd:include schemaLocation="WSDM-MUWS-Part1-1_1.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsdm/muws2-2.xsd"> <xsd:include schemaLocation="WSDM-MUWS-Part2-1_1.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/b-2"> <xsd:include schemaLocation="WS-BaseNotification-1_3.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/t-1"> <xsd:include schemaLocation="WS-Topics-1_3.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/br-2"> <xsd:include schemaLocation="WS-BrokeredNotification-1_3.xsd"/> </xsd:schema> <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> </wsdl:types> <!-- ============= MESSAGES ============= --> <!-- SAS specific messages --> <wsdl:message name="GetCapabilitiesRequest"> <wsdl:part name="GetCapabilitiesRequest" element="sas:GetCapabilities"/> </wsdl:message> <wsdl:message name="GetCapabilitiesResponse"> <wsdl:part name="GetCapabilitiesResponse" element="sas:Capabilities"/> </wsdl:message> <wsdl:message name="DescribeSensorRequest"> <wsdl:part name="DescribeSensorRequest" element="sas:DescribeSensor"/> </wsdl:message> <wsdl:message name="DescribeSensorResponse"> <!-- TODO: check this ... make sure that all valid SensorML elements are included --> <wsdl:part name="DescribeSensorResponse" element="sml:SensorML"/> </wsdl:message> <wsdl:message name="GetMetadataMsg"> <wsdl:part name="GetMetadataMsg" element="wsx:GetMetadata"/> </wsdl:message> <wsdl:message name="GetMetadataResponseMsg"> <wsdl:part name="GetMetadataResponseMsg" element="wsx:Metadata"/> </wsdl:message> <wsdl:message name="ServiceException"> <wsdl:part name="ServiceException" type="sas:OWSServiceException"/> </wsdl:message> <!-- <wsdl:message name="EmptyResponse"> <wsdl:part name="EmptyResponse" type="xsd:anyType"/> </wsdl:message> --> <!-- =================================================== --> <!-- ==================== SAS PortType ==================== --> <!-- =================================================== --> <wsdl:portType name="sasPortType" wsrf-rp:ResourceProperties="sas:SasResourceProperties"> <!-- ============= implements GetCapabilities ============= --> <wsdl:operation name="GetCapabilities"> <wsdl:input wsa:Action="http://www.opengis.net/sas/GetCapabilitiesRequest" message="sas:GetCapabilitiesRequest"/> <wsdl:output wsa:Action="http://www.opengis.net/sas/GetCapabilitiesResponse" message="sas:GetCapabilitiesResponse"/> <wsdl:fault name="Exception" message="sas:ServiceException"/> </wsdl:operation> <!-- ============= implements DescribeSensor ============= --> <wsdl:operation name="DescribeSensor"> <wsdl:input wsa:Action="http://www.opengis.net/sas/DescribeSensorRequest" message="sas:DescribeSensorRequest"/> <wsdl:output wsa:Action="http://www.opengis.net/sas/DescribeSensorResponse" message="sas:DescribeSensorResponse"/> <wsdl:fault name="Exception" message="sas:ServiceException"/> </wsdl:operation> <!-- ============= extends NotificationConsumer ============= --> <wsdl:operation name="Notify"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify" message="wsn-bw:Notify"/> <!-- <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/NotifyResponse" message="sas:EmptyResponse"/> --> </wsdl:operation> <!-- ============= extends NotificationProducer ============= --> <wsdl:operation name="Subscribe"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest" message="wsn-bw:SubscribeRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse" message="wsn-bw:SubscribeResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="InvalidFilterFault" message="wsn-bw:InvalidFilterFault"/> <wsdl:fault name="TopicExpressionDialectUnknownFault" message="wsn-bw:TopicExpressionDialectUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="wsn-bw:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/> <wsdl:fault name="InvalidProducerPropertiesExpressionFault" message="wsn-bw:InvalidProducerPropertiesExpressionFault"/> <wsdl:fault name="InvalidMessageContentExpressionFault" message="wsn-bw:InvalidMessageContentExpressionFault"/> <wsdl:fault name="UnacceptableInitialTerminationTimeFault" message="wsn-bw:UnacceptableInitialTerminationTimeFault"/> <wsdl:fault name="UnrecognizedPolicyRequestFault" message="wsn-bw:UnrecognizedPolicyRequestFault"/> <wsdl:fault name="UnsupportedPolicyRequestFault" message="wsn-bw:UnsupportedPolicyRequestFault"/> <wsdl:fault name="NotifyMessageNotSupportedFault" message="wsn-bw:NotifyMessageNotSupportedFault"/> <wsdl:fault name="SubscribeCreationFailedFault" message="wsn-bw:SubscribeCreationFailedFault"/> </wsdl:operation> <wsdl:operation name="GetCurrentMessage"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageRequest" message="wsn-bw:GetCurrentMessageRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageResponse" message="wsn-bw:GetCurrentMessageResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="TopicExpressionDialectUnknownFault" message="wsn-bw:TopicExpressionDialectUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="wsn-bw:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/> <wsdl:fault name="NoCurrentMessageOnTopicFault" message="wsn-bw:NoCurrentMessageOnTopicFault"/> <wsdl:fault name="MultipleTopicsSpecifiedFault" message="wsn-bw:MultipleTopicsSpecifiedFault"/> </wsdl:operation> <!-- ========= extends RegisterPublisher ======= --> <!-- Will be used by SAS to both register push-style sensors but also to register pull-style for SOS (via extension mechanism - has to be specified) --> <wsdl:operation name="RegisterPublisher"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherRequest" message="wsn-brw:RegisterPublisherRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherResponse" message="wsn-brw:RegisterPublisherResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="wsn-bw:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="wsn-bw:TopicNotSupportedFault"/> <wsdl:fault name="PublisherRegistrationRejectedFault" message="wsn-brw:PublisherRegistrationRejectedFault"/> <wsdl:fault name="PublisherRegistrationFailedFault" message="wsn-brw:PublisherRegistrationFailedFault"/> <wsdl:fault name="UnacceptableInitialTerminationTimeFault" message="wsn-bw:UnacceptableInitialTerminationTimeFault"/> </wsdl:operation> <!-- =========== implements WS-MetadataExchange (2004) =========== --> <wsdl:operation name="GetMetadata"> <wsdl:input wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata" name="GetMetadataMsg" message="sas:GetMetadataMsg"/> <wsdl:output wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse" name="GetMetadataResponseMsg" message="sas:GetMetadataResponseMsg"/> </wsdl:operation> <!-- =========== implements WS-ResourceProperties operations =========== --> <wsdl:operation name="GetResourcePropertyDocument"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest" name="GetResourcePropertyDocumentRequest" message="wsrf-rpw:GetResourcePropertyDocumentRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse" name="GetResourcePropertyDocumentResponse" message="wsrf-rpw:GetResourcePropertyDocumentResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/> </wsdl:operation> <wsdl:operation name="GetResourceProperty"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest" name="GetResourcePropertyRequest" message="wsrf-rpw:GetResourcePropertyRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse" name="GetResourcePropertyResponse" message="wsrf-rpw:GetResourcePropertyResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrf-rpw:InvalidResourcePropertyQNameFault"/> </wsdl:operation> <wsdl:operation name="GetMultipleResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest" name="GetMultipleResourcePropertiesRequest" message="wsrf-rpw:GetMultipleResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse" name="GetMultipleResourcePropertiesResponse" message="wsrf-rpw:GetMultipleResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrf-rpw:InvalidResourcePropertyQNameFault"/> </wsdl:operation> <wsdl:operation name="QueryResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest" name="QueryResourcePropertiesRequest" message="wsrf-rpw:QueryResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse" name="QueryResourcePropertiesResponse" message="wsrf-rpw:QueryResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/> <wsdl:fault name="UnknownQueryExpressionDialectFault" message="wsrf-rpw:UnknownQueryExpressionDialectFault"/> <wsdl:fault name="InvalidQueryExpressionFault" message="wsrf-rpw:InvalidQueryExpressionFault"/> <wsdl:fault name="QueryEvaluationErrorFault" message="wsrf-rpw:QueryEvaluationErrorFault"/> </wsdl:operation> <wsdl:operation name="SetResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest" name="SetResourcePropertiesRequest" message="wsrf-rpw:SetResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse" name="SetResourcePropertiesResponse" message="wsrf-rpw:SetResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="wsrf-rw:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="wsrf-rw:ResourceUnavailableFault"/> <wsdl:fault name="InvalidModificationFault" message="wsrf-rpw:InvalidModificationFault"/> <wsdl:fault name="UnableToModifyResourcePropertyFault" message="wsrf-rpw:UnableToModifyResourcePropertyFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="wsrf-rpw:InvalidResourcePropertyQNameFault"/> <wsdl:fault name="SetResourcePropertyRequestFailedFault" message="wsrf-rpw:SetResourcePropertyRequestFailedFault"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions> <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://www.opengis.net/sas/1.0.0" xmlns:sas="http://www.opengis.net/sas/1.0.0" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl-soap12="http://schemas.xmlsoap.org/wsdl/soap12" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2" xmlns:wsrf-rl="http://docs.oasis-open.org/wsrf/rl-2" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wsrf-rp="http://docs.oasis-open.org/wsrf/rp-2" xmlns:wsrmd="http://docs.oasis-open.org/wsrf/rmd-1" xmlns:wsn-b="http://docs.oasis-open.org/wsn/b-2" xmlns:wsn-br="http://docs.oasis-open.org/wsn/br-2" xmlns:wsn-t="http://docs.oasis-open.org/wsn/t-1" xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd" xmlns:muws2="http://docs.oasis-open.org/wsdm/muws2-2.xsd" xmlns:sml="http://www.opengis.net/sensorML/1.0.1" xmlns:ows="http://www.opengis.net/ows/1.1" name="SAS"> <wsdl:types> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/XML/1998/namespace"> <xsd:include schemaLocation="XML-Namespace-1998.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/1999/xlink"> <xsd:include schemaLocation="OGC-XLINK-1_0_0-xlinks.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="urn:us:gov:ic:ism:v2"> <xsd:include schemaLocation="OGC-IC-ISM-v2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/2001/SMIL20/"> <xsd:include schemaLocation="OGC-SMIL-smil20.xsd"/> <xsd:include schemaLocation="OGC-SMIL-smil20-language.xsd"/> <xsd:include schemaLocation="OGC-SMIL-xml-mod.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/ows/1.1"> <xsd:include schemaLocation="OGC-OWS-1_1_0-ows19115subset.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsAll.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsCommon.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsContents.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsDataIdentification.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsDomainType.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsExceptionReport.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsGetCapabilities.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsGetResourceByID.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsInputOutputData.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsManifest.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsOperationsMetadata.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsServiceIdentification.xsd"/> <xsd:include schemaLocation="OGC-OWS-1_1_0-owsServiceProvider.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/gml"> <xsd:include schemaLocation="OGC-GML-3_1_1-basicTypes.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-coordinateOperations.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-coordinateReferenceSystems.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-coordinateSystems.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-coverage.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-dataQuality.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-datums.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-defaultStyle.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-dictionary.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-direction.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-dynamicFeature.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-feature.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-geometryAggregates.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-geometryBasic0d1d.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-geometryBasic2d.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-geometryComplexes.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-geometryPrimitives.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-gml.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-gmlBase.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-grids.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-measures.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-observation.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-referenceSystems.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-temporal.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-temporalReferenceSystems.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-temporalTopology.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-topology.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-units.xsd"/> <xsd:include schemaLocation="OGC-GML-3_1_1-valueObjects.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/ogc"> <xsd:include schemaLocation="OGC-FILTER-1_1_0-sort.xsd"/> <xsd:include schemaLocation="OGC-FILTER-1_1_0-expr.xsd"/> <xsd:include schemaLocation="OGC-FILTER-1_1_0-filter.xsd"/> <xsd:include schemaLocation="OGC-FILTER-1_1_0-filterCapabilities.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/swe/1.0.1"> <xsd:include schemaLocation="OGC-SWE-1_0_1-aggregateTypes.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-basicTypes.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-curveTypes.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-data.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-encoding.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-phenomenon.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-positionTypes.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-simpleTypes.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-swe.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-temporalAggregates.xsd"/> <xsd:include schemaLocation="OGC-SWE-1_0_1-xmlData.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.opengis.net/sensorML/1.0.1"> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-base.xsd"/> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-method.xsd"/> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-process.xsd"/> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-sensorML.xsd"/> <xsd:include schemaLocation="OGC-SENSORML-1_0_1-system.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.w3.org/2005/08/addressing"> <xsd:include schemaLocation="WS-Addressing-2005_08.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://schemas.xmlsoap.org/2004/09/mex"> <xsd:include schemaLocation="WS-MetadataExchange-2004_09.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rl-2"> <xsd:include schemaLocation="WS-ResourceLifetime-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rp-2"> <xsd:include schemaLocation="WS-ResourceProperties-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/r-2"> <xsd:include schemaLocation="WS-Resource-1_2.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsrf/rmd-1"> <xsd:include schemaLocation="WS-ResourceMetadataDescriptor-CD-01.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsdm/muws1-2.xsd"> <xsd:include schemaLocation="WSDM-MUWS-Part1-1_1.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsdm/muws2-2.xsd"> <xsd:include schemaLocation="WSDM-MUWS-Part2-1_1.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/b-2"> <xsd:include schemaLocation="WS-BaseNotification-1_3.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/t-1"> <xsd:include schemaLocation="WS-Topics-1_3.xsd"/> </xsd:schema> <xsd:schema elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/wsn/br-2"> <xsd:include schemaLocation="WS-BrokeredNotification-1_3.xsd"/> </xsd:schema> <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> </wsdl:types> <wsdl:message name="GetMetadataMsg"> <wsdl:part name="GetMetadataMsg" element="wsx:GetMetadata" /> </wsdl:message> <wsdl:message name="GetMetadataResponseMsg"> <wsdl:part name="GetMetadataResponseMsg" element="wsx:Metadata" /> </wsdl:message> <wsdl:message name="DestroyRequest"> <wsdl:part name="DestroyRequest" element="wsrf-rl:Destroy" /> </wsdl:message> <wsdl:message name="DestroyResponse"> <wsdl:part name="DestroyResponse" element="wsrf-rl:DestroyResponse" /> </wsdl:message> <wsdl:message name="ResourceNotDestroyedFault"> <wsdl:part name="ResourceNotDestroyedFault" element="wsrf-rl:ResourceNotDestroyedFault" /> </wsdl:message> <wsdl:message name="ResourceUnknownFault"> <wsdl:part name="ResourceUnknownFault" element="wsrf-r:ResourceUnknownFault" /> </wsdl:message> <wsdl:message name="ResourceUnavailableFault"> <wsdl:part name="ResourceUnavailableFault" element="wsrf-r:ResourceUnavailableFault" /> </wsdl:message> <wsdl:message name="SetTerminationTimeRequest"> <wsdl:part name="SetTerminationTimeRequest" element="wsrf-rl:SetTerminationTime" /> </wsdl:message> <wsdl:message name="SetTerminationTimeResponse"> <wsdl:part name="SetTerminationTimeResponse" element="wsrf-rl:SetTerminationTimeResponse" /> </wsdl:message> <wsdl:message name="UnableToSetTerminationTimeFault"> <wsdl:part name="UnableToSetTerminationTimeFault" element="wsrf-rl:UnableToSetTerminationTimeFault" /> </wsdl:message> <wsdl:message name="TerminationTimeChangeRejectedFault"> <wsdl:part name="TerminationTimeChangeRejectedFault" element="wsrf-rl:TerminationTimeChangeRejectedFault" /> </wsdl:message> <wsdl:message name="GetResourcePropertyDocumentRequest"> <wsdl:part name="GetResourcePropertyDocumentRequest" element="wsrf-rp:GetResourcePropertyDocument" /> </wsdl:message> <wsdl:message name="GetResourcePropertyDocumentResponse"> <wsdl:part name="GetResourcePropertyDocumentResponse" element="wsrf-rp:GetResourcePropertyDocumentResponse" /> </wsdl:message> <wsdl:message name="GetResourcePropertyRequest"> <wsdl:part name="GetResourcePropertyRequest" element="wsrf-rp:GetResourceProperty" /> </wsdl:message> <wsdl:message name="GetResourcePropertyResponse"> <wsdl:part name="GetResourcePropertyResponse" element="wsrf-rp:GetResourcePropertyResponse" /> </wsdl:message> <wsdl:message name="InvalidResourcePropertyQNameFault"> <wsdl:part name="InvalidResourcePropertyQNameFault" element="wsrf-rp:InvalidResourcePropertyQNameFault" /> </wsdl:message> <wsdl:message name="GetMultipleResourcePropertiesRequest"> <wsdl:part name="GetMultipleResourcePropertiesRequest" element="wsrf-rp:GetMultipleResourceProperties" /> </wsdl:message> <wsdl:message name="GetMultipleResourcePropertiesResponse"> <wsdl:part name="GetMultipleResourcePropertiesResponse" element="wsrf-rp:GetMultipleResourcePropertiesResponse" /> </wsdl:message> <wsdl:message name="QueryResourcePropertiesRequest"> <wsdl:part name="QueryResourcePropertiesRequest" element="wsrf-rp:QueryResourceProperties" /> </wsdl:message> <wsdl:message name="QueryResourcePropertiesResponse"> <wsdl:part name="QueryResourcePropertiesResponse" element="wsrf-rp:QueryResourcePropertiesResponse" /> </wsdl:message> <wsdl:message name="UnknownQueryExpressionDialectFault"> <wsdl:part name="UnknownQueryExpressionDialectFault" element="wsrf-rp:UnknownQueryExpressionDialectFault" /> </wsdl:message> <wsdl:message name="InvalidQueryExpressionFault"> <wsdl:part name="InvalidQueryExpressionFault" element="wsrf-rp:InvalidQueryExpressionFault" /> </wsdl:message> <wsdl:message name="QueryEvaluationErrorFault"> <wsdl:part name="QueryEvaluationErrorFault" element="wsrf-rp:QueryEvaluationErrorFault" /> </wsdl:message> <wsdl:message name="SetResourcePropertiesRequest"> <wsdl:part name="SetResourcePropertiesRequest" element="wsrf-rp:SetResourceProperties" /> </wsdl:message> <wsdl:message name="SetResourcePropertiesResponse"> <wsdl:part name="SetResourcePropertiesResponse" element="wsrf-rp:SetResourcePropertiesResponse" /> </wsdl:message> <wsdl:message name="InvalidModificationFault"> <wsdl:part name="InvalidModificationFault" element="wsrf-rp:InvalidModificationFault" /> </wsdl:message> <wsdl:message name="UnableToModifyResourcePropertyFault"> <wsdl:part name="UnableToModifyResourcePropertyFault" element="wsrf-rp:UnableToModifyResourcePropertyFault" /> </wsdl:message> <wsdl:message name="SetResourcePropertyRequestFailedFault"> <wsdl:part name="SetResourcePropertyRequestFailedFault" element="wsrf-rp:SetResourcePropertyRequestFailedFault" /> </wsdl:message> <wsdl:message name="SubscribeRequest"> <wsdl:part name="SubscribeRequest" element="wsn-b:Subscribe" /> </wsdl:message> <wsdl:message name="SubscribeResponse"> <wsdl:part name="SubscribeResponse" element="wsn-b:SubscribeResponse" /> </wsdl:message> <wsdl:message name="SubscribeCreationFailedFault"> <wsdl:part name="SubscribeCreationFailedFault" element="wsn-b:SubscribeCreationFailedFault" /> </wsdl:message> <wsdl:message name="TopicExpressionDialectUnknownFault"> <wsdl:part name="TopicExpressionDialectUnknownFault" element="wsn-b:TopicExpressionDialectUnknownFault" /> </wsdl:message> <wsdl:message name="InvalidFilterFault"> <wsdl:part name="InvalidFilterFault" element="wsn-b:InvalidFilterFault" /> </wsdl:message> <wsdl:message name="InvalidProducerPropertiesExpressionFault"> <wsdl:part name="InvalidProducerPropertiesExpressionFault" element="wsn-b:InvalidProducerPropertiesExpressionFault" /> </wsdl:message> <wsdl:message name="InvalidMessageContentExpressionFault"> <wsdl:part name="InvalidMessageContentExpressionFault" element="wsn-b:InvalidMessageContentExpressionFault" /> </wsdl:message> <wsdl:message name="UnrecognizedPolicyRequestFault"> <wsdl:part name="UnrecognizedPolicyRequestFault" element="wsn-b:UnrecognizedPolicyRequestFault" /> </wsdl:message> <wsdl:message name="UnsupportedPolicyRequestFault"> <wsdl:part name="UnsupportedPolicyRequestFault" element="wsn-b:UnsupportedPolicyRequestFault" /> </wsdl:message> <wsdl:message name="NotifyMessageNotSupportedFault"> <wsdl:part name="NotifyMessageNotSupportedFault" element="wsn-b:NotifyMessageNotSupportedFault" /> </wsdl:message> <wsdl:message name="UnacceptableInitialTerminationTimeFault"> <wsdl:part name="UnacceptableInitialTerminationTimeFault" element="wsn-b:UnacceptableInitialTerminationTimeFault" /> </wsdl:message> <wsdl:message name="GetCurrentMessageRequest"> <wsdl:part name="GetCurrentMessageRequest" element="wsn-b:GetCurrentMessage" /> </wsdl:message> <wsdl:message name="GetCurrentMessageResponse"> <wsdl:part name="GetCurrentMessageResponse" element="wsn-b:GetCurrentMessageResponse" /> </wsdl:message> <wsdl:message name="InvalidTopicExpressionFault"> <wsdl:part name="InvalidTopicExpressionFault" element="wsn-b:InvalidTopicExpressionFault" /> </wsdl:message> <wsdl:message name="TopicNotSupportedFault"> <wsdl:part name="TopicNotSupportedFault" element="wsn-b:TopicNotSupportedFault" /> </wsdl:message> <wsdl:message name="MultipleTopicsSpecifiedFault"> <wsdl:part name="MultipleTopicsSpecifiedFault" element="wsn-b:MultipleTopicsSpecifiedFault" /> </wsdl:message> <wsdl:message name="NoCurrentMessageOnTopicFault"> <wsdl:part name="NoCurrentMessageOnTopicFault" element="wsn-b:NoCurrentMessageOnTopicFault" /> </wsdl:message> <wsdl:message name="Notify"> <wsdl:part name="Notify" element="wsn-b:Notify" /> </wsdl:message> <wsdl:message name="RegisterPublisher"> <wsdl:part name="RegisterPublisher" element="wsn-br:RegisterPublisher" /> </wsdl:message> <wsdl:message name="RegisterPublisherResponse"> <wsdl:part name="RegisterPublisherResponse" element="wsn-br:RegisterPublisherResponse" /> </wsdl:message> <!-- ============= MESSAGES ============= --> <!-- SAS specific messages --> <wsdl:message name="GetCapabilitiesRequest"> <wsdl:part name="GetCapabilitiesRequest" element="sas:GetCapabilities"/> </wsdl:message> <wsdl:message name="GetCapabilitiesResponse"> <wsdl:part name="GetCapabilitiesResponse" element="sas:Capabilities"/> </wsdl:message> <wsdl:message name="DescribeSensorRequest"> <wsdl:part name="DescribeSensorRequest" element="sas:DescribeSensor"/> </wsdl:message> <wsdl:message name="DescribeSensorResponse"> <!-- TODO: check this ... make sure that all valid SensorML elements are included --> <wsdl:part name="DescribeSensorResponse" element="sml:SensorML"/> </wsdl:message> <wsdl:message name="ServiceException"> <wsdl:part name="ServiceException" type="sas:OWSServiceException"/> </wsdl:message> <!-- <wsdl:message name="EmptyResponse"> <wsdl:part name="EmptyResponse" type="xsd:anyType"/> </wsdl:message> --> <!-- =================================================== --> <!-- ==================== SAS PortType ==================== --> <!-- =================================================== --> <wsdl:portType name="sasPortType" wsrf-rp:ResourceProperties="sas:SasResourceProperties"> <!-- ============= implements GetCapabilities ============= --> <wsdl:operation name="GetCapabilities"> <wsdl:input wsa:Action="http://www.opengis.net/sas/GetCapabilitiesRequest" message="sas:GetCapabilitiesRequest"/> <wsdl:output wsa:Action="http://www.opengis.net/sas/GetCapabilitiesResponse" message="sas:GetCapabilitiesResponse"/> <wsdl:fault name="Exception" message="sas:ServiceException"/> </wsdl:operation> <!-- ============= implements DescribeSensor ============= --> <wsdl:operation name="DescribeSensor"> <wsdl:input wsa:Action="http://www.opengis.net/sas/DescribeSensorRequest" message="sas:DescribeSensorRequest"/> <wsdl:output wsa:Action="http://www.opengis.net/sas/DescribeSensorResponse" message="sas:DescribeSensorResponse"/> <wsdl:fault name="Exception" message="sas:ServiceException"/> </wsdl:operation> <!-- ============= extends NotificationConsumer ============= --> <wsdl:operation name="Notify"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/Notify" message="sas:Notify"/> <!-- <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationConsumer/NotifyResponse" message="sas:EmptyResponse"/> --> </wsdl:operation> <!-- ============= extends NotificationProducer ============= --> <wsdl:operation name="Subscribe"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest" message="sas:SubscribeRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeResponse" message="sas:SubscribeResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="InvalidFilterFault" message="sas:InvalidFilterFault"/> <wsdl:fault name="TopicExpressionDialectUnknownFault" message="sas:TopicExpressionDialectUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="sas:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/> <wsdl:fault name="InvalidProducerPropertiesExpressionFault" message="sas:InvalidProducerPropertiesExpressionFault"/> <wsdl:fault name="InvalidMessageContentExpressionFault" message="sas:InvalidMessageContentExpressionFault"/> <wsdl:fault name="UnacceptableInitialTerminationTimeFault" message="sas:UnacceptableInitialTerminationTimeFault"/> <wsdl:fault name="UnrecognizedPolicyRequestFault" message="sas:UnrecognizedPolicyRequestFault"/> <wsdl:fault name="UnsupportedPolicyRequestFault" message="sas:UnsupportedPolicyRequestFault"/> <wsdl:fault name="NotifyMessageNotSupportedFault" message="sas:NotifyMessageNotSupportedFault"/> <wsdl:fault name="SubscribeCreationFailedFault" message="sas:SubscribeCreationFailedFault"/> </wsdl:operation> <wsdl:operation name="GetCurrentMessage"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageRequest" message="sas:GetCurrentMessageRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/GetCurrentMessageResponse" message="sas:GetCurrentMessageResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="TopicExpressionDialectUnknownFault" message="sas:TopicExpressionDialectUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="sas:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/> <wsdl:fault name="NoCurrentMessageOnTopicFault" message="sas:NoCurrentMessageOnTopicFault"/> <wsdl:fault name="MultipleTopicsSpecifiedFault" message="sas:MultipleTopicsSpecifiedFault"/> </wsdl:operation> <!-- ========= extends RegisterPublisher ======= --> <!-- Will be used by SAS to both register push-style sensors but also to register pull-style for SOS (via extension mechanism - has to be specified) --> <wsdl:operation name="RegisterPublisher"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherRequest" message="sas:RegisterPublisher"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsn/brw-2/RegisterPublisher/RegisterPublisherResponse" message="sas:RegisterPublisherResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="InvalidTopicExpressionFault" message="sas:InvalidTopicExpressionFault"/> <wsdl:fault name="TopicNotSupportedFault" message="sas:TopicNotSupportedFault"/> <wsdl:fault name="PublisherRegistrationRejectedFault" message="sas:PublisherRegistrationRejectedFault"/> <wsdl:fault name="PublisherRegistrationFailedFault" message="sas:PublisherRegistrationFailedFault"/> <wsdl:fault name="UnacceptableInitialTerminationTimeFault" message="sas:UnacceptableInitialTerminationTimeFault"/> </wsdl:operation> <!-- =========== implements WS-MetadataExchange (2004) =========== --> <!-- <wsdl:operation name="GetMetadata"> <wsdl:input wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata" name="GetMetadataMsg" message="sas:GetMetadataMsg" /> <wsdl:output wsa:Action="http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadataResponse" name="GetMetadataResponseMsg" message="sas:GetMetadataResponseMsg" /> </wsdl:operation> --> <!-- =========== implements WS-ResourceProperties operations =========== --> <wsdl:operation name="GetResourcePropertyDocument"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentRequest" name="GetResourcePropertyDocumentRequest" message="sas:GetResourcePropertyDocumentRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourcePropertyDocument/GetResourcePropertyDocumentResponse" name="GetResourcePropertyDocumentResponse" message="sas:GetResourcePropertyDocumentResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/> </wsdl:operation> <wsdl:operation name="GetResourceProperty"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyRequest" name="GetResourcePropertyRequest" message="sas:GetResourcePropertyRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetResourceProperty/GetResourcePropertyResponse" name="GetResourcePropertyResponse" message="sas:GetResourcePropertyResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="sas:InvalidResourcePropertyQNameFault"/> </wsdl:operation> <wsdl:operation name="GetMultipleResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesRequest" name="GetMultipleResourcePropertiesRequest" message="sas:GetMultipleResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/GetMultipleResourceProperties/GetMultipleResourcePropertiesResponse" name="GetMultipleResourcePropertiesResponse" message="sas:GetMultipleResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="sas:InvalidResourcePropertyQNameFault"/> </wsdl:operation> <wsdl:operation name="QueryResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesRequest" name="QueryResourcePropertiesRequest" message="sas:QueryResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/QueryResourceProperties/QueryResourcePropertiesResponse" name="QueryResourcePropertiesResponse" message="sas:QueryResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/> <wsdl:fault name="UnknownQueryExpressionDialectFault" message="sas:UnknownQueryExpressionDialectFault"/> <wsdl:fault name="InvalidQueryExpressionFault" message="sas:InvalidQueryExpressionFault"/> <wsdl:fault name="QueryEvaluationErrorFault" message="sas:QueryEvaluationErrorFault"/> </wsdl:operation> <wsdl:operation name="SetResourceProperties"> <wsdl:input wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesRequest" name="SetResourcePropertiesRequest" message="sas:SetResourcePropertiesRequest"/> <wsdl:output wsa:Action="http://docs.oasis-open.org/wsrf/rpw-2/SetResourceProperties/SetResourcePropertiesResponse" name="SetResourcePropertiesResponse" message="sas:SetResourcePropertiesResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceUnavailableFault" message="sas:ResourceUnavailableFault"/> <wsdl:fault name="InvalidModificationFault" message="sas:InvalidModificationFault"/> <wsdl:fault name="UnableToModifyResourcePropertyFault" message="sas:UnableToModifyResourcePropertyFault"/> <wsdl:fault name="InvalidResourcePropertyQNameFault" message="sas:InvalidResourcePropertyQNameFault"/> <wsdl:fault name="SetResourcePropertyRequestFailedFault" message="sas:SetResourcePropertyRequestFailedFault"/> </wsdl:operation> </wsdl:portType> <!-- =================================================== --> <!-- ======== SAS PublisherRegistrationManager PortType======== --> <!-- =================================================== --> <wsdl:portType name="SasPublisherRegistrationManager"> <!-- ========= implements the Renew operation ======= --> <wsdl:operation name="Renew"> <wsdl:input name="RenewRequest" message="sas:RenewRequest"/> <wsdl:output name="RenewResponse" message="sas:RenewResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="UnacceptableTerminationTimeFault" message="sas:UnacceptableTerminationTimeFault"/> </wsdl:operation> <!-- ========= extends PublisherRegistrationManager ======= --> <!--===DestroyRegistration:ImmediateResourceTermination==========--> <wsdl:operation name="DestroyRegistration"> <wsdl:input name="DestroyRegistrationRequest" message="sas:DestroyRegistrationRequest"/> <wsdl:output name="DestroyRegistrationResponse" message="sas:DestroyRegistrationResponse"/> <wsdl:fault name="ResourceUnknownFault" message="sas:ResourceUnknownFault"/> <wsdl:fault name="ResourceNotDestroyedFault" message="sas:ResourceNotDestroyedFault" /> </wsdl:operation> </wsdl:portType> <!-- ============================= ========================= --> <!-- ====================== BINDING ========================= --> <!-- ======================================================= --> <wsdl:binding name="SasBinding" type="sas:sasPortType"> <wsdl-soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetCapabilities"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="Exception"> <wsdl-soap12:fault use="literal" name="Exception"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="DescribeSensor"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="Exception"> <wsdl-soap12:fault use="literal" name="Exception"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="Notify"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <!-- <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> --> </wsdl:operation> <wsdl:operation name="Subscribe"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="InvalidFilterFault"> <wsdl-soap12:fault use="encoded" name="InvalidFilterFault"/> </wsdl:fault> <wsdl:fault name="TopicExpressionDialectUnknownFault"> <wsdl-soap12:fault use="encoded" name="TopicExpressionDialectUnknownFault"/> </wsdl:fault> <wsdl:fault name="InvalidTopicExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/> </wsdl:fault> <wsdl:fault name="TopicNotSupportedFault"> <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/> </wsdl:fault> <wsdl:fault name="InvalidProducerPropertiesExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidProducerPropertiesExpressionFault"/> </wsdl:fault> <wsdl:fault name="InvalidMessageContentExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidMessageContentExpressionFault"/> </wsdl:fault> <wsdl:fault name="UnacceptableInitialTerminationTimeFault"> <wsdl-soap12:fault use="encoded" name="UnacceptableInitialTerminationTimeFault"/> </wsdl:fault> <wsdl:fault name="UnrecognizedPolicyRequestFault"> <wsdl-soap12:fault use="encoded" name="UnrecognizedPolicyRequestFault"/> </wsdl:fault> <wsdl:fault name="UnsupportedPolicyRequestFault"> <wsdl-soap12:fault use="encoded" name="UnsupportedPolicyRequestFault"/> </wsdl:fault> <wsdl:fault name="NotifyMessageNotSupportedFault"> <wsdl-soap12:fault use="encoded" name="NotifyMessageNotSupportedFault"/> </wsdl:fault> <wsdl:fault name="SubscribeCreationFailedFault"> <wsdl-soap12:fault use="encoded" name="SubscribeCreationFailedFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="GetCurrentMessage"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="TopicExpressionDialectUnknownFault"> <wsdl-soap12:fault use="encoded" name="TopicExpressionDialectUnknownFault"/> </wsdl:fault> <wsdl:fault name="InvalidTopicExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/> </wsdl:fault> <wsdl:fault name="TopicNotSupportedFault"> <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/> </wsdl:fault> <wsdl:fault name="NoCurrentMessageOnTopicFault"> <wsdl-soap12:fault use="encoded" name="NoCurrentMessageOnTopicFault"/> </wsdl:fault> <wsdl:fault name="MultipleTopicsSpecifiedFault"> <wsdl-soap12:fault use="encoded" name="MultipleTopicsSpecifiedFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="RegisterPublisher"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="InvalidTopicExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidTopicExpressionFault"/> </wsdl:fault> <wsdl:fault name="TopicNotSupportedFault"> <wsdl-soap12:fault use="encoded" name="TopicNotSupportedFault"/> </wsdl:fault> <wsdl:fault name="PublisherRegistrationRejectedFault"> <wsdl-soap12:fault use="encoded" name="PublisherRegistrationRejectedFault"/> </wsdl:fault> <wsdl:fault name="PublisherRegistrationFailedFault"> <wsdl-soap12:fault use="encoded" name="PublisherRegistrationFailedFault"/> </wsdl:fault> <wsdl:fault name="UnacceptableInitialTerminationTimeFault"> <wsdl-soap12:fault use="encoded" name="UnacceptableInitialTerminationTimeFault"/> </wsdl:fault> </wsdl:operation> <!-- <wsdl:operation name="GetMetadata"> <wsdl-soap12:operation/> <wsdl:input> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output> <wsdl-soap12:body use="literal"/> </wsdl:output> </wsdl:operation> --> <wsdl:operation name="GetResourcePropertyDocument"> <wsdl-soap12:operation/> <wsdl:input name="GetResourcePropertyDocumentRequest"> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output name="GetResourcePropertyDocumentResponse"> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="ResourceUnavailableFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="GetResourceProperty"> <wsdl-soap12:operation/> <wsdl:input name="GetResourcePropertyRequest"> <wsdl-soap12:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:input> <wsdl:output name="GetResourcePropertyResponse"> <wsdl-soap12:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="ResourceUnavailableFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/> </wsdl:fault> <wsdl:fault name="InvalidResourcePropertyQNameFault"> <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="GetMultipleResourceProperties"> <wsdl-soap12:operation/> <wsdl:input name="GetMultipleResourcePropertiesRequest"> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output name="GetMultipleResourcePropertiesResponse"> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="ResourceUnavailableFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/> </wsdl:fault> <wsdl:fault name="InvalidResourcePropertyQNameFault"> <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="QueryResourceProperties"> <wsdl-soap12:operation/> <wsdl:input name="QueryResourcePropertiesRequest"> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output name="QueryResourcePropertiesResponse"> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="ResourceUnavailableFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/> </wsdl:fault> <wsdl:fault name="UnknownQueryExpressionDialectFault"> <wsdl-soap12:fault use="encoded" name="UnknownQueryExpressionDialectFault"/> </wsdl:fault> <wsdl:fault name="InvalidQueryExpressionFault"> <wsdl-soap12:fault use="encoded" name="InvalidQueryExpressionFault"/> </wsdl:fault> <wsdl:fault name="QueryEvaluationErrorFault"> <wsdl-soap12:fault use="encoded" name="QueryEvaluationErrorFault"/> </wsdl:fault> </wsdl:operation> <wsdl:operation name="SetResourceProperties"> <wsdl-soap12:operation/> <wsdl:input name="SetResourcePropertiesRequest"> <wsdl-soap12:body use="literal"/> </wsdl:input> <wsdl:output name="SetResourcePropertiesResponse"> <wsdl-soap12:body use="literal"/> </wsdl:output> <wsdl:fault name="ResourceUnknownFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnknownFault"/> </wsdl:fault> <wsdl:fault name="ResourceUnavailableFault"> <wsdl-soap12:fault use="encoded" name="ResourceUnavailableFault"/> </wsdl:fault> <wsdl:fault name="InvalidModificationFault"> <wsdl-soap12:fault use="encoded" name="InvalidModificationFault"/> </wsdl:fault> <wsdl:fault name="UnableToModifyResourcePropertyFault"> <wsdl-soap12:fault use="encoded" name="UnableToModifyResourcePropertyFault"/> </wsdl:fault> <wsdl:fault name="InvalidResourcePropertyQNameFault"> <wsdl-soap12:fault use="encoded" name="InvalidResourcePropertyQNameFault"/> </wsdl:fault> <wsdl:fault name="SetResourcePropertyRequestFailedFault"> <wsdl-soap12:fault use="encoded" name="SetResourcePropertyRequestFailedFault"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="SasService"> <wsdl:port name="SasPort" binding="sas:SasBinding"> <wsdl-soap12:address location="http://localhost:8080/52nSAS/services/sas"/> </wsdl:port> </wsdl:service> </wsdl:definitions> <!-- C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl -output test - verbose --> --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
Re: generating sources for service using quite complex schemaHi.
So far there was no answer to my questions. So I am wondering whether my first email contained just too much questions for a single email. Should I split the problems I encountered into several emails so that they can be handled with more focus on each specific problem? Best regards, Johannes Johannes Echterhoff schrieb: > Hello. > > I would like to use muse for my scenario but run into problems just > when I wanted to do more than the tutorial. Before describing the > problem, I would like to outline my scenario shortly so that you get > an understanding of what I want to achieve. Did I already mention that > I am a newbie to muse. :-) > > I have to warn you: this email is quite large - so better get a new > cup of coffee before reading. > > The scenario is as follows: Sensors generate observations which are > pushed to the service (so the service may act like a notification > broker). The observations are published on one topic while sensor > status messages (created by the service) are published on another. > Clients can subscribe for both types of messages. For the observation > topic subscribers can use message content filters that allow at least > xpath expressions but can also be more specific filters (encoded in XML). > > I would like to extend the notification producer interface with some > additional operations (DescribeSensor, GetCapabilities). Depending on > the use case, even the RegisterPublisher and Notify operation from WSN > could be realized by that service. If so, the RegisterPublisher > request would make use of the extensibility mechanism defined for that > operation to send also the sensor description in XML. > > Feedback on how muse could / should be used to handle this scenario > would be most appreciated! > > > Ok, let me explain what I accomplished so far. First of all, I tried > to create a wsdl description for the new service. As I am not too > familiar with using wsdl defined web services, I may have made silly > mistakes - if so please tell me what I did wrong. That wsdl used > imports to reference definitions from other wsdl files (the > WS-Notification and -Resource specs). For my custom operations I > needed to import schema which defined the request / response messages > and types used in these operations. > > After some trials with wsdlmerge I got this exception message: > > C:\muse-test\wsdlmerge_test>wsdlmerge.bat -uri > http://www.opengis.net/sas/1.0.0 > -address http://localhost:8080/52nSAS/sas -output SASmerged.wsdl > -verbose SAS.ws > dl WS-BaseNotification-1_3.wsdl WS-BrokeredNotification-1_3.wsdl > WS-Resource-1_2 > .wsdl WS-ResourceProperties-1_2.wsdl > > SEVERE: [ID = 'WsdlMergeFailed'] wsdlmerge encountered an error. Use > -verbose to > see more detailed information. > > An exception was caught: null > > The exception generated the following stacktrace: > > java.lang.NullPointerException > at > org.apache.muse.tools.generator.util.DefinitionInfo.createOutput(Defi > nitionInfo.java:198) > at > org.apache.muse.tools.generator.util.DefinitionInfo.createOperation(D > efinitionInfo.java:173) > at > org.apache.muse.tools.generator.util.DefinitionInfo.addOperation(Defi > nitionInfo.java:308) > at > org.apache.muse.tools.generator.WsdlMerge.copyOperations(WsdlMerge.ja > va:340) > at > org.apache.muse.tools.generator.WsdlMerge.merge(WsdlMerge.java:219) > at > org.apache.muse.tools.generator.WsdlMerge.run(WsdlMerge.java:141) > at > org.apache.muse.tools.generator.WsdlMerge.main(WsdlMerge.java:113) > > The wsdl is attached (SAS.wsdl). > > > I also created my own wsdl (see attached wsdl: SASallinone.wsdl) which > contains all the message definitions and which imports all required > schema (quite a bunch). Then I run wsdl2java. That worked, but the > result is not exactly what I expected (though that may be due to my > insufficient knowledge of muse). Also, there was a warning that I do > not understand because the WS-ResourceProperties-1_2.xsd is in the > directory where the wsdl file is and the schema import looks ok to me: > > C:\muse-test\wsdl>wsdl2java.bat -j2ee mini -wsdl SASallinone.wsdl > -output test -verbose > > WARNING: [ID = 'NoWSRPSchema'] No WS-RP schema found. > > C:\muse-test\wsdl>wsdlmerge > > > However, code has been generated; the classes (excluding the > interfaces) look like this: > > (MyCapability1) > > package org.oasis_open.docs.wsn.br_2; > > import org.apache.muse.ws.addressing.EndpointReference; > import org.apache.muse.core.AbstractCapability; > import java.util.Date; > import org.w3c.dom.Element; > > public class MyCapability extends AbstractCapability implements > IMyCapability { > public Element registerPublisher(EndpointReference > PublisherReference, Element[] Topic, boolean Demand, Date > InitialTerminationTime) throws Exception { > //TODO implement registerPublisher > throw new RuntimeException("Unimplemented Method: > registerPublisher"); > } > } > > > (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"); > } > } > > > 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? > 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). > 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)? > 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? > o In the SASallinone.wsdl I added the Notify operation from > the NotificationConsumer interface to the services binding > and port type. > * 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? Will a Renew or > Destroy request for a certain Subscription be differentiated > from requests to other Subscriptions via some parameters > added by muse to the subscription endpoint? > o How could we implement a RegisterPublisherManager in muse? > Would we just have to add another service binding to the > wsdl before generating source code? The operations of that > manager would be quite similar to those of the > SubscriptionManager, could we profit from that? > > Please help me getting started. > > Thanks. > > Johannes > ------------------------------------------------------------------------ > > --------------------------------------------------------------------- > To unsubscribe, e-mail: muse-user-unsubscribe@... > For additional commands, e-mail: muse-user-help@... --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
|
|
|
RE: generating sources for service using quite complex schemaHi 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:allen.george@...] Sent: Tuesday, May 13, 2008 8:49 AM To: muse-user@... 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: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
Re: generating sources for service using quite complex schemaHi.
Thank you all for your responses. Right now I am at a workshop and do not have enough time to try your suggestions and respond to your emails. Once I am back at home I will definitely make up for that. I will also try to break up my questions and the responses into separate emails. :-) Talk to you soon. Johannes Vinh Nguyen (vinguye2) schrieb: > 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:allen.george@...] > Sent: Tuesday, May 13, 2008 8:49 AM > To: muse-user@... > 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: muse-user-unsubscribe@... > For additional commands, e-mail: muse-user-help@... > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: muse-user-unsubscribe@... > For additional commands, e-mail: muse-user-help@... > > > --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
referencing subscriptions via EPRs (was: Re: generating sources for service using quite complex schema)Hi.
As suggested I break up my questions into separate emails. This one covers the question on how subscriptions generated via muse reference their manager endpoint. My question was: 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? Allen wrote: > 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... Vinh wrote: > 6) A SubscriptionManager resource manages a single subscription. So if > you call Subscribe 5 times, you will have 5 instances of > SubscriptionManager. This seems to be contradictory. :-) Or is it not? Both approaches might work. The first one using reference parameters to disambiguate the subscription called for. The second approach could work if muse created a new SubscriptionManager resource for each subscription. Any more thoughts on this one? Johannes --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
missing parameter for operation in generated source code (was: Re: generating sources for service using quite complex schema)Hi.
As suggested I break up my questions into separate emails. This one covers the topic of the missing request parameter of my custom GetCapabilities operation. My question was: 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? Allen wrote: >> (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? > 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. > You can find the complete schema definition I used - together with my current wsdl files - in the zip package at http://ifgi.uni-muenster.de/~echterhj/SAS/SAS_with_muse.zip (for convenience I copied two schema fragments to the end of this email) Maybe you can find some time to have a look at the schema - there are a lot of schema files in there, the interesting ones should be named OGC-SAS*, OGC-OWS* and OGC-SensorML*. Allen also wrote: >> * 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> That is a good question. Maybe there is a bug in my wsdl? At least oXygen, my XML tool, seems to recognize the GetCapabilities operation in my wsdl file as it generates both request and response templates as expected. >> 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) the DescribeSensor request element (see OGC-SAS-1_0_0-sasDescribeSensor.xsd and OGC-SAS-1_0_0-sasCommon.xsd in the zipfile mentioned earlier). The custom serializer sounds interesting. I have read the passage in the manual concerning the deployment-descriptor and also had a look at the javadoc of org.apache.muse.core.serializer.Serializer. Usually I am using XMLBeans for (de-)serializing XML, I hope it works here as well. To summarize: wsdl2java still did not create a getCapabilities method that expects an input parameter. Maybe that is due to the fact that the schema for the request element is complex. If using my own serializer helps I will give it a try, provided that I find out how to do this. Cheers, Johannes --------------------------------------- Schema fragment for the GetCapabilities operation: <xs:element name="GetCapabilities"> <xs:annotation> <xs:documentation>Request to a SAS to perform the GetCapabilities operation. This operation allows a client to retrieve service metadata (capabilities XML) providing metadata for the specific SAS server. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. </xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="ows:GetCapabilitiesType"> <xs:attribute name="service" type="ows:ServiceType" use="required" fixed="SAS"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> where ows:GetCapabilitiesType is defined as follows: <complexType name="GetCapabilitiesType"> <annotation> <documentation>XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no "request" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required "service" attribute, with the correct value for that OWS. </documentation> </annotation> <sequence> <element name="AcceptVersions" type="ows:AcceptVersionsType" minOccurs="0"> <annotation> <documentation>When omitted, server shall return latest supported version. </documentation> </annotation> </element> <element name="Sections" type="ows:SectionsType" minOccurs="0"> <annotation> <documentation>When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. </documentation> </annotation> </element> <element name="AcceptFormats" type="ows:AcceptFormatsType" minOccurs="0"> <annotation> <documentation>When omitted or not supported by server, server shall return service metadata document using the MIME type "text/xml". </documentation> </annotation> </element> </sequence> <attribute name="updateSequence" type="ows:UpdateSequenceType" use="optional"> <annotation> <documentation>When omitted or not supported by server, server shall return latest complete service metadata document. </documentation> </annotation> </attribute> </complexType> As you can see a lot of my message elements and types use definitions from other namespaces or defined in separate elements/types - that Is why I wrote "quite complex schema". --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
compiling wsdl (was: generating sources for service using quite complex schema)Hi.
As suggested I break up my questions into separate emails. This one covers the problems I encountered when trying to compile my wsdl. -------------------------------------------------------------------------------------------------------- Concerning wsdlmerge: > 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. I imported them in the SAS.wsdl so that I could reuse the message definitions contained in them. Well, as compiling that wsdl did not work I created the SASallinone.wsdl which does not import the WSRF/WSN wsdls but instead imports the respective schema and defines the required messages itself. So wsdlmerge did not work for me, but that is ok if creating code via wsdl2java works in the end. -------------------------------------------------------------------------------------------------------- Concerning wsdl2java: Allen wrote: >> 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? Vinh wrote: > 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. I just read the wsrmd spec and added the specific attributes to the SAS portType and created a metadata descriptor file in the directory of the wsdl. After some trials wsdl2java accepted my changes (i.e. it did no longer complain about wrong names or invalid wsdlLocation - however, the warning is still there. So I think it was not the missing wsrmd file. Allen wrote: > Another point: I noticed that you've split your schema definition for > the same namespace into two parts > ... > > 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? targetNamespace http://www.opengis.net/sas/1.0.0. The reason why I did not put the includes and additional definitions (the SasResourceProperties and ServiceException) into one xsd:schema element is because I simply did not think about this possibility. :-) I have put them into one schema element now. To summarize: I believe that wsdl2java now works for me. At least it generated the artifacts based upon my wsdl files. Cheers, Johannes --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
extending the WSN RegisterPublisher operation (was: generating sources for service using quite complex schema)Hi.
As suggested I break up my questions into separate emails. This one covers the topic of extending the RegisterPublisher request from WS-BrokeredNotification. As I wrote in my first email, the service I intend to implement might realize the RegisterPublisher and Notify operation from WSN. It "might" realize these operations because in some use cases there may be other ways on how the service gets the required information from my event producing entities (i.e., the sensors). However, if the additional operations are implemented, the RegisterPublisher request would make use of the extensibility mechanism defined in the OASIS specification for that operation to send also the sensor description in XML. After compiling my wsdl (SASallinone.wsdl), I had the following question concerning the realization of the RegisterPublisher operation: > 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? Allen wrote: > Were you planning on extending it using the <xsd:extension>system? I thought that this could be handled on the fly, i.e. I would not have to extend the operations base schema but could just insert additional elements into the request body and retrieve those somehow on the server side. So that is why I am asking. You mentioned that I could use my custom serializer for handling the request body. If so, maybe that will do the trick. Usually I am working with XMLBeans and I think that it would provide the means to extract the additional elements from the request. Cheers, Johannes --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
|
|
RE: referencing subscriptions via EPRs (was: Re: generating sources for service using quite complex schema)Hi
One SubscriptionManager resource type exists, but for each subscribe request a new resource instance will be created with a different Reference Parameter used to seperate the instances. It would be technically possible to proxy the different EPRs to a single resource but that gets very complicated for subscription managers very fast. (also would duplicate the wsa router without any notable gain). cheers, Chris -----Original Message----- From: Johannes Echterhoff [mailto:echterhoff@...] Sent: Wednesday, May 21, 2008 4:33 PM To: muse-user@... Subject: referencing subscriptions via EPRs (was: Re: generating sources for service using quite complex schema) Hi. As suggested I break up my questions into separate emails. This one covers the question on how subscriptions generated via muse reference their manager endpoint. My question was: 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? Allen wrote: > 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... Vinh wrote: > 6) A SubscriptionManager resource manages a single subscription. So > if you call Subscribe 5 times, you will have 5 instances of > SubscriptionManager. This seems to be contradictory. :-) Or is it not? Both approaches might work. The first one using reference parameters to disambiguate the subscription called for. The second approach could work if muse created a new SubscriptionManager resource for each subscription. Any more thoughts on this one? Johannes --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... --------------------------------------------------------------------- To unsubscribe, e-mail: muse-user-unsubscribe@... For additional commands, e-mail: muse-user-help@... |
| Free embeddable forum powered by Nabble | Forum Help |