I share your doubt about dynamic SDO. Can anyone provide a working example
of that? I have created a service using dynamic SDOs. I post the service 
interface
and wsdl below. Point is, the wsdl - generated by the Tuscany runtime and 
downloaded from the service URL - cannot be imported in SOAP UI 3.5.1.
It gives a NullPointerException. Now that might perhaps be a problem with SOAP
UI, but I'm more inclined to believe it's a problem with the wsdl, and hence
with Tuscany (1.6).

With regard to persistence: I do not see dynamic SDO persisted in relational DB.
That would be easier for static SDO. For dynamic SDO, I'd look on NoSQL 
databases,
or maybe Solr/Lucene for persistence.

-- Sebastian

>From: Anurag Sharma [mailto:[email protected]] 
>Sent: Thursday, September 02, 2010 7:51 PM
>
>I am reading through SDO spec and not clear yet if an SDO implementation would 
>be against a specific data model outlined >by say XSD and then there would be 
>a corresponding Relation DB model to enable persistence.
>
>Or SDO implementation would be generic enough to create/save any model? (doubt)
>
>Thanks,
>Anurag 


------ 8< ------
Attached: Service interface and problematic wsdl (never mind the totally 
unstandard
service and method names):

import commonj.sdo.DataObject;
import java.util.List;
import org.osoa.sca.annotations.Remotable;

@Remotable
public abstract interface GetDataServiceWithoutException
{
  public abstract byte[] getMessage(String paramString);

  public abstract List<byte[]> getMessageList(String paramString);

  public abstract DataObject getMessageSDO(String paramString);

  public abstract List<DataObject> getMessageListSDOList(String paramString);

  public abstract DataObject[] getMessageListSDOArr(String paramString);

  public abstract DataObject getMessageListSDOinSDO(String paramString);
}

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="GetDataServiceWithoutExceptionService" 
targetNamespace="http://api.softwareag.com/"; 
xmlns:tns="http://api.softwareag.com/"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/";>
  <wsdl:types>
    <xs:schema attributeFormDefault="qualified" 
elementFormDefault="unqualified" targetNamespace="http://api.softwareag.com/"; 
xmlns:ns0="http://sdo.commonj/"; xmlns:tns="http://api.softwareag.com/"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema";><xs:import 
namespace="http://sdo.commonj/"/><xs:element 
name="getMessageListResponse"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="return" nillable="true" 
type="xs:anyType"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageSDOResponse"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="return" nillable="true" 
type="ns0:dataObject"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOListResponse"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="return" nillable="true" 
type="xs:anyType"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOList"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOArr"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageSDO"><xs:complexType><xs:sequence><xs:element minOccurs="0" 
name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageList"><xs:complexType><xs:sequence><xs:element minOccurs="0" 
name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageResponse"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="return" nillable="true" 
type="xs:byte"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOinSDOResponse"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="return" nillable="true" 
type="ns0:dataObject"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOinSDO"><xs:complexType><xs:sequence><xs:element 
minOccurs="0" name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessage"><xs:complexType><xs:sequence><xs:element minOccurs="0" 
name="arg0" nillable="true" 
type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element 
name="getMessageListSDOArrResponse"><xs:complexType><xs:sequence><xs:element 
maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" 
type="ns0:dataObject"/></xs:sequence></xs:complexType></xs:element></xs:schema>
  </wsdl:types>
  <wsdl:message name="getMessageListResponse">
    <wsdl:part name="getMessageListResponse" 
element="tns:getMessageListResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageSDOResponse">
    <wsdl:part name="getMessageSDOResponse" element="tns:getMessageSDOResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOListResponse">
    <wsdl:part name="getMessageListSDOListResponse" 
element="tns:getMessageListSDOListResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOList">
    <wsdl:part name="getMessageListSDOList" element="tns:getMessageListSDOList">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOArr">
    <wsdl:part name="getMessageListSDOArr" element="tns:getMessageListSDOArr">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageSDO">
    <wsdl:part name="getMessageSDO" element="tns:getMessageSDO">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageList">
    <wsdl:part name="getMessageList" element="tns:getMessageList">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageResponse">
    <wsdl:part name="getMessageResponse" element="tns:getMessageResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOinSDOResponse">
    <wsdl:part name="getMessageListSDOinSDOResponse" 
element="tns:getMessageListSDOinSDOResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOinSDO">
    <wsdl:part name="getMessageListSDOinSDO" 
element="tns:getMessageListSDOinSDO">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessage">
    <wsdl:part name="getMessage" element="tns:getMessage">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getMessageListSDOArrResponse">
    <wsdl:part name="getMessageListSDOArrResponse" 
element="tns:getMessageListSDOArrResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="GetDataServiceWithoutException">
    <wsdl:operation name="getMessageList">
      <wsdl:input message="tns:getMessageList">
    </wsdl:input>
      <wsdl:output message="tns:getMessageListResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageSDO">
      <wsdl:input message="tns:getMessageSDO">
    </wsdl:input>
      <wsdl:output message="tns:getMessageSDOResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOList">
      <wsdl:input message="tns:getMessageListSDOList">
    </wsdl:input>
      <wsdl:output message="tns:getMessageListSDOListResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOArr">
      <wsdl:input message="tns:getMessageListSDOArr">
    </wsdl:input>
      <wsdl:output message="tns:getMessageListSDOArrResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOinSDO">
      <wsdl:input message="tns:getMessageListSDOinSDO">
    </wsdl:input>
      <wsdl:output message="tns:getMessageListSDOinSDOResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessage">
      <wsdl:input message="tns:getMessage">
    </wsdl:input>
      <wsdl:output message="tns:getMessageResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="GetDataServiceWithoutExceptionBinding" 
type="tns:GetDataServiceWithoutException">
    <SOAP:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getMessageList">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageSDO">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOList">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOArr">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessageListSDOinSDO">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getMessage">
      <SOAP:operation/>
      <wsdl:input>
        <SOAP:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <SOAP:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="GetDataServiceWithoutExceptionService">
    <wsdl:port name="GetDataServiceWithoutExceptionPort" 
binding="tns:GetDataServiceWithoutExceptionBinding">
      <SOAP:address 
location="http://localhost:8081/GetDataServiceWithoutException"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


Reply via email to