Web Services with Large Result Sets

Hi,
We have an application where in a call to a web service could potentially yield a large result set. For the sake of argument, lets say that we cannot limit the result set size, i.e., by criteria narrowing or some other means.
Have any of you handled paging when using Web Services? If so can you please share your experiences considering Web Services are stateless? Any patterns that have worked? I am aware of the Value List pattern but am looking for previous experiences here.
Thanks

Joseph Weinstein wrote:
Aswin Dinakar wrote:
I ran the test again and I removed the ResultSet.Fetch_Forward and it
still gave me the same error OutOfMemory.
The problem to me is similar to what Slava has described. I am parsing
the result set in memory storing the results in a hash map and then
emptying the post processed results into a table.
The hash map turns out to be very big and jvm throws a OutOfMemory
Exception.
I am not sure how I can turn this around -
I can partition my query so that it returns smaller chunks or "blocks"
of data each time(say a page of data or two pages of data). Then I can
store a page of data in the table. The problem with this approach is
that it is not exactly transactional. Recovery would be very difficult
in this approach.
I could do this in a try catch block page by page and then the catch
could go ahead and delete the rows that got committed. The question then
becomes what if that transaction fails ?It sounds like you're committing the 'cardinal performance sin of DBMS processing',
of shovelling lots of raw data out of the DBMS, processing it in some small way,
and sending it (or some of it) back. You should instead do this processing in
a stored procedure or procedures, so the data is manipulated where it is. The
DBMS was written from the ground up to be a fast efficient set-based processor.
Using clever SQL will pay off greatly. Build your saw-mills where the trees are.
JoeYes we did think of stored procedures. Like I mentioned yesterday some of the post
processing depends on unicode and specific character sets. Java seemed ideally suited
to this since it handles these unicode characters very well and has all these libraries
we can use. Moving this to DBMS would mean we would make that proprietary (not that we
wont do it if it became absolutely essential) but its one of the reasons why the post
processing happens in java. Now that you mention it stored procedures seem the best
option.

Similar Messages

  • Web Service with Complex Results and Flex

    I have created a Enterprise Java Bean that has one "test" method that returns a String[]. I have compiled, deployed and registered this bean in Sun's Application Server 8.1. I am using NetBeans 5.0 to develop this project.
    I try to load this web service into Flex and I get a fault thrown: TypeError: Error #1034: Type Coercion failed: cannot convert []@29e5d06 to XMLList. I have set the returnType in Flex as "e4X.". Do I need to do this in my webservice.
    Any help would be appreciated.

    HI Andrea,
        I think with present netweaver developer studio , we can create Web services with end points as simple data types in java and the array of that simple data types.
        not sure whether it support our own custom developed classes as end points.
         just go through these links.
    http://help.sap.com/saphelp_nw2004s/helpdata/en/f7/af60f2e04d0848888675a800623a81/frameset.htm
    http://help.sap.com/saphelp_nw2004s/helpdata/en/f7/af60f2e04d0848888675a800623a81/frameset.htm
    from this we will get Restrictions for WS Endpoints.
                             Regards
                              Kishor Gopinathan

  • Error executing a query with large result set

    Dear all,
    after executing a query which uses key figures with exception aggregation the BIA-server log (TrexIndexServerAlert_....trc) displays the following messages:
    2009-09-29 10:59:00.433 e QMediator    QueryMediator.cpp(00324) : 6952; Error executing physical plan: AttributeEngine: not enough memory.;in executor::Executor in cube: bwp_v_tl_c02
    2009-09-29 10:59:00.434 e SERVER_TRACE TRexApiSearch.cpp(05162) : IndexID: bwp_v_tl_c02, QueryMediator failed executing query, reason: Error executing physical plan: AttributeEngine: not enough memory.;in executor::Executor in cube: bwp_v_tl_c02
    --> Does anyone know what this message exactly means? - I fear that the BIA-Installation is running out of physical memory, but I appreciate any other opinion.
    - Package Wise Read (SAP Note 1157582) does not solve the problem as the error message is not: "AggregateCalculator returning out of memory with hash table size..."
    - To get an impression of the data amount I had a look at table RSDDSTAT_OLAP of a query with less amount of data:
       Selected rows      : 50.000.000 (Event 9011)
       Transferred rows :   4.800.000 (Event 9010)
    It is possible to calculate the number of cells retreived from one index by multiplying the number of records from table RSDDSTAT_OLAP by the number of key figures from the query. In my example it is only one key figure so 4.800.000 are passed to the analytical engine.
    --> Is there a possibility to find this figure in some kind of statistic table? This would be helpful for complex queries.
    I am looking forward to your replies,
    Best regards
    Bjoern

    Hi Björn,
    I recommend you to upgrade to rev 52 or 53. Rev. 49 is really stable but there are some bugs in it and if you use BW SP >= 17 you can use some features.
    Please refer to this thread , you shouldn't´t use more than 50% (the other 50% are for reporting) of your memory, therefor I have stolen this quote from Vitaliy:
    The idea is that data all together for all of your BIA Indexes does not consume more then 50% of total RAM of active blades (page memory cannot be counted!).
    The simpliest test is during a period when no one is using the accelerator, remove all indexes (including temporary) from main memory of the BWA, and then load all indexes for all InfoCubes into ain memory. Then check your RAM utilization.
    Regards,
    -Vitaliy
    Regards,
    Jens

  • Web services with multiple elements in the results

    We are using ASP.Net and LiveCycle Forms with LiveCycle Designer 7.0. LiveCycle forms is running on JBOSS (turnkey installation). Our problem is that if the web service returns multiple results e.g.
          £12.99
          Widget
          £0.99
          Grommett
    The form does not grow to accommodate the extra results. Has anyone had any experience of this issue. Adobe say it can be done but so far we have had no luck.

    <[email protected]> ha scritto nel messaggio <br />news:[email protected]..<br />> We are using ASP.Net and LiveCycle Forms with LiveCycle Designer 7.0. <br />> LiveCycle forms is running on JBOSS (turnkey installation). Our problem is <br />> that if the web service returns multiple results e.g.<br />> <products><br />>   <product><br />>      <price>£12.99</price><br />>      <description>Widget</description><br />>   </product><br />>   <product><br />>      <price>£0.99</price><br />>      <description>Grommett</description><br />>   </product><br />> </products><br />> The form does not grow to accommodate the extra results. Has anyone had <br />> any experience of this issue. Adobe say it can be done but so far we have <br />> had no luck.<br /><br />You have to create a subform that has flow content, then flag "repeat the <br />subform for each data item" (or something similar, I've not Designer <br />installed on this machine). Remember to save as dynamic PDF.<br /><br />Bye,<br />Alessio

  • Calling Reporting Services Web Service with jQuery possible?

    Hi,
    is it possible to call the Reporting Services Web Service with jQuery? If yes, can someone post me a small example?
    Background:
    My plan is to create a html with a form which is also uploaded then into the reportserver. I open this html later by clicking a link in a report (with gotoURL open.window). The report opens the html inclusive the overtaken of some additional parameters
    (reportname, reportdescription). These parameters I will use in the html-form as defaultvalues for the corresponding input-text-fields. Now the user can make some changes (i.e. the decription). With a click on a button I will send the new description to
    the Reporting Services Web Service by using the SetProperties method, closing the html-window and reload the report. Important is that I want to upload the html also into the reportserver itself.
    I have already found how to consume a web service via jQuery but with the Reporting Services Web Service I did not get it running in my tests.
    I have referenced to the following jQuery.js: http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
    Here you can see my tests I made with the results:
    $.ajax({
    type: 'POST',
    url: 'http://<..>/ReportServer/ReportService2010.asmx/ListChildren',
    data: {'ItemPath':'/','Recursive':false},
    complete: function(xData, status) {
    $('p').html($(xData.responseXML).text()); // result
    $("#divStatus").text( status ); // status }
    I got a NULL response with Status success. But where are the items?
    Another test which should response only one value was that:
    $.ajax({
    type: "POST",
    contentType: "text/xml; charset=utf-8",
    url: "http://<..>/ReportServer/ReportService2010.asmx/GetItemType",
    data: {"Item":"/Development"}, // Development is a Folder in my Reportserver-Root
    dataType: "xml",
    success: function (msg) {
    $("#divResult").html(msg.responseXML);
    error: function (data, status, error) {
    $("#divResult").html("WebSerivce unreachable<br> <br>" + data.responseXML + "<br> <br>(" + error + ")");
    Here I got an [object Error]
    And here my last test:
    var soapMessage = '<?xml version="1.0" encoding="utf-8"?>\
    <soap:Envelope \
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" \
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">\
    <soap:Body>\
    <GetItemType xmlns="http://www.microsoft.com/sql/ReportingServer">\
    <ItemPath>/Development</ItemPath>\
    </GetItemType>\
    </soap:Body>\
    </soap:Envelope>';
    $.ajax({
    type: "POST",
    contentType: "text/xml; charset=utf-8",
    url: http://<..>/ReportServer/ReportService2010.asmx?wsdl,
    data: soapMessage,
    dataType: "xml",
    success: processSuccess,
    error: processError
    function processSuccess(data, status, req) {
    if (status == "success")
    $("#response").text($(req.responseXML).find("Type").text());
    function processError(data, status, req) {
    alert(req.responseText + " " + status);
    Here I got an "Undefined error"
    Can anyone help me?
    Thanks
    René Illner

    Hi Rene,
    I have one vbscript class to call web services. May be if you need you can use it.
         dim ws
         set ws = new webservice
         ws.url = "http://servername/ReportServer/ReportService2010.asmx"
         ws.method = "MethodName"
         ws.parameters.Add "Parameter1", "Param1 Desc.."
         ws.parameters.Add "Parameter2","[email protected].."
         ws.execute
         set ws = nothing
    '------web service calling class
    class WebService
      public Url
      public Method
      public Response
      public Parameters
      public function execute()
        dim xmlhttp
        Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
        xmlhttp.open "POST", Url & "/" & Method, false
        xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        xmlhttp.send Parameters.toString
        response = xmlhttp.responseText
        set xmlhttp = nothing
      end function
      Private Sub Class_Initialize()
        Set Parameters = new wsParameters
      End Sub
      Private Sub Class_Terminate()
        Set Parameters = Nothing
      End Sub
    End class
    class wsParameters
      public mCol
      public function toString()
        dim nItem
        dim buffer
        buffer = ""
        for nItem = 1 to Count
          buffer = buffer & Item(nItem).toString & "&"
        next
        if right(buffer,1)="&" then
          buffer = left(buffer,len(buffer)-1)
        end if
        toString = buffer
      end function
      public sub Clear
        set mcol = nothing
        Set mCol = CreateObject("Scripting.Dictionary")
      end sub
      public sub Add(pKey,pValue)
        dim newParameter
        set newParameter = new wsParameter
        newParameter.Key = pKey
        newParameter.Value = pValue
        mCol.Add mCol.count+1, newParameter
        set newParameter = nothing
      end sub
      public function Item(nKey)
        set Item=mCol.Item(nKey)
      end function
      public function ExistsXKey(pKey)
        dim nItem
        for nItem = 1 to mcol.count
          if mCol.Item(nItem).key = pKey then
            ExistsXKeyword = true
            exit for
          end if
        next
      end function
      public sub Remove(nKey)
        mCol.Remove(nKey)
      end sub
      public function Count()
        Count=mCol.count
      end function
      Private Sub Class_Initialize()
        Set mCol = CreateObject("Scripting.Dictionary")
      End Sub
      Private Sub Class_Terminate()
        Set mCol = Nothing
      End Sub
    end class
    class wsParameter
       public Key
       public Value
       public function toString()
         toString = Key & "=" & Value
       end function
    end class
    Regards, RSingh

  • Accessing external web service with non-constant URL

    Hello, all
    I am looking in the documentation on accessing external web services, but either I am looking in the wrong place, or the documentatoin is lacking info.
    My clients have several web services in the local network (regular services, not DB-based), the have the same interface, but different URL's.
    Versions of the DB are 11, 12, and 16.
    First of all, I do not see in the specs an option for a non-hardcoded URL. The logic says that this has to be possible, but I cannot find it.
    Second, I need to see an example of accessing an XML or JSon based service, I cannot find it in the specs either.
    Can anyone point me to a document with examples?
    Thank you
    Arcady

    The following will call a web service with whatever URL you pass in as the argument "myurl".  I think that is what you are looking for.
    CREATE PROCEDURE cli_test2( myurl LONG VARCHAR )
    RESULT( httpheaders long varchar, httpvalues long varchars
    URL '!myurl'
    To deal with the resulting data in XML, use the OPENXML() function.
    eg. To turn an XML list of employees that looks like this:
    <root>
    <row EmployeeID="102" Surname="Whitney" GivenName="Fran" StartDate="1984-08-28"/>
    </root>
    into a table of results, you would do this (where xmlgetemplist() is the web service call):
    CREATE OR REPLACE PROCEDURE xmlgetemplist() RESULT( httpheader long varchar, httpbody long varchar)
    URL 'http://localhost/demo/xmlEmployeeList'
    TYPE 'HTTP:GET';
    create variable res long varchar;
    -- call the web service
    select httpbody into res from xmlgetemplist() where httpheader = 'Body'
    -- extract the XML elements into a SQL result set
    select * from openXML( res, '/root/row' ) WITH ( EmployeeID INT '@EmployeeID',
           GivenName    CHAR(20) '@GivenName',
           Surname      CHAR(20) '@Surname',
           PhoneNumber  CHAR(10) '@Phone');
    To deal with the resulting data in JSON, use the sp_parse_json() procedure.
    eg.
    To turn a JSON formatted list of employees that looks like this:
    "EmployeeID": 102,
    "Surname": "Whitney",
    "GivenName": "Fran",
    "StartDate": "1984-08-28",
    "TerminationDate": null
    into a table of results, you would do this (where jsongetemplist() is the web service call):
    CREATE OR REPLACE PROCEDURE jsongetemplist() RESULT( httpheader long varchar, httpbody long varchar)
    URL 'http://localhost/demo/jsonEmployeeList'
    TYPE 'HTTP:GET';
    create variable foo long varchar;
    --call the webservice
    select httpbody into foo from jsongetemplist() where httpheader = 'Body';
    --turn the json result into a structured array of data
    -- this step is required because of less structured nature of JSON
    call sp_parse_json( 'output_array', foo);
    --extract the JSON elements from the output array into a SQL result set
    SELECT  output_array[[row_num]].EmployeeID as EmployeeID,
                   output_array[[row_num]].SurName as SurName,
                   output_array[[row_num]].GivenName as GivenName,
                   output_array[[row_num]].StartDate as StartDate,
                   output_array[[row_num]].TerminationDate as EndDate
    FROM sa_rowgenerator(1, CARDINALITY(output_array))
    Hope this helps,
    --Jason

  • Web services with servicegen i Weblogic 7

    I am trying to create web services with Weblogic's tool servicegen and
    ANT. It works great until I have a web service method that return a PK
    class of an EJB. I get the error "Error: bean property and public
    field found with the same name: id" (full stacktrace below). After
    some investigating I found out that it was my PK class that was the
    bad guy. But my PK class MUST have the field "id" public, otherwise
    ejbc complains...
    Am I doing anything wrong or does anyone have a solution?
    /Weasel
    webservices:
    [servicegen] Generating service "HelloWorldEJB" ...
    [servicegen] Generating XML types and serializers from ejb-jar
    (E:\java\projects\CMP20CMR-xdoclet\build\ejb\weblogic-ejb\samples-ejb.jar)
    [servicegen] weblogic.xml.schema.binding.BindingException: Error: bean
    property and public field found with the same name: id
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.AutoTypeTask.execute(AutoTypeTask.java:356)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.generateService(ServiceGenTask.java:248)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.execute(ServiceGenTask.java:141)
    [servicegen]      at org.apache.tools.ant.Task.perform(Task.java)
    [servicegen]      at org.apache.tools.ant.Target.execute(Target.java)
    [servicegen]      at org.apache.tools.ant.Target.performTasks(Target.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTarget(Project.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTargets(Project.java)
    [servicegen]      at org.apache.tools.ant.Main.runBuild(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.start(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.main(Main.java)
    [servicegen] --- Nested Exception ---
    [servicegen] weblogic.xml.schema.binding.BindingException: Error: bean
    property and public field found with the same name: id
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.ComponentAutoTyper.mapComponent(ComponentAutoTyper.java:157)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.EJBAutoTyper.run(EJBAutoTyper.java:100)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.AutoTypeTask.execute(AutoTypeTask.java:350)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.generateService(ServiceGenTask.java:248)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.execute(ServiceGenTask.java:141)
    [servicegen]      at org.apache.tools.ant.Task.perform(Task.java)
    [servicegen]      at org.apache.tools.ant.Target.execute(Target.java)
    [servicegen]      at org.apache.tools.ant.Target.performTasks(Target.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTarget(Project.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTargets(Project.java)
    [servicegen]      at org.apache.tools.ant.Main.runBuild(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.start(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.main(Main.java)
    [servicegen] --- Nested Exception ---
    [servicegen] weblogic.xml.schema.binding.BindingException: Error: bean
    property and public field found with the same name: id
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.JavaInspector.checkForFieldConflict(JavaInspector.java:384)
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.JavaInspector.addPropertiesToScalar(JavaInspector.java:345)
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.JavaInspector.fillDescriptor(JavaInspector.java:152)
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.JavaInspector.getDescriptor(JavaInspector.java:115)
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.JavaInspector.createDescriptorForClass(JavaInspector.java:90)
    [servicegen]      at weblogic.xml.schema.binding.internal.codegen.Compiler.compile(Compiler.java:121)
    [servicegen]      at weblogic.xml.schema.binding.internal.XSDTypeMappingBuilder.mapClass(XSDTypeMappingBuilder.java:88)
    [servicegen]      at weblogic.xml.schema.binding.internal.XSDTypeMappingBuilder.mapClass(XSDTypeMappingBuilder.java:101)
    [servicegen]      at weblogic.xml.schema.binding.internal.TypeMappingBuilderBase.addMapping(TypeMappingBuilderBase.java:176)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.ComponentAutoTyper.addMapping(ComponentAutoTyper.java:85)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.ComponentAutoTyper.mapComponent(ComponentAutoTyper.java:113)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.EJBAutoTyper.run(EJBAutoTyper.java:100)
    [servicegen]      at weblogic.ant.taskdefs.webservices.autotype.AutoTypeTask.execute(AutoTypeTask.java:350)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.generateService(ServiceGenTask.java:248)
    [servicegen]      at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.execute(ServiceGenTask.java:141)
    [servicegen]      at org.apache.tools.ant.Task.perform(Task.java)
    [servicegen]      at org.apache.tools.ant.Target.execute(Target.java)
    [servicegen]      at org.apache.tools.ant.Target.performTasks(Target.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTarget(Project.java)
    [servicegen]      at org.apache.tools.ant.Project.executeTargets(Project.java)
    [servicegen]      at org.apache.tools.ant.Main.runBuild(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.start(Main.java)
    [servicegen]      at org.apache.tools.ant.Main.main(Main.java)
    BUILD FAILED
    E:\java\projects\CMP20CMR-xdoclet\script\build.xml:498:
    weblogic.xml.schema.binding.BindingException: Error: bean property and
    public field found with the same name: id

    Web services can only be published to BEA if you install Apache SOAP on BEA and use the Apache SOAP option of JDeveloper. The J2EE Web Services implementation framework is specific to Oracle9iAS.
    The PL/SQL Web Services server implementation is based on the J2EE Web Services option and as a result is not really portable to BEA.
    To publish a PL/SQL Web service on BEA with JDeveloper you would have to write the Java wrapper code to invoke the stored procedure using standard JDBC and then publish that Java class as a Web service using Apache SOAP. Then if you had Apache SOAP installed on BEA you would be set.
    Portability of Web services implementations is a big feature coming with JAX-RPC - currently what most vendors have is interoperability between implementations because of things like SOAPBuilders and WS-I. When JAX-RPC becomes part of J2EE 1.4 roughly in June and vendors start putting out implementations on it you should get closer to portability.
    In the meantime, the easiest way to get portability is to use the same SOAP server on both servers - Apache SOAP is a good example.
    Hope this helps.
    Mike

  • Problem with RESTful web service with header value

    Hi,
    I am on Apex 4.2.2 and Listener 2.1 and the listener is on WEblogic.
    I succeeded to get a RESTful web service working in an application with no header to obtain a full set of data. The data set is very large, so I am now just trying to set up a web service to get a set of data based on a student ID.
    I followed the examples shown in the RESTful web service module of SQL Workshop and set up a handler of this type:
    https://ourweblogicserver/apex/bnr/ace/students/course_grades/{stid}
    The test for this handler succeeded both for JSON output and CSV output in the Workshop test environment.
    However, when I try it from a Web Service Reference that I created for my application following what looked like the same approach used on the example video, I get NO data back. If I put a 'stid' directly into a URL of a web browser and do the basic authentication I get the data!!
    This is what I have for the Web service reference:
    https://ourweblogicserver/apex/bnr/ace/students/course_grades/{stid}
    Basic auth set to Yes -- and this is working -- I am able to authenticate
    HTTP method Get
    output format Text
    no response Xpath
    no response namespace
    defaults for new record and parameter delimiter
    NO REST input parameters
    Output set for all the fields in the data set queried (same set of data as in my rest service which does not have any http header)
    REST HTTP Header : Name stid
    I there something I am missing. I am not sure how to troubleshoot this further.
    Pat

    Hi,
    I have posted a simple application with the RESTful reference:
    http://apex.oracle.com/pls/apex/f?p=13758
    I can give you full privileges on this so you can look at the WEB service reference. Shall I send to you separately for login user?
    It is using the RESTful service: http://apex.oracle.com/pls/apex/nd_pat_miller/demo/employee/{deptno}
    This RESTful service tests fine when I test from within the RESTful web service module of the Workspace.
    I based this on the Video demo tutorial for RESTful web service that Oracle published for 4.2 release. The video seemed to exclude the {deptno} in the URL but when I try that, it doesn't work either.
    This is the error I am getting when I run this on my Apex environment: (it, of course, will not run the web service in the apex.oracle.com environment)
    class="statusMessage">Bad Request</span>                                         
    </h3>                                         
    </div>                                         
    </div>                                         
    <div id="xWhiteContentContainer" class="xContentWide">                                         
    <div class="xWhiteContent">                                         
    <div class="errorPage">                                         
    <p>                                         
    <ul class="reasons"><li class="badRequestReason"><span class="target" style="display:none;">uri</span><span class="reason">Request path contains unbound parameters: deptno</span></li>                                    
    </ul>Thanks,
    Pat
    Edited by: patfmnd on May 8, 2013 3:33 AM

  • Problem updating a SOAP Web Service with ArrayCollection

    Hello,
    I am having issues POST'ing an ArrayCollection to a C# Web
    Method. Here's how I have my application set up:
    I have a DataGrid in my application and set the dataProvider
    to be the result object of a Web Service operation. I set the
    DataGrid's editable property to "true" and would like to be able to
    edit the data and send off the DataGrid's dataProvider as the
    parameter for the Web Method. If I edit the first row of the
    DataGrid and trigger the operation, it gets saved just fine. If I
    try to edit any other row this way, it keeps sending the same
    packet (as verified by a packet sniffer) not allowing me to update
    any other row. It seems the Web Service is sending the first 255
    characters of the serialized ArrayCollection.
    My questions are: why is this happening?
    and
    How can I fix this?
    Here is the request of my Web Service operation:
    <mx:request xmlns="">
    <GlossaryTerms>
    {GlossaryArrayCollection}
    </GlossaryTerms>
    </mx:request>
    This is the definition of GlossaryArrayCollection:
    [Bindable]
    public var GlossaryArrayCollection:ArrayCollection = new
    ArrayCollection();
    Here is the SOAP packet that the C# Web Method is expecting:
    <?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="
    http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="
    http://www.w3.org/2001/XMLSchema"
    xmlns:soap12="
    http://www.w3.org/2003/05/soap-envelope">
    <soap12:Body>
    <GlossaryUpdate xmlns="">
    <GlossaryTerms>
    <Glossary cID="int" cDeleted="boolean" cTerm="string"
    cDefinition="string" cURL="string" cPublic="boolean"
    cRowVersion="string"/>
    <Glossary cID="int" cDeleted="boolean" cTerm="string"
    cDefinition="string" cURL="string" cPublic="boolean"
    cRowVersion="string" />
    </GlossaryTerms>
    </GlossaryUpdate>
    </soap12:Body>
    </soap12:Envelope>
    Thanks to anyone for their help.
    Brian Cary

    Where exactly you are seeing this error? possible for you share the screenshot?
    Execution failed: These policy alternatives can not be satisfied:
    {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}SupportingTokens

  • Issue with calling external web service with authentication details ...

    Hi,
         I am facing a deployment issue with Oracle ESB. I am trying to call an external Web Service with authentication from ESB SOAP Service. It is working fine with my local ESB version 10.1.3.3.0 Build PCBPEL_10.1.3.3.0_GENERIC_070615.0525; however it is getting an error at our development ESB version 10.1.3.3.1 Build PCBPEL_10.1.3.3.1_GENERIC_RELEASE.
         I am getting following error.
    An unhandled exception has been thrown in the ESB system. The exception reported is: "org.collaxa.thirdparty.apache.wsif.WSIFException: exception during SOAP invoke: Server was unable to process request. ---> Object reference not set to an instance of an object.; nested exception is: javax.xml.rpc.soap.SOAPFaultException: Server was unable to process request. ---> Object reference not set to an instance of an object. at com.collaxa.cube.ws.wsif.providers.oc4j.jaxrpc.WSIFOperation_JaxRpc.populateFaultMessage(WSIFOperation_JaxRpc.java:3086) at com.collaxa.cube.ws.wsif.providers.oc4j.jaxrpc.WSIFOperation_JaxRpc.invokeOperation(WSIFOperation_JaxRpc.java:1728) at com.collaxa.cube.ws.wsif.providers.oc4j.jaxrpc.WSIFOperation_JaxRpc.invokeRequestResponseOperation(WSIFOperation_JaxRpc.java:1473) at com.collaxa.cube.ws.wsif.providers.oc4j.jaxrpc.WSIFOperation_JaxRpc.executeRequestResponseOperation(WSIFOperation_JaxRpc.java:1196) at oracle.tip.esb.server.common.wsif.WSIFInvoker.executeOperation(WSIFInvoker.java:867) at oracle.tip.esb.server.common.wsif.WSIFInvoker.nextService(WSIFInvoker.java:770) at oracle.tip.esb.server.common.wsif.WSIFInvoker.nextService(WSIFInvoker.java:790) at oracle.tip.esb.server.service.impl.outadapter.OutboundAdapterService.nextService(OutboundAdapterService.java:208) at oracle.tip.esb.server.service.impl.outadapter.OutboundAdapterService.processBusinessEvent(OutboundAdapterService.java:127) at oracle.tip.esb.server.dispatch.InitialEventDispatcher.dispatchNonRoutingService(InitialEventDispatcher.java:118) at oracle.tip.esb.server.dispatch.InitialEventDispatcher.dispatch(InitialEventDispatcher.java:95) at oracle.tip.esb.server.dispatch.BusinessEvent.raise(BusinessEvent.java:1424) at oracle.tip.esb.utils.EventUtils.raiseBusinessEvent(EventUtils.java:112) at oracle.tip.esb.server.service.EsbRouterSubscription.onBusinessEvent(EsbRouterSubscription.java:307) at oracle.tip.esb.server.dispatch.EventDispatcher.executeSubscription(EventDispat
         Could one of you please help me out to understand why it is happining.
    Thanks in advance.
    Jyotirmoy.

    Hi Mahesh,
    One you are missing is authentication token or credentials.
    Please refer to the following articles.
    http://www.cleverworkarounds.com/2014/02/05/tips-for-using-spd-workflows-to-talk-to-3rd-party-web-services/
    A Series of articles related to Web Service in SPD Workflow
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 1
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 2
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 3
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 4
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 5
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 6
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 7
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 8
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 9
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 10
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 11
    Trials or tribulation?
    Inside SharePoint 2013 workflows–Part 12
    Please don't forget to mark it answered, if your problem resolved or helpful

  • How to handle large result set of a SQL query

    Hi,
    I have a question about how to handle large result set of a SQL query.
    My query returns more than a million records. However, the Query Template has a "row count" parameter. If I don't specify it, it by default returns only 100 lines of records in the query result. If I specify it, then it's limited to a specific number.
    Is there any way to get around of this row count issue? I don't want any restriction on the number of records returned by a query.
    Thanks a lot!

    No human can manage that much data...in a grid, a chart, or a direct-connected link to the brain. 
    What you want to implement (much like other customers with similar requirements) is a drill-in and filtering model that helps the user identify and zoom in on data of relevance, not forcing them to scroll through thousands or millions of records.
    You can also use a time-based paging model so that you only deal with a time "slice" at one request (e.g. an hour, day, etc...) and provide a scrolling window.  This is commonly how large datasets are also dealt with in applications.
    I would suggest describing your application in more detail, and we can offer design recommendations and ideas.
    - Rick

  • ABAP Web Service with tables

    Hello,
    <br>
    <br>
    We need to build a web service with a predefined message in our ERP (ABAP), without PI or WebAS JAVA.
    <br>
    <br>
    We thought it should be a simple task, because we had no problem with many other applications and systems when building the same service, but were not able to build it with SAP ABAP, probably as a consequence of our lack of knowledge on ABAP SOAP runtime.
    <br>
    <br>
    We have an external asynchronous process that delivers information to many other systems using web services (information diffusion). Concecuently, the web service call's structure is determined by the caller, so we have to fulfill this structure if we want to receive the info.
    <br>
    <br>
    The owner of the process defined a very simple service call, in which one kind of  "record" can be repeated 1 to n times:
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    &lt;reglasSuscripcion&gt;
    <br>
                &lt;!Zero or more repetitions:&gt;
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
    &lt;/reglasSuscripcion&gt;
    <br>
    <br>
    <br>
    In order to receive this info, we have to implement an abap web service handler to accept this kind of call, the same way other applications/systems have already done.
    <br>
    <br>
    We tried to build a RFC function call and create a web service with the wizard and it resulted in a web service with the following WSDL:
    <br>
    <br>
    &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style"&gt;
    <br>
    <br>
    <br>
    <br>
             &lt;reglasSuscripcion&gt;
    <br>
                &lt;!Zero or more repetitions:&gt;
    <br>
                &lt;item&gt;
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
                &lt;/item&gt;
    <br>
    <br>
    <br>
    <br>
    &lt;item&gt;
    <br>
                   &lt;nombre&gt;?&lt;/nombre&gt;
    <br>
                   &lt;valor&gt;?&lt;/valor&gt;
    <br>
                &lt;/item&gt;
    <br>
             &lt;/reglasSuscripcion&gt;
    <br>
    <br>
    <br>
    <br>
    We found two main problems:
    <br>
    <br>
    1.- When "wrapping" the RFC as a WS with the wizard, for a table datatype it automatically includes the <item></item> tag, so we break the predefined calling rules.
    <br>
    <br>
    2.- The namespace is fixed by the wizard, and we would like to use a common namespace for all the "susbscribers", logically, the namespace fixed by the information diffusion service.
    <br>
    <br>
    We also tried to find info on the outside-in approach for building a web service from the WSDL, but all the info we found required the ESR and we have no PI, just the ERP.
    <br>
    <br>
    Any ideas on how to proceed?
    <br>
    <br>
    Thanks in advance,
    <br>
    <br>
    Joseba M. Iturbe
    <br>
    <br>
    Edited by: Soporte Desarrollo on Mar 5, 2010 10:56 AM

    #2.  I've recently had to "zap" some namespaces in an ECC5 system because the calling (TIBCO) system didn't appreciate the default SAP "urn" default - something to do with multiple colons in the address.  There were, I think, just three table this affected, all VEP* ones.  I think I should have been able to change these via the virtual interface in SE80 except that the ECC5 code was a bit "light" in this respect, so you may be able to do this now in SOAMANAGER in ECC6 (btw,  I also had to re-save the WS definition within WSCONFIG and re-activate the virtual interfaces after this "zap" to generated the associated handler class again).
    #1. Given your "name / value" pairs represent a complex type, then it might be better practice to have them as "item" which is probably why SAP proposes it this way... what does your custom function module parameter list look like?
    Jonathan

  • Use web service with overloaded method

    Hi all,
    Does anyone knows how can I use (e.g in VC or GP) a web service with overloaded methods?
    When I try to use one, I get the following error message:
    com.sap.engine.services.webservices.jaxrpc.exceptions.ProxyGeneratorException: Proxy Generator Error. WSDL Operation with name [search] is overloaded (defined twice). Operation overloading is not supported by proxy generator.
    Can I set something in order to be able to use such type of services. Or some other solution?
    For some reasons I do not want to change the service operation names.
    Thanks in advance!
    Best regards,
    v s

    Hi all,
    Does anyone knows how can I use (e.g in VC or GP) a web service with overloaded methods?
    When I try to use one, I get the following error message:
    com.sap.engine.services.webservices.jaxrpc.exceptions.ProxyGeneratorException: Proxy Generator Error. WSDL Operation with name [search] is overloaded (defined twice). Operation overloading is not supported by proxy generator.
    Can I set something in order to be able to use such type of services. Or some other solution?
    For some reasons I do not want to change the service operation names.
    Thanks in advance!
    Best regards,
    v s

  • Call ABAP Web Service with Java code only

    Hi all,
    First of all, I am writing script in Adobe form but am not using the one in SAP.
    I am trying to call the web service and process the result with script open (i.e. no dataconnection created), because I am trying to do that in a dialog.
    I can call a non-SAP web service without problem, but I am not able to call a simple web service with only a single string input, anyone have any example?
    Here is the SOAP for input:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:rfc:functions">
       <soapenv:Header/>
       <soapenv:Body>
          <urn:Z_RFC_GET_STAFF_BANK_INFO>
             <A_STAFF_ID>0123456</A_STAFF_ID>
          </urn:Z_RFC_GET_STAFF_BANK_INFO>
       </soapenv:Body>
    </soapenv:Envelope>
    Here is my code to call:
         var cURL = "http://some-host-name:port/sap/bc/srt/wsdl/bndg_DEDB492BB032E7F1B09F001CC4FBCEC9/wsdl11/allinone/ws_policy/document?sap-client=300";
         var response = SOAP.request(
              cURL: cURL,
              oRequest: {
                   "urn:sap-com:document:sap:rfc:functions:Z_RFC_GET_STAFF_BANK_INFO": {
                        A_STAFF_ID: "0123456"
    Regards
    Bill

    Hello I have the same problem, were you able to execute the WS through the JS code now?
    I would like to call an ABAP WS using JavaScript to return complex structures that I would like to manage directly with JS.
    I tried with this code and I get the error "RaiseError: Acrobat Raise." when the request is executed:
    var WSUrl = "http://<server>:<port>/sap/bc/srt/wsdl/bndg_4D15C75529330AF1E10000000A150429/wsdl11/allinone/ws_policy/document?sap-client=500";
    var VendorNumber = xfa.form.DATA.DATAFLOW.SF_HEADER.VENDOR_NUMBER.rawValue;
    try {
    // Create request structure, read Input out of text field
    var request = {
              "urn:sap-com:document:sap:soap:functions:mc-style:ZWsTest" : {ILifnr: VendorNumber}
    SOAP.wireDump = true;
    // Call web service using SOAP object
    var response = SOAP.request ({
            cURL: WSUrl,
            oRequest: request
    //        cAction: "urn:sap-com:document:sap:soap:functions:mc-style"
    } catch (e) {
        xfa.host.messageBox(e.toString()); //pop-up "TypeError:service.CelsiusToFahrenheit is not a funciton"
    with this other code I get the error "SOAPError: CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 'ILifnr'":
    try {
        var myProxy = SOAP.connect(WSUrl);
        var result = myProxy.ZWsTest( { ILifnr: VendorNumber } );
        xfa.form.DATA.DATAFLOW.SF_HEADER.E_DESCRIPTION.rawValue = result;
    // Display the response in the console:
       console.println("Result is " + result);
    } catch (e) {
        xfa.host.messageBox(e.toString()); //pop-up "TypeError:service.CelsiusToFahrenheit is not a funciton"
    in the second option, if I make the field ILifnr optional the call is succesfully performed but the parameter is not passed to the WS. So the call is working.
    Using stand-alone LiveCycle designer 8.1 and Adobe Reader 8
    Any suggestions?
    Many thanks,
    G.
    Edited by: Guillem Mateu Navalón on Jan 13, 2011 1:13 PM

  • How to use web services with Dynamic url behaviour

    Hi,
    IView created by me currently uses some web services whose url behavior is static but i want to give a dynamic url behavior. i.e. i want to use the url which user provides. So here are my questions
    1. How I shall assign the url supplied by the user to IView?
    2. If I want to set some config variables during runtimes how I shall do it?
    Thanks in advance,
    Vishvesh

    Hi,
    1. I'm guessing you mean the webservice's url the user provides is pointing to an identical webservice to what you used to create your proxy... otherwise I think it will be very hard to do (I can imagine creating the proxies using the wsdl tool in run time or using code dome.. but that can't be what you want, right?).
    So if what you wanted is to use the same web service with a different url, then the web service's proxy class you created has API for doing this in code! (it inherits it)
    2. you can't, simply since the portal application doesn't ever use the config file... it isn't even deployed to the portal... so dynamic properties are "out of the question" here, sorry... see 1 again
    Regards,
    Ofer

Maybe you are looking for