WSDL Rowset Details

We're using Native Web Services on Oracle 11g (orawsv servlet). One of my functions returns multiple rows, each with 2 columns named ASSET_NUM and ASSET_DESC:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GET_ITEMSOutput xmlns="http://xmlns.oracle.com/orawsv/CUSTOMERA/WEB_SERVICES">
<RETURN>
<ROWSET>
<ROW>
<ASSET_NUM>076030459</ASSET_NUM>
<ASSET_DESC>LAPTOP</ASSET_DESC>
</ROW>
<ROW>
<ASSET_NUM>076030460</ASSET_NUM>
<ASSET_DESC>DESK</ASSET_DESC>
</ROW>
</ROWSET>
</RETURN>
</GET_ITEMSOutput>
</soap:Body>
</soap:Envelope>
However, the auto-generated WSDL does not include any of the details (eg, column names) of the result, so our customers are complaining that they can't map the data on their end. The corresponding excerpt from the auto-generated WSDL is:
<xsd:element name="GET_ITEMSOutput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RETURN">
<xsd:complexType>
<xsd:sequence>
<xsd:any/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
As you can see, it's very general and there is no mention of the columns ASSET_NUM or ASSET_DESC. I suppose we could hand-code our own WSDL, but we have about 20 functions we're exposing as web services and it would be extremely tedious and error-prone to code our own WSDL every time we add a new function. How can we produce a WSDL that provides sufficient details? Is it possible to specify this as part of the return type for each of our functions? Currently they are set to return xmltype.
Our customers are expecting to see something like this in the WSDL:
<xsd:element maxOccurs="1" minOccurs="0" name="ROWSET" >
     <xsd:complexType >
          <xsd:sequence>
               <xsd:element maxOccurs="unbounded" minOccurs="0" name="ROW" >
                    <xsd:complexType>
                         <xsd:sequence>
                              <xsd:element maxOccurs="1" minOccurs="0" name="ASSET_NUM" type="xsd:string"/>
                              <xsd:element maxOccurs="1" minOccurs="0" name="ASSET_DESC" type="xsd:string"/>
                         </xsd:sequence>
                    </xsd:complexType>
               </xsd:element>
          </xsd:sequence>
     </xsd:complexType>
</xsd:element>
Thanks,
Darrin
Edited by: Darrin D on Nov 7, 2009 9:35 PM

Darrin
Since you cannot directly affect the generation of the WSDL, and an XMLType parameter will appear as an xs:any the only solution I can see is to provde an explict function to a more accurate WSDL or return a second parameter from the function that provides the required info
Eg
SQL> connect / as sysdba
Connected.
SQL> --
SQL> set define on
SQL> set timing on
SQL> --
SQL> define USERNAME = WSDLTEST
SQL> --
SQL> def PASSWORD = &USERNAME
SQL> --
SQL> def USER_TABLESPACE = USERS
SQL> --
SQL> def TEMP_TABLESPACE = TEMP
SQL> --
SQL> def HOSTNAME = localhost
SQL> --
SQL> drop user &USERNAME cascade
  2  /
old   1: drop user &USERNAME cascade
new   1: drop user WSDLTEST cascade
User dropped.
Elapsed: 00:00:01.80
SQL> grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &PASSWORD
  2  /
old   1: grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &PASSWORD
new   1: grant create any directory, drop any directory, connect, resource, alter session, create view to WSDLTEST identified by WSDLTEST
Grant succeeded.
Elapsed: 00:00:00.09
SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
  2  /
old   1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
new   1: alter user WSDLTEST default tablespace USERS temporary tablespace TEMP
User altered.
Elapsed: 00:00:00.00
SQL> begin
  2    dbms_network_acl_admin.drop_acl('localhost.xml');
  3  end;
  4  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> begin
  2    dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for &HOSTNAME', '&USERNAME', true, 'connect');
  3    dbms_network_acl_admin.assign_acl('localhost.xml', '&HOSTNAME');
  4  end;
  5  /
old   2:   dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for &HOSTNAME', '&USERNAME', true, 'connect');
new   2:   dbms_network_acl_admin.create_acl('localhost.xml', 'ACL for localhost', 'WSDLTEST', true, 'connect');
old   3:   dbms_network_acl_admin.assign_acl('localhost.xml', '&HOSTNAME');
new   3:   dbms_network_acl_admin.assign_acl('localhost.xml', 'localhost');
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.43
SQL> COMMIT
  2  /
Commit complete.
Elapsed: 00:00:00.64
SQL> GRANT XDB_WEBSERVICES TO &USERNAME
  2  /
old   1: GRANT XDB_WEBSERVICES TO &USERNAME
new   1: GRANT XDB_WEBSERVICES TO WSDLTEST
Grant succeeded.
Elapsed: 00:00:00.01
SQL> GRANT XDB_WEBSERVICES_OVER_HTTP TO &USERNAME
  2  /
old   1: GRANT XDB_WEBSERVICES_OVER_HTTP TO &USERNAME
new   1: GRANT XDB_WEBSERVICES_OVER_HTTP TO WSDLTEST
Grant succeeded.
Elapsed: 00:00:00.00
SQL> GRANT XDB_WEBSERVICES_WITH_PUBLIC TO &USERNAME
  2  /
old   1: GRANT XDB_WEBSERVICES_WITH_PUBLIC TO &USERNAME
new   1: GRANT XDB_WEBSERVICES_WITH_PUBLIC TO WSDLTEST
Grant succeeded.
Elapsed: 00:00:00.00
SQL> connect &USERNAME/&PASSWORD
Connected.
SQL> --
SQL> --
SQL> --
SQL> declare
  2    XMLSCHEMA XMLTYPE := XMLTYPE(
  3  '<!-- edited with XML Spy v4.0 U (http://www.xmlspy.com) by Mark (Drake) -->
  4  <xs:schema targetNamespace="http://xmlns.example.com/xsd/purchaseOrder"
  5             xmlns="http://xmlns.example.com/xsd/purchaseOrder"
  6             xmlns:xs="http://www.w3.org/2001/XMLSchema"
  7             xmlns:xdb="http://xmlns.oracle.com/xdb" version="1.0"
  8             xdb:storeVarrayAsTable="true"
  9             elementFormDefault="qualified">
10     <xs:element name="PurchaseOrder" type="PurchaseOrderType" xdb:defaultTable="PURCHASEORDER"/>
11     <xs:complexType name="PurchaseOrderType" xdb:SQLType="PURCHASEORDER_T">
12             <xs:sequence>
13                     <xs:element name="User" type="UserType" xdb:SQLName="USERID"/>
14                     <xs:element name="CostCenter" type="CostCenterType" xdb:SQLName="COST_CENTER"/>
15                     <xs:element name="ShippingInstructions" type="ShippingInstructionsType" xdb:SQLName="SHIPPING_INSTRUCTIONS"/>
16                     <xs:element name="SpecialInstructions" type="SpecialInstructionsType" xdb:SQLName="SPECIAL_INSTRUCTIONS"/>
17                     <xs:element name="LineItems" type="LineItemsType" xdb:SQLName="LINEITEMS"/>
18                     <xs:element name="Comments" type="CommentsType" minOccurs="0"/>
19             </xs:sequence>
20             <xs:attribute name="Reference" type="ReferenceType" xdb:SQLName="REFERENCE"/>
21             <xs:attribute name="DateCreated" type="xs:dateTime" xdb:SQLType="TIMESTAMP WITH TIME ZONE" xdb:SQLName="DATE_CREATED"/>
22     </xs:complexType>
23     <xs:complexType name="LineItemsType" xdb:SQLType="LINEITEMS_T">
24             <xs:sequence>
25                     <xs:element name="LineItem" type="LineItemType" maxOccurs="unbounded" xdb:SQLName="LINEITEM" xdb:SQLInline="false" xdb:defaultTable="LIN
EITEM_TABLE"/>
26             </xs:sequence>
27     </xs:complexType>
28     <xs:complexType name="LineItemType" xdb:SQLType="LINEITEM_T">
29             <xs:simpleContent>
30                     <xs:extension base="moneyType">
31                     <xs:attribute name="ItemNumber" type="xs:integer" xdb:SQLName="ITEMNUMBER" xdb:SQLType="NUMBER"/>
32                             <xs:attribute name="PartNumber" type="UPCCodeType" xdb:SQLName="PART_NUMBER"/>
33                             <xs:attribute name="Description" type="DescriptionType" use="required" xdb:SQLName="DESCRIPTION"/>
34                             <xs:attribute name="UnitCost" type="moneyType" use="required"/>
35                     </xs:extension>
36             </xs:simpleContent>
37     </xs:complexType>
38     <xs:simpleType name="ReferenceType">
39             <xs:restriction base="xs:string">
40                     <xs:minLength value="18"/>
41                     <xs:maxLength value="30"/>
42             </xs:restriction>
43     </xs:simpleType>
44     <xs:complexType name="ShippingInstructionsType" xdb:SQLType="SHIPPING_INSTRUCTIONS_T">
45             <xs:sequence>
46                     <xs:element name="name" type="NameType" minOccurs="0" xdb:SQLName="SHIP_TO_NAME"/>
47                     <xs:element name="address" type="AddressType" minOccurs="0" xdb:SQLName="SHIP_TO_ADDRESS"/>
48                     <xs:element name="telephone" type="TelephoneType" minOccurs="0" xdb:SQLName="SHIP_TO_PHONE"/>
49             </xs:sequence>
50     </xs:complexType>
51     <xs:simpleType name="moneyType">
52             <xs:restriction base="xs:decimal">
53                     <xs:fractionDigits value="2"/>
54                     <xs:totalDigits value="12"/>
55             </xs:restriction>
56     </xs:simpleType>
57     <xs:simpleType name="quantityType">
58             <xs:restriction base="xs:decimal">
59                     <xs:fractionDigits value="4"/>
60                     <xs:totalDigits value="8"/>
61             </xs:restriction>
62     </xs:simpleType>
63     <xs:simpleType name="UserType">
64             <xs:restriction base="xs:string">
65                     <xs:minLength value="1"/>
66                     <xs:maxLength value="10"/>
67             </xs:restriction>
68     </xs:simpleType>
69     <xs:simpleType name="CostCenterType">
70             <xs:restriction base="xs:string">
71                     <xs:minLength value="1"/>
72                     <xs:maxLength value="4"/>
73             </xs:restriction>
74     </xs:simpleType>
75     <xs:simpleType name="SpecialInstructionsType">
76             <xs:restriction base="xs:string">
77                     <xs:minLength value="0"/>
78                     <xs:maxLength value="2048"/>
79             </xs:restriction>
80     </xs:simpleType>
81     <xs:simpleType name="NameType">
82             <xs:restriction base="xs:string">
83                     <xs:minLength value="1"/>
84                     <xs:maxLength value="20"/>
85             </xs:restriction>
86     </xs:simpleType>
87     <xs:simpleType name="AddressType">
88             <xs:restriction base="xs:string">
89                     <xs:minLength value="1"/>
90                     <xs:maxLength value="256"/>
91             </xs:restriction>
92     </xs:simpleType>
93     <xs:simpleType name="TelephoneType">
94             <xs:restriction base="xs:string">
95                     <xs:minLength value="1"/>
96                     <xs:maxLength value="24"/>
97             </xs:restriction>
98     </xs:simpleType>
99     <xs:simpleType name="CommentsType" xdb:SQLType="CLOB">
100             <xs:restriction base="xs:string">
101             </xs:restriction>
102     </xs:simpleType>
103     <xs:simpleType name="DescriptionType">
104             <xs:restriction base="xs:string">
105                     <xs:minLength value="1"/>
106                     <xs:maxLength value="256"/>
107             </xs:restriction>
108     </xs:simpleType>
109     <xs:simpleType name="UPCCodeType">
110             <xs:restriction base="xs:integer">
111                     <xs:totalDigits value="14"/>
112             </xs:restriction>
113     </xs:simpleType>
114  </xs:schema>');
115  begin
116     dbms_xmlschema.registerSchema( SCHEMAURL => '/xsd/purchaseOrder.xsd', SCHEMADOC => XMLSCHEMA);
117  end;
118  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.82
SQL> declare
  2    XMLDOC XMLTYPE := XMLTYPE(
  3  '<PurchaseOrder xmlns="http://xmlns.example.com/xsd/purchaseOrder" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.e
xample.com/xsd/purchaseOrder /xsd/purchaseOrder.xsd" Reference="ABANDA-20030809194950222GMT" DateCreated="2004-01-01T12:00:00.000000-08:00">
  4    <User>ABANDA</User>
  5    <CostCenter>A80</CostCenter>
  6    <ShippingInstructions>
  7      <name>Elizabeth Bates</name>
  8      <address>Magdalen Centre, The Oxford Science Park,
  9  Oxford,
10  Oxford OX9 9ZB
11  United Kingdom</address>
12      <telephone>123-759-1758</telephone>
13    </ShippingInstructions>
14    <SpecialInstructions>Courier</SpecialInstructions>
15    <LineItems>
16      <LineItem ItemNumber="1" Description="I Still Know What You Did Last Summer" UnitCost="19.99" PartNumber="43396397897">1</LineItem>
17      <LineItem ItemNumber="2" Description="Playing God" UnitCost="19.99" PartNumber="717951000422">5</LineItem>
18      <LineItem ItemNumber="3" Description="Twilight Zone 20" UnitCost="19.99" PartNumber="14381893724">3</LineItem>
19    </LineItems>
20  </PurchaseOrder>');
21  begin
22     insert into PURCHASEORDER values (XMLDOC);
23    commit;
24  end;
25  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.12
SQL> set long 100000 pages 0 lines 256
SQL> --
SQL> select object_value
  2    from PURCHASEORDER
  3    where XMLEXISTS
  4         (
  5           'declare default element namespace "http://xmlns.example.com/xsd/purchaseOrder"; (: :)
  6            $p/PurchaseOrder[@Reference=$ref]'
  7            passing 'ABANDA-20030809194950222GMT' as "ref", OBJECT_VALUE as "p"
  8         )
  9  /
<PurchaseOrder xmlns="http://xmlns.example.com/xsd/purchaseOrder" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.example
.com/xsd/purchaseOrder /xsd/purchaseOrder.xsd" Reference="ABANDA-20030809194950222GMT" DateCreat
ed="2004-01-01T12:00:00.000000-08:00">
  <User>ABANDA</User>
  <CostCenter>A80</CostCenter>
  <ShippingInstructions>
    <name>Elizabeth Bates</name>
    <address>Magdalen Centre, The Oxford Science Park,
Oxford,
Oxford OX9 9ZB
United Kingdom</address>
    <telephone>123-759-1758</telephone>
  </ShippingInstructions>
  <SpecialInstructions>Courier</SpecialInstructions>
  <LineItems>
    <LineItem ItemNumber="1" Description="I Still Know What You Did Last Summer" UnitCost="19.99" PartNumber="43396397897">1</LineItem>
    <LineItem ItemNumber="2" Description="Playing God" UnitCost="19.99" PartNumber="717951000422">5</LineItem>
    <LineItem ItemNumber="3" Description="Twilight Zone 20" UnitCost="19.99" PartNumber="14381893724">3</LineItem>
  </LineItems>
</PurchaseOrder>
Elapsed: 00:00:00.07
SQL> create or replace package TESTPROC
  2  as
  3    function getPurchaseOrder(P_REFERENCE VARCHAR2, XMLSCHEMA OUT XMLTYPE) return XMLTYPE;
  4  end;
  5  /
Package created.
Elapsed: 00:00:00.01
SQL> --
SQL> show errors
No errors.
SQL> --
SQL> create or replace package body TESTPROC
  2  as
  3  --
  4  function getXMLSchema(URL VARCHAR2)
  5  return XMLType
  6  as
  7    V_XML_SCHEMA XMLTYPE;
  8  begin
  9    select SCHEMA
10      into V_XML_SCHEMA
11      from USER_XML_SCHEMAS
12     where SCHEMA_URL = URL;
13    return V_XML_SCHEMA;
14  end;
15  --
16  function getPurchaseOrder(P_REFERENCE VARCHAR2, XMLSCHEMA OUT XMLTYPE)
17  return XMLType
18  as
19    V_RESULT     XMLTYPE;
20  begin
21
22    XMLSCHEMA := GETXMLSCHEMA( '/xsd/purchaseOrder.xsd');
23
24    select object_value
25      into V_RESULT
26      from PURCHASEORDER
27    where XMLEXISTS
28         (
29           'declare default element namespace "http://xmlns.example.com/xsd/purchaseOrder"; (: :)
30            $p/PurchaseOrder[@Reference=$ref]'
31            passing 'ABANDA-20030809194950222GMT' as "ref", OBJECT_VALUE as "p"
32         );
33
34    return V_RESULT;
35  end;
36  --
37  end;
38  /
Package body created.
Elapsed: 00:00:00.03
SQL> show errors
No errors.
SQL> --
SQL> VAR URL VARCHAR2(1024)
SQL> VAR RESULT CLOB;
SQL> --
SQL> BEGIN
  2    :URL := 'http://&USERNAME:&PASSWORD@localhost:' || dbms_xdb.getHttpPort() || '/orawsv/&USERNAME/TESTPROC';
  3  end;
  4  /
old   2:   :URL := 'http://&USERNAME:&PASSWORD@localhost:' || dbms_xdb.getHttpPort() || '/orawsv/&USERNAME/TESTPROC';
new   2:   :URL := 'http://WSDLTEST:WSDLTEST@localhost:' || dbms_xdb.getHttpPort() || '/orawsv/WSDLTEST/TESTPROC';
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> print url
http://WSDLTEST:WSDLTEST@localhost:80/orawsv/WSDLTEST/TESTPROC
SQL> --
SQL> set long 10000000 pages 0 lines 160
SQL> --
SQL> select httpuritype( :URL || '?wsdl' ).getXML()
  2    from dual
  3  /
<definitions name="TESTPROC" targetNamespace="http://xmlns.oracle.com/orawsv/WSDLTEST/TESTPROC" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns
.oracle.com/orawsv/WSDLTEST/TESTPROC" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  <types>
    <xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/WSDLTEST/TESTPROC" elementFormDefault="qualified">
      <xsd:element name="CXMLTYPE-GETPURCHASEORDERInput">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="XMLSCHEMA-XMLTYPE-OUT">
              <xsd:complexType/>
            </xsd:element>
            <xsd:element name="P_REFERENCE-VARCHAR2-IN" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="GETPURCHASEORDEROutput">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="RETURN">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:any/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:element name="XMLSCHEMA">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:any/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </types>
  <message name="GETPURCHASEORDERInputMessage">
    <part name="parameters" element="tns:CXMLTYPE-GETPURCHASEORDERInput"/>
  </message>
  <message name="GETPURCHASEORDEROutputMessage">
    <part name="parameters" element="tns:GETPURCHASEORDEROutput"/>
  </message>
  <portType name="TESTPROCPortType">
    <operation name="GETPURCHASEORDER">
      <input message="tns:GETPURCHASEORDERInputMessage"/>
      <output message="tns:GETPURCHASEORDEROutputMessage"/>
    </operation>
  </portType>
  <binding name="TESTPROCBinding" type="tns:TESTPROCPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="GETPURCHASEORDER">
      <soap:operation soapAction="GETPURCHASEORDER"/>
      <input>
        <soap:body parts="parameters" use="literal"/>
      </input>
      <output>
        <soap:body parts="parameters" use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="TESTPROCService">
    <documentation>Oracle Web Service</documentation>
    <port name="TESTPROCPort" binding="tns:TESTPROCBinding">
      <soap:address location="http://localhost:80/orawsv/WSDLTEST/TESTPROC"/>
    </port>
  </service>
</definitions>
Elapsed: 00:00:00.15
SQL> VAR RETURN_TEXT CLOB
SQL> VAR RESPONSE_TEXT CLOB
SQL> --
SQL> DECLARE
  2    V_SOAP_REQUEST      XMLTYPE := XMLTYPE(
  3  '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  4                      xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  5                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6                      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  7     <SOAP-ENV:Body>
  8             <m:CXMLTYPE-GETPURCHASEORDERInput xmlns:m="http://xmlns.oracle.com/orawsv/WSDLTEST/TESTPROC">
  9                     <m:XMLSCHEMA-XMLTYPE-OUT/>
10                     <m:P_REFERENCE-VARCHAR2-IN>ABANDA-20030809194950222GMT</m:P_REFERENCE-VARCHAR2-IN>
11             </m:CXMLTYPE-GETPURCHASEORDERInput>
12     </SOAP-ENV:Body>
13  </SOAP-ENV:Envelope>');
14    V_SOAP_REQUEST_TEXT CLOB := V_SOAP_REQUEST.getClobVal();
15    V_REQUEST           UTL_HTTP.REQ;
16    V_RESPONSE          UTL_HTTP.RESP;
17    V_BUFFER            VARCHAR2(1024);
18    V_RESPONSE_TEXT     CLOB;
19    V_RESPONSE_XML      XMLTYPE;
20    V_RETURN_XML        XMLTYPE;
21  BEGIN
22     DBMS_LOB.CREATETEMPORARY(V_RESPONSE_TEXT, TRUE);
23
24    begin
25      V_REQUEST := UTL_HTTP.BEGIN_REQUEST(URL => :URL, METHOD => 'POST');
26      UTL_HTTP.SET_HEADER(V_REQUEST, 'User-Agent', 'Mozilla/4.0');
27      V_REQUEST.METHOD := 'POST';
28      UTL_HTTP.SET_HEADER (R => V_REQUEST, NAME => 'Content-Length', VALUE => DBMS_LOB.GETLENGTH(V_SOAP_REQUEST_TEXT));
29      UTL_HTTP.WRITE_TEXT (R => V_REQUEST, DATA => V_SOAP_REQUEST_TEXT);
30      V_RESPONSE := UTL_HTTP.GET_RESPONSE(V_REQUEST);
31       LOOP
32        UTL_HTTP.READ_LINE(V_RESPONSE, V_BUFFER, TRUE);
33        DBMS_LOB.WRITEAPPEND(V_RESPONSE_TEXT,LENGTH(V_BUFFER),V_BUFFER);
34       END LOOP;
35       UTL_HTTP.END_RESPONSE(V_RESPONSE);
36    EXCEPTION
37      WHEN UTL_HTTP.END_OF_BODY THEN
38        UTL_HTTP.END_RESPONSE(V_RESPONSE);
39    END;
40
41    :RESPONSE_TEXT := V_RESPONSE_TEXT;
42    V_RESPONSE_XML := XMLTYPE(V_RESPONSE_TEXT);
43
44    select XMLQUERY
45           (
46             'declare namespace SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; (::)
47              declare namespace SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; (::)
48              declare namespace xsi="http://www.w3.org/2001/XMLSchema-instance"; (::)
49              declare namespace xsd="http://www.w3.org/2001/XMLSchema"; (::)
50              declare namespace m="http://xmlns.oracle.com/orawsv/WSDLTEST/TESTPROC"; (::)
51              $resp/SOAP-ENV:Envelope/SOAP-ENV:Body/m:GETPURCHASEORDEROutput'
52              passing V_RESPONSE_XML as "resp" returning content
53           )
54      into V_RETURN_XML
55      from DUAL;
56
57    select V_RETURN_XML.getClobVal()
58      into :RETURN_TEXT
59      from dual;
60
61    DBMS_LOB.FREETEMPORARY(V_RESPONSE_TEXT);
62
63  END;
64  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.14
SQL> --
SQL> set pages 0 lines 160 long 10000
SQL> column RETURN format A160
SQL> --
SQL> select xmlserialize(document XMLTYPE(:RETURN_TEXT) as CLOB indent size=2) RETURN
  2    from dual
  3  /
<GETPURCHASEORDEROutput xmlns="http://xmlns.oracle.com/orawsv/WSDLTEST/TESTPROC">
  <RETURN>
    <PurchaseOrder xmlns="http://xmlns.example.com/xsd/purchaseOrder" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.exa
mple.com/xsd/purchaseOrder /xsd/purchaseOrder.xsd" Reference="ABANDA-20030809194950222GMT" DateCreated="2004-01-01T12:00:00.000000-08:00">
      <User>ABANDA</User>
      <CostCenter>A80</CostCenter>
      <ShippingInstructions>
        <name>Elizabeth Bates</name>
        <address>Magdalen Centre, The Oxford Science Park,Oxford,Oxford OX9 9ZBUnited Kingdom</address>
        <telephone>123-759-1758</telephone>
      </ShippingInstructions>
      <SpecialInstructions>Courier</SpecialInstructions>
      <LineItems>
        <LineItem ItemNumber="1" Description="I Still Know What You Did Last Summer" UnitCost="19.99" PartNumber="43396397897">1</LineItem>
        <LineItem ItemNumber="2" Description="Playing God" UnitCost="19.99" PartNumber="717951000422">5</LineItem>
        <LineItem ItemNumber="3" Description="Twilight Zone 20" UnitCost="19.99" PartNumber="14381893724">3</LineItem>
      </LineItems>
    </PurchaseOrder>
  </RETURN>
  <XMLSCHEMA>
    <!-- edited with XML Spy v4.0 U (http://www.xmlspy.com) by Mark (Drake) -->
    <xs:schema targetNamespace="http://xmlns.example.com/xsd/purchaseOrder" xmlns="http://xmlns.example.com/xsd/purchaseOrder" xmlns:xs="http://www.w3.org/2001/
XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" version="1.0" xdb:storeVarrayAsTable="true" elementFormDefault="qualified" xdb:flags="8487" xdb:schemaURL="/x
sd/purchaseOrder.xsd" xdb:schemaOwner="WSDLTEST" xdb:numProps="17">
      <xs:element name="PurchaseOrder" type="PurchaseOrderType" xdb:defaultTable="PURCHASEORDER" xdb:propNumber="35392" xdb:global="true" xdb:SQLName="PurchaseO
rder" xdb:SQLType="PURCHASEORDER_T" xdb:SQLSchema="WSDLTEST" xdb:memType="258" xdb:defaultTableSchema="WSDLTEST"/>
      <xs:complexType name="PurchaseOrderType" xdb:SQLType="PURCHASEORDER_T" xdb:SQLSchema="WSDLTEST">
        <xs:sequence>
          <xs:element name="User" type="UserType" xdb:SQLName="USERID" xdb:propNumber="35395" xdb:global="false" xdb:SQLType="VARCHAR2" xdb:memType="1" xdb:MemI
nline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <xs:element name="CostCenter" type="CostCenterType" xdb:SQLName="COST_CENTER" xdb:propNumber="35396" xdb:global="false" xdb:SQLType="VARCHAR2" xdb:mem
Type="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <xs:element name="ShippingInstructions" type="ShippingInstructionsType" xdb:SQLName="SHIPPING_INSTRUCTIONS" xdb:propNumber="35397" xdb:global="false"
xdb:SQLType="SHIPPING_INSTRUCTIONS_T" xdb:SQLSchema="WSDLTEST" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
          <xs:element name="SpecialInstructions" type="SpecialInstructionsType" xdb:SQLName="SPECIAL_INSTRUCTIONS" xdb:propNumber="35398" xdb:global="false" xdb
:SQLType="VARCHAR2" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <xs:element name="LineItems" type="LineItemsType" xdb:SQLName="LINEITEMS" xdb:propNumber="35399" xdb:global="false" xdb:SQLType="LINEITEMS_T" xdb:SQLS
chema="WSDLTEST" xdb:memType="258" xdb:MemInline="false" xdb:SQLInline="true" xdb:JavaInline="false"/>
          <xs:element name="Comments" type="CommentsType" minOccurs="0" xdb:propNumber="35400" xdb:global="false" xdb:SQLName="Comments" xdb:SQLType="CLOB" xdb:
memType="112" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
        </xs:sequence>
        <xs:attribute name="Reference" type="ReferenceType" xdb:SQLName="REFERENCE" xdb:propNumber="35393" xdb:global="false" xdb:SQLType="VARCHAR2" xdb:memType
="1"/>
        <xs:attribute name="DateCreated" type="xs:dateTime" xdb:SQLType="TIMESTAMP WITH TIME ZONE" xdb:SQLName="DATE_CREATED" xdb:propNumber="35394" xdb:global=
"false" xdb:memType="181"/>
      </xs:complexType>
      <xs:complexType name="LineItemsType" xdb:SQLType="LINEITEMS_T" xdb:SQLSchema="WSDLTEST">
        <xs:sequence>
          <xs:element name="LineItem" type="LineItemType" maxOccurs="unbounded" xdb:SQLName="LINEITEM" xdb:SQLInline="false" xdb:defaultTable="LINEITEM_TABLE" x
db:propNumber="35401" xdb:global="false" xdb:SQLType="LINEITEM_T" xdb:SQLSchema="WSDLTEST" xdb:memType="258" xdb:MemInline="false" xdb:JavaInline="false" xdb:de
faultTableSchema="WSDLTEST" xdb:SQLCollType="XDB$XMLTYPE_REF_LIST_T" xdb:SQLCollSchema="XDB"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="LineItemType" xdb:SQLType="LINEITEM_T" xdb:SQLSchema="WSDLTEST">
        <xs:simpleContent>
          <xs:extension base="moneyType">
            <xs:attribute name="ItemNumber" type="xs:integer" xdb:SQLName="ITEMNUMBER" xdb:SQLType="NUMBER" xdb:propNumber="35402" xdb:global="false" xdb:memTyp
e="2"/>
            <xs:attribute name="PartNumber" type="UPCCodeType" xdb:SQLName="PART_NUMBER" xdb:propNumber="35403" xdb:global="false" xdb:SQLType="NUMBER" xdb:memT
ype="2"/>
            <xs:attribute name="Description" type="DescriptionType" use="required" xdb:SQLName="DESCRIPTION" xdb:propNumber="35404" xdb:global="false" xdb:SQLTy
pe="VARCHAR2" xdb:memType="1"/>
            <xs:attribute name="UnitCost" type="moneyType" use="required" xdb:propNumber="35405" xdb:global="false" xdb:SQLName="UnitCost" xdb:SQLType="NUMBER"
xdb:memType="2"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
      <xs:simpleType name="ReferenceType">
        <xs:restriction base="xs:string">
          <xs:minLength value="18"/>
          <xs:maxLength value="30"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:complexType name="ShippingInstructionsType" xdb:SQLType="SHIPPING_INSTRUCTIONS_T" xdb:SQLSchema="WSDLTEST">
        <xs:sequence>
          <xs:element name="name" type="NameType" minOccurs="0" xdb:SQLName="SHIP_TO_NAME" xdb:propNumber="35406" xdb:global="false" xdb:SQLType="VARCHAR2" xdb:
memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <xs:element name="address" type="AddressType" minOccurs="0" xdb:SQLName="SHIP_TO_ADDRESS" xdb:propNumber="35407" xdb:global="false" xdb:SQLType="VARCH
AR2" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
          <xs:element name="telephone" type="TelephoneType" minOccurs="0" xdb:SQLName="SHIP_TO_PHONE" xdb:propNumber="35408" xdb:global="false" xdb:SQLType="VAR
CHAR2" xdb:memType="1" xdb:MemInline="true" xdb:SQLInline="true" xdb:JavaInline="true"/>
        </xs:sequence>
      </xs:complexType>
      <xs:simpleType name="moneyType">
        <xs:restriction base="xs:decimal">
          <xs:fractionDigits value="2"/>
          <xs:totalDigits value="12"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="quantityType">
        <xs:restriction base="xs:decimal">
          <xs:fractionDigits value="4"/>
          <xs:totalDigits value="8"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="UserType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="10"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="CostCenterType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="4"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="SpecialInstructionsType">
        <xs:restriction base="xs:string">
          <xs:minLength value="0"/>
          <xs:maxLength value="2048"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="NameType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="20"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="AddressType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="256"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="TelephoneType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="24"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="CommentsType" xdb:SQLType="CLOB">
        <xs:restriction base="xs:string"/>
      </xs:simpleType>
      <xs:simpleType name="DescriptionType">
        <xs:restriction base="xs:string">
          <xs:minLength value="1"/>
          <xs:maxLength value="256"/>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType name="UPCCodeType">
        <xs:restriction base="xs:integer">
          <xs:totalDigits value="14"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:schema>
  </XMLSCHEMA>
</GETPURCHASEORDEROutput>
Elapsed: 00:00:00.14
SQL> exit

Similar Messages

  • WSDL Authentication - Details Button Disabled

    Hi,
    We are using CE 7.3 EHP1 system, I created a WSDL in BPM to start the process and deployed in CE system. This WSDL is called by an external Java Application(WebCommerce) running in different portal.
    They can import the WSDL & pass the data to it, But BPM could not start the process & fails stating (Authentication Error) which i could find in the Logs.
    But when I try to give the authentication to the webservices by navigating SOA -> Application & Scenario Communication --> Single Service Administration
    Identify my service --> Configuration --> Security --> HTTP Authentication --> Click Userid/Passwd . The Details button not enabled to give the userid and password.
    Can you please let me know how to enable the details button.
    Your Help is Much Appreciated.
    Thanks,,
    Prabhu Karuppasamy

    Hi Prabhu,
    If there is no authentication for the execution of WSDL, it could be related to the special user 'SAP_BPM_Service' .
    I had faced this similar issue while triggering the BPM from a WDJ Application.
    I referred this document and assigned the UME Action:  "SAP_BPM_TRIGGER_EVENT" to SAP_BPM_Service.
    My understanding is that if there is no authentication for execution of the WSDL from another application, that implies to BPM that there is no specific user for this execution.
    So, SAP_BPM_Service executes this.
    I could be wrong and there might be some other issue here. But when my BPM did not start from another application, i tried this and it worked for me.
    You could try it too. Any help is good help at this time.
    Note: Make sure all the configurations and application communications and provider system configs are done as suggested earlier. If nothing works, then try this. It worked for me.
    Hope it works for you too.
    Cheers,
    Sid.

  • Failed to open a rowset error

    Post Author: lala1
    CA Forum: General
    Hi,
    I am getting the following error in Crystal reports:
    Failed to open a rowset
    Details: HY000: &#91;DataDirect&#93;&#91;ODBC Oracle Driver&#93;&#91;Oracle&#93;ORA-06550: line 1, column 8:
    PLS-00306: wrong number or types of arguments in call to 'RUN-REPORT'
    ORA-06550: line 1, column 8:
    PL/SQL: Statement ignored
    This is happens anytime I want to edit something in a report: I have tried to reinstalled crystal and the oracle client, but it did not work. Also checked the ODBC settings. Someelse tried to run the reports on their crystal and they did not come across any problem. We both run the same version of Crystal reports.
    Can you please help as it is preventing me from doing anything in Crystal?
    thanks

    Deepa,
    I've run into the same deadlock error. It usually happens to me when I'm running reports that are particularly intensive in terms of server memory and / or processing, such as correlated sub-queries or looping statements involving big tables.  It will also happen when there is heavy usage from the from end application, by front line users.
    I'm no DBA, but I get the impression that SQL Server is smart enough prioritize requests. Basically, it deadlocked the report request in order to keep other processes up and running.
    My solution... Wait for "off peak" times to run these types of reports.  Also I publish my reports to CR Server and schedule them to run at night.
    Hope that helps,
    Jason
    PS If you do find a way to avoid this error without compromising front end application performance please post it. I hate, it makes me nuts too.

  • Failed to open a rowset....offset and/or length of column {table_name} exceeds maxium record length of 0

    Post Author: anand.kolipakkam
    CA Forum: Data Connectivity and SQL
    hi all,
    I moved  Transoft USQL Database from one server to another, even though i am able to validate the server with usql client but my crystal reports is giving errors while trying to open up some of the reports.
    Unfortunately doesnt happens for all the reports, it happens for only for the reports which prompts for values in preview screen.
    This is the error i get
    first error screen....Failed to open a rowset....
    second error screen
    Failed to open a rowset
    Details:HY000:&#91;Transoft&#93;&#91;TSODBC&#93;&#91;MF&#93;(log: 3816-175022)offset and/or length of column exceeds maxium record length of 0
    Thats it i get a blank crystal report screen.
    I would appreciate if experts would help me out..

    Don't use localhost as your server name. It's a reserved name and should not be used in code.
    Try this also [Kbase |http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333533353333333433363339%7D.do] SAP Note 1553469 - How to enable Database logging in Crystal Reports for Visual Studio 2010
    Edited by: Don Williams on Jan 30, 2011 6:02 AM

  • Full qualified host name not appearing in url within WSDL generated from PI

    Hi
       We are on PI711  ( AIX OS ) and are stuck with an issue of the fully qualifed hostname not appearing within WSDL file  generated in PI71 for a webservice it exposes using the Integration builder
    We changed the host name in exchange profile ( all locations ) from hostname to hostname.companyname.intra and also in the ABAP stack as recommended in all OSS notes.
    We use the Integration Directory --> Sender Agreement --> Display WSDL option to generate the WSDL.
    Its to be noted that all locations ( including url for WSDL ) have the fully qualified hostname except the url within the WSDL.
    Dioes anyone come across this issue/ know which parameters to be updated on the PI server to make the url within the WSDL for the PI webservice to have the fully qualified host name ?

    HI Karthik,
    As Mentioned by Baskar donu2019t use proposed URL .. while creating WSDL in Id.. but instead provide URL in following format and use it in that place and create WSDL.. details about URL format..
    the URL format is fix. and it is simple.
    http://host:HTTPPort/XISOAPAdapter/MessagingServlet?channel=party:sendersystem:CC_sender
    in above URL provide your sender service component name instead of sender system.
    and provide SOAP sender communication channel name in place of CC_sender
    provide your PI system host and http name in place of host and https and use this..
    for more details about URL..
    Propose URL when Configuring Sender SOAP Adpater
    soap url
    Thanks,
    Bhupesh

  • Insert master, then details

    I'm using JDeveloper 10.1.3.5. I've set up ADF BC EO's and VO's for a master table and a detail table. There is also a 1:* Association, and a 1:* View Link between the master and details and this has all been added to an Application Module. The primary key of the master table is a surrogate PK generated from a sequence in a trigger. So the PK attribute has been designated as a DBSequence and has Refresh after Insert turned on.
    I have a jspx page using ADF Faces. It has a Create Form based on the master table. That means that a Create action was added to the page definition, and an invokeAction set to make sure Create is done when the page is first displayed. I added an InputFile component set to an UploadedFile in a backing bean. The files that users will be uploading contain detail records to be associated with this master. So I added an Iterator, Create action named CreateDetail, and AttributeValues for each attribute in the detail table's VO to the page definition. There is also a Commit action in the page definition.
    In the backing bean, there is an ActionEvent method tied to a commandButton on the page. It takes the uploaded file and executes CreateDetail for each record in the uploaded file, parses the record and sets the attributes. Then it executes Commit.
    Here's the problem:
    If I execute Commit before I start creating the detail records from the uploaded file, then Commit again after creating details, this works fine. However, if there is an error when I process the details, the master has already been committed. I'd rather consider master and details as a single transaction to be committed or rolled back as a unit.
    If I don't commit before I start creating the detail records, the new primary key for the master record hasn't been retrieved yet. So the detail records don't have the foreign key that points to the master. So the commit fails - missing mandatory field.
    I tried changing the Create on the master record to a CreateInsert, hoping that the framework would do the Insert of the master and retrieve its PK before processing the details, but no dice - it still works only if I Commit before processing details.
    Any ideas?

    In 11g, I've had some issues with compositions automatically maintaining foreign-key relationships for a sequence-based PK correctly if both master and detail are new. Have you tried implementing the (Java) solution provided by the aforementioned section of the dev guide (even though you shouldn't need it for compositions)?
    If that doesn't work for you, I've found the "old" method to be successful:
    In master:
    public void postChanges(TransactionEvent e) {
    /* Only references if this is NEW */
    RowSet newDetailsBeforePost = null;
    if (getPostState() == STATUS_NEW) {
    // Store the rowset of details related
    // to this new image before calling super
    newDetailsBeforePost = (RowSet)getXXX(); // replace "getXXX" with your association accessor method
    super.postChanges(e);
    if (newDetailsBeforePost != null) {
    adjustDetails(newDetailsBeforePost);
    private void adjustDetails(RowSet details) {
    Number newFkValue = getYYY.getSequenceNumber(); // replace "getYYY" with the getter for your sequence-based PK attribute
    while (details.hasNext()) {
    DetailImpl detail= (DetailImpl) details.next(); // replace "DetailImpl" with your detail EO class
    detail.setZZZ(newFkValue); // replace "setZZZ" with the setter for the detail's FK attribute
    In detail:
    public void postChanges(TransactionEvent e) {
    MasterImpl master = getMaster(); // replace "MasterImpl" with master EO class, "getMaster" with assoc accessor method
    if (STATUS_NEW == master.getPostState()) {
    master.postChanges(e);
    super.postChanges(e);
    Even better is to create an EO framework class that just fixes this problem (in general) for you, but that's more complicated--<plug>see the forthcoming JDev11g handbook</plug>.
    Hope this helps,
    Avrom

  • Failed to open rowset error message

    Post Author: eneace13
    CA Forum: Data Connectivity and SQL
    Hi All,
    I have a report that currently uses only views: V1, V2 and V2_1 (an alias view for V2). If I try to add a fourth table V4 so I can pull just one additional field into the report, I get the following message when I try to run it:
    Failed to open rowset
    Details:42000&#91;Microsoft&#93;&#91;ODBC SQL Server Driver&#93;&#91;SQL Server&#93; Could not allocate ancillary table for view or function resolution. Maximum number of tables in a query (260) was exceeded.
    I get the same error message if I try to create a SQL Expression to pull in the same field from view V4.
    How can I get this error mesage if I'm only using 3 views? I'm on Crystal 9, SQL 2k.
    Thanks in advance

    Hi,
    Please provide following information;
    1.What is the exact version/patch level of Enterprise and the crystal reports application at the web team's end.
    2.What is the database(with version) and the connectivity method (native/odbc/oledb) at your end.
    3.The same details as in point 2 above, at web team's end.

  • FlashBuilder 4.5 accessing Oracle 11gR1 database/WebSecices/WSDL

    Hi,
    I’m trying to accessOracle data using an existing stored procedure. What I have managed to do sofar is:
    Get WSDL definitionusing Oracle XML DB (using an example from Oracle documentation the http callto return the WSDL has this format http://host:port/orawsv/DBSCHEMA/FN_OR_PROC?wsdl)
    Testing the WSDL usingsoftware called “soapUI” executes and returns the data correctly in XML format.
    Entering the same URLto Flash Builder “Connect to Data/Service” wizard and selecting WSDL option doesn’treturn an error but doesn’t either do that much (e.g. it populates the wizardbut the “Next” or “Finish” buttons don’t make the wizard to move forward). One of the reasonsmight be that there is no place (?) to define the userid/password. When I triedto include these in the URL it didn’t change anything.
    Would someone have asimple example of using WSDL together with Oracle, PL/SQL, WebServices or other resources/links/adviseto help me with this?
    Thanks,
    ktp2

    Hi,
    did manage to get a little bit further, now the wizard reurns an error. After the wizard asked for userid/password, I can get two different results, depending on the URL I use.
    With "http://development:8080/orawsv/SCOTT/GET_DESCRIPTION_5"
    it returned "Unable to retrieve operations and entities from the specified WSDL"
    The details then showed
    "There was an error during service introspection.
    WSDLException (at /soap:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'."
    With "http://development:8080/orawsv/SCOTT/GET_DESCRIPTION_5?wsdl"
    the wizard doesn't return a error, the next or finish buttons just wont show the next step in the wizard.
    At the same time - the precise same URL works fine in soapUI. The URL without "?wsdl" returns the correct result, the URL with "?wsdl" returns the  wsdl specification xml

  • [BC4J] Master currency change + dirty details = warning (how?)

    Sorry for the lame subject, but it's the best I could do. :)
    Anyway, I 'want' something, but I could use some advice on how to accomplish it. Here's what I've been trying to realise:
    - A simple master-detail scenario
    - One of the detail records has been altered
    - The master currency changes
    - A popup comes up to warns me to either commit or rollback pending changes
    And
    - One of the master records has been altered
    - The master currency changes
    - Nothing happens
    I hope this explains what I need. :) So far I've created a new CustomViewObjectImpl class which I use as a base for all my ViewObjects. In this new class I override the executeQueryForCollection() method, because if I'm not mistaken, this is the location where the check for dirty details should be performed.
    However, a simple call to getDBTransaction().isDirty() is too simplistic, too unspecific.
    I think I somehow need to end up with a ViewRowSetIterator instance (which has the isDirty() method) which is contained or derived from one of the detailRowSets of "this". Any ideas of how I can retrieve it?
    So far, I've got something like this:
    protected void executeQueryForCollection(Object qc,
                                             Object[] params,
                                             int noUserParams)
    RowSet[] details = getDetailRowSets();
    ViewRowSetIteratorImpl vrsi;
    for (int i = 0; i < details.length; i++)
      vrsi = ....; // how to retrieve it ?
      if (vrsi.isDirty())
        switch (JOptionPane.showConfirmDialog(null,
                                              "Save changes?",
                                              "Attention",
                                              JOptionPane.YES_NO_OPTION,
                                              JOptionPane.WARNING_MESSAGE))
          case JOptionPane.YES_OPTION:
            getDBTransaction().commit();
            break;
          default:
            getDBTransaction().rollback();
            break;
    super.executeQueryForCollection(qc, params, noUserParams);
    }

    Hi,
    I had a quite similar need, except the "Nothing happens" part on altered master.
    I realize this makes quite a difference, but maybe my solution could help you somehow.
    After trying several possibilities, I considered the following approach.
    1. I extended ViewRowImpl in MyViewRowImpl and wrote the following:
         private boolean areDetailsModified()
              String[]          viewLinks = getViewObject().getViewLinkNames();
              for( int i = 0; i < viewLinks.length; i++ )
                   ViewLink          viewLink = getApplicationModule().findViewLink( viewLinks[ i ] );
                   ViewObject     detailView = viewLink.getDestination();
                   Row          linkRow = null;
                   if( detailView.isExecuted() )
                        linkRow = detailView.getCurrentRow();
                   if( linkRow != null && viewLink.getSource() == getViewObject() &&
                       linkRow instanceof MyViewRowImpl &&
                       ( (MyViewRowImpl)linkRow ).getViewRowState() != Entity.STATUS_UNMODIFIED )
                        return true;
              return false;
          * Assume a view row creates/updates/removes its main entity.
          * If the row itself was not modified, checks for changes in details.
         public byte getViewRowState()
              Entity          entity = getEntity( 0 );
              switch( entity.getEntityState() )
                   case Entity.STATUS_INITIALIZED:
                   case Entity.STATUS_NEW:
                        return Entity.STATUS_NEW;
                   case Entity.STATUS_MODIFIED:
                        return Entity.STATUS_MODIFIED;
                   case Entity.STATUS_UNMODIFIED:
                        if( !entity.isValid() || areDetailsModified() )
                             return Entity.STATUS_MODIFIED;
                        break;
              return Entity.STATUS_UNMODIFIED;
         }2. In my JClient client (still to use for the UIX one), I installed a JUPanelValidationListener and implemented
         public void beforeCurrencyChange( JUPanelValidationEvent event )
              Row          row = event.getIteratorBinding().getCurrentRow();
              int          rowState = Entity.STATUS_MODIFIED;
              if( row instanceof MyViewRow )
                   rowState = ( (MyViewRow)row ).getViewRowState();
         }3. And yes, not so fancy, I also made some changes to trace a "user-dirty" transaction (for some insert vs. LOV issues)...
    Greetings,
    Adrian

  • Trouble accessing WSHttp Binding WSDL

    Hi,
    I have WSHttp binding WSDL (WCF WSDL) from target system. I can see XML when I give this wsdl in soap ui 3.5, but when I invoke I getError getting Response java.net.SocketTimeoutException: Read Timed Out
    I think , "SoapUI does not support testing this service as it has WCF proprietary format."
    Also, WSDL does not load in JDeveloper BPEL PL.
    Can I invoke WSHttp binding service from BPEL or only basicHttpBinding can be invoked?
    I am using SOA 11G.
    Thanks
    Edited by: soauser on Oct 11, 2010 1:30 PM

    James,
    Yes I tried with HTTP Binding Adapter, I get below Exception. However, this time the external wsdl is modified to
    Basic HTTP Binding WSDL
    oracle.fabric.common.FabricInvocationException: Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl</summary>
    ,detail=<detail>Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl</detail>
    ,code=<code>null</code>}
    >
    ####<Oct 12, 2010 9:46:06 AM CDT> <Error> <oracle.webservices.service> <OracleTest1> <soa_server1> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default
    (self-tuning)'> <<anonymous>> <> <11d1def534ea1be0:-6dd98eb9:12ba09de3bb:-7ff0-00000000000018e3> <1286894766059> <OWS-04115>
    <An error occurred for port: FabricProvider: javax.xml.rpc.soap.SOAPFaultException: oracle.fabric.common.FabricInvocationException: Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl
    This HTTP Binding wsdl works when I invoke from SOAP UI. So, I don't think the issue is with WSDL not being available.
    But this WSDL does not work in JDev PL, may be BPEL is unable to parse the WSDL.
    Thanks

  • Trouble accessing wshttpbinding wsdl

    Hi,
    I have WSHttp binding WSDL (WCF WSDL) from target system. I can see XML when I give this wsdl in soap ui 3.5, but when I invoke I getError getting Response java.net.SocketTimeoutException: Read Timed Out
    I think , "SoapUI does not support testing this service as it has WCF proprietary format."
    Also, WSDL does not load in JDeveloper BPEL PL.
    Can I invoke WSHttp binding service from BPEL or only basicHttpBinding can be invoked?
    I am using SOA 11G.
    Thanks
    Edited by: soauser on Oct 11, 2010 1:28 PM

    James,
    Yes I tried with HTTP Binding Adapter, I get below Exception. However, this time the external wsdl is modified to
    Basic HTTP Binding WSDL
    oracle.fabric.common.FabricInvocationException: Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl</summary>
    ,detail=<detail>Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl</detail>
    ,code=<code>null</code>}
    >
    ####<Oct 12, 2010 9:46:06 AM CDT> <Error> <oracle.webservices.service> <OracleTest1> <soa_server1> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default
    (self-tuning)'> <<anonymous>> <> <11d1def534ea1be0:-6dd98eb9:12ba09de3bb:-7ff0-00000000000018e3> <1286894766059> <OWS-04115>
    <An error occurred for port: FabricProvider: javax.xml.rpc.soap.SOAPFaultException: oracle.fabric.common.FabricInvocationException: Unable to access the following
    endpoint(s): http://IP:Port/Design_Time_Addresses/XYZSyncService.Wcf/XYZSyncService/?wsdl
    This HTTP Binding wsdl works when I invoke from SOAP UI. So, I don't think the issue is with WSDL not being available.
    But this WSDL does not work in JDev PL, may be BPEL is unable to parse the WSDL.
    Thanks

  • Cannot find binding operation definition based on wsaAction='null'

    I'm using correlation sets to invoke an axis service asynchronously. I understand that, in this way, passing ws-addressing headers (replyTo, messageId, etc) is not required. However, the generated process' WSDL contains:
    <binding name="FlightCallbackPortTypeBinding" type="tns:FlightCallbackPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="flightServiceCallback">
    <soap:operation style="document" soapAction="flightServiceCallback"/>
    <input>
    <soap:header message="tns:WSARelatesToHeader" part="RelatesTo" use="literal" encodingStyle=""/>
    <soap:body use="literal"/>
    </input>
    </operation>
    </binding>
    When Axis calls back, it sends the message:
    POST /orabpel/default/process_wsba/1.0 HTTP/1.0
    Content-Type: text/xml; charset=utf-8
    User-Agent: Axis/1.3
    Host: localhost:8088
    SOAPAction: "flightServiceCallback"
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
    <nsl:RelatesTo soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:nsl="http://schemas.xmlsoap.org/ws/2003/03/addressing">dummyValue</nsl:RelatesTo>
    </soapenv:Header>
    <soapenv:Body>
    <transactionID xsi:type="xsd:string" xmlns="">fe80:0:0:0:207:e9ff:fe44:b4f8:1150081262615 (correlation token)</transactionID>
    <price xsi:type="xsd:int" xmlns="">4</price>
    </soapenv:Body>
    </soapenv:Envelope>
    However, I get the error message:
    <faultcode>soapenv:Server.generalException</faultcode>
    <faultstring>Cannot find binding operation definition based on wsaAction='null', and soapAction='flightServiceCallback' in http://cali:9700/orabpel/default/process_wsba/1.0/_process_wsba.wsdl</faultstring>
    <detail>
    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">cali</ns1:hostname>
    </detail>
    1) What's missing in my callback?
    2) Do I need to bother about the wsa header even using correlationSets?
    Thank in advance,
    Ivan

    I have an urgent need for a Sr, Oracle BPEL Developer in the Dallas Texas area. With this position, you can interview and start immediately. If you are interested or know of anyone looking please send my way.
    Warm regards,
    Kim Dobson
    Sr. Account Manager
    Eventus Group Technology Resources
    10100 N. Central Expressway
    Suite 150
    Dallas, TX 75231
    Office 469.916.4857
    Mobile 214.277.2097
    Fax 469.916.3861
    [email protected]

  • "Invalid content type" error in SOAP receiver

    Hi ,
    I have ABAP Proxy->XI->Webservice scenario.
    I have configured the SOAP receiver with all neccessary information (Target URL pointing to WSDL , proxy details)
    However i get the following error when i try sending data to the webservice. "Invalid Content type for SOAP: text/html"
    I have seen some forums and blogs on this site on this but still not able to solve the error.
    Please advice...

    Hi Anand,
    Have a look into this thread- similar discussion
    DeliveryException:: invalid content type for SOAP: TEXT/HTML
    Also check this- in the Reciever SOAP Adapter configuration i.e Target URL must be url of the WSDL.
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/40728f7b-0401-0010-d9bc-8c73884a3789
    Hope this helps.......
    Regards,
    Abhy

  • Setting ISO-8859-1 Encoding in AXIS RPC call

    As per my understanding UTF-8 is default for webservice call in AXIS implementation I may be wrong.
    Is there any way to set ISO-8859-1 encoding in AXIS RPC call?
    Below is the WSDL file details.
    Thanks for you help.
    Regards,
    Hemen
    <Code>
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <definitions name="TestService_Service"
    targetNamespace="http://webservice.de.rt.wsdl.WebContent/TestService_Service/"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"
    xmlns:java="http://schemas.xmlsoap.org/wsdl/java/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://webservice.de.rt.wsdl.WebContent/TestService_Service/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <message name="getResponseRequest">
    <part name="xml" type="xsd:string"/>
    <part name="product" type="xsd:string"/>
    <part name="source" type="xsd:string"/>
    <part name="tran" type="xsd:string"/>
    <part name="content" type="xsd:string"/>
    </message>
    <message name="getResponseResponse">
    <part name="return" type="xsd:string"/>
    </message>
    <portType name="TestService">
    <operation name="getResponse" parameterOrder="xml product source tran content">
    <input message="tns:getResponseRequest" name="getResponseRequest"/>
    <output message="tns:getResponseResponse" name="getResponseResponse"/>
    </operation>
    </portType>
    <binding name="TestServiceJavaBinding" type="tns:TestService">
    <java:binding/>
    <format:typeMapping encoding="Java" style="Java">
    <format:typeMap formatType="java.lang.String" typeName="xsd:string"/>
    </format:typeMapping>
    <operation name="getResponse">
    <java:operation methodName="getResponse"
    parameterOrder="xml product source tran content" returnPart="return"/>
    <input name="getResponseRequest"/>
    <output name="getResponseResponse"/>
    </operation>
    </binding>
    <binding name="TestServiceBinding" type="tns:TestService">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="getResponse">
    <soap:operation soapAction="" style="rpc"/>
    <input name="getResponseRequest">
    <soap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="distributionengine.com"
    parts="xml product source tran content" use="encoded"/>
    </input>
    <output name="getResponseResponse">
    <soap:body
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    namespace="distributionengine.com" use="encoded"/>
    </output>
    </operation>
    </binding>
    <service name="TestServiceService">
    <port binding="tns:TestServiceJavaBinding" name="TestServiceJavaPort">
    <java:address className="rt.de.webservice.TestService"/>
    </port>
    </service>
    <service name="TestService_Service">
    <port binding="tns:TestServiceBinding" name="TestServicePort">
    <soap:address location="http://localhost:9080/servlet/rpcrouter"/>
    </port>
    </service>
    </definitions>
    </code>

    try to put the below code at the top of the JSP page
    <%@ page language="java" pageEncoding="UTF-8"%>

  • Logical ports - SRT Framework exception: Preconfiguration is invalid

    Hi all,
    I'm recreating logical ports in a test system which has been refreshed from live. We have 10 web services which are consumer proxies in SOAMANAGER. I'm clicking the create logical port button and providing the WSDL file details in the popup.
    For 5 of them it worked ok; for the other 5 I got the error "SRT Framework exception: Preconfiguration is invalid".
    I've searched but I can't find much useful help on this error. These are all services which were using in our live environment so I wouldn't expect any fundamental errors. Maybe there is some issue with those 5 WSDLs. We applied some service packs a couple of months ago so there may have been some changes since we last had to do this. I don't see anything useful on OSS.
    Any ideas anyone?
    Best regards,
    Paul

    Srinivas,
    Thanks for the response. The consumer proxies (services we consume from other providers) don't seem to be listed in SICF. Just the web services which we expose. The same with the note you found, it's about publishing web services, not consuming them.
    The URI's in the WDSLs are correct, and the fact that 5 have worked shows I have the right authorisations.
    My investigations over the last few hours have suggested that it may be related to support packs. I created a very similar client proxy in SE80 in our development system and the configuration tab detail has changed a lot from one we did over a year ago. The old one had an operation profile node with 5 features. The new one created under SP20 also has an interface profile and a security profile with 2 features each.
    I could delete the proxy and re-transport but this takes a lot of admin. I wonder if there's a way of refreshing these proxy configurations in the other test systems without a transport.
    Best regards,
    Paul

Maybe you are looking for

  • How do I install an App on 200 iPods for University Students

    What kind of options are there for installing the same app (a free app) on 200 different iPod Touches? We have 200 new iPod touches that we need to get into the hands of 200 nursing students. We would like to load the Skyscape Resources app on each o

  • Purchase and download

    I just started using Itunes again after a very long time. I don't know how to purchase and add to my ipod. I added songs to a wish list and thought at that point I would have an options to purchase. Can't seem to figure it out.

  • Trying to run code from this weeks question of the  week

    i've copied the code from this weeks question of the week "sending an http req from a normal class." when i compile it everything looks fine. i've installed tomcat and it works. so i guess i am confused as to where i put the servlet class file??? and

  • Can I use dynamic select list in task form?

    Hi If I need to chage text input in task form to select list which dynamic from some database, Can I do it? If I can, how to do its ? Thanks User520932

  • How to install Solaris from a Windows computer

    I have recently received the Solaris operating system on DVD. The only computer that I have that has a DVD player is my laptop. It is however connected to the desktop that I wold like to install the system onto by a switch. I am not sure how to go ab