Synchronous HTTP POST on Asynchronous Server

I am writing an asynchronous event driven server that must accept synchronous HTTP posts.
For example:
- Client sends HTTP POST to server
- Server fires an internal asynchronous event
- Some time later, another asynchronous event
- Server returns an HTTP response
If I attempt to do this with Servlets, each POST will result in a separate thread that waits for the response. For a high number of posts, this could result in a massive amount of threads. What I would rather happen is that each POST waits for the HTTP response without the server having to waste a thread.
Is there a way to do this?
Thanks.
Chris

Hi,
Thanks for the sharing.J
Jeremy Wu
TechNet Community Support

Similar Messages

  • Using SSL Module to Encrypt HTTP post to external Server

    I would like to know if it's possible for a CSM with its SSL module to receive an HTTP POST from our internal web servers, encrypt that POST w/ SSL, and finally to forward the newly created SSL transmission to a remote external SSL server? If it is possible, is this good practice or is it better to let the web server do the encryption?

    this is possible.
    It is good practice if you do not want to overload your server with the heavy task of encryption/decryption.
    If your server is very powerfull and far from being used to its maximum capacity, you can do it on the server.
    Another advantage of using an SSL module is that the CSM will see your request in clear text and can therefore perform so *smart* loadbalancing before it gets encrypted by the SSL module.
    [ie: cookie stickyness, url hashing, ...]
    Regards,
    Gilles.

  • HTTP POST to PHP server problem

    Hi, im trying post a long string to php from a MIDLET, but i have some problems. When i send the whole String, my php server cant receive the request (i have not any response), but, if the string that i send is 1/5 from the original, the process is successful correctly. have somebody any idea?
    thx

    this is my problem, extracted from another topic on this forum:
    "Hi everyone.
    I have a problem, and hope someone may help me.
    My midlet is uploading sizeable data via http POST.
    I'm using WTK104, since i need MIDP1.0
    The code have been tried on DefaultGrayPhone emulator
    and add-on Nokia's Series 60 Emulator.
    Both emulators chunck data, however in different ways.
    Deafult one simply produces wrong chunk length (possibly a bug),
    Nokia's one always chunks by equal offsets of 2016 bytes.
    I'm not using flushing, just close. All the data is being send
    at once by one output stream write call.
    So I believe (after proper investigation) that MIDP will use chunked Transfer-Encoding method whatever
    on such sizeable a data as mine is (up to 50KB) and there's no way to override this behaviour.
    Here the main problem appears - Apache refuses to accept chunked encoding in request. The corresposnding message is given in error log
    *chunked transfer encoding forbidden*. The returned code is 411 - Content-Length requred. I see no way to override this behaviour of Apache. I was trying to upload my data into Zope web-server, which is my primary goal, but it doesn't handle chunked request either.
    Has anyone faced the same problem? Who has managed to POST sizeable data from midlet? Which web servers did you use for that?
    Any inputs are highly appreciated!
    Anton"
    Another:
    "> So I believe (after proper investigation) that MIDP
    will use chunked Transfer-Encoding method whatever
    on such sizeable a data as mine is (up to 50KB) and
    there's no way to override this behaviour.Is this true? When I try to set the content-length headers and then write a large byte[] to the output stream I got from an HttpConnection, the HttpConnection appears to remove the content-length header altogether and automatically sets the transfer-encoding to chunked.
    Note- I am not calling flush on the outputstream, but I am calling httpconnection.getResponseCode, which I believe calls flush on the outputstream.
    Abraham"
    I have the identical problem.

  • ICal Server Email invitations HTTP post to SMTP server?

    Hello all - We have an iCal server truing to post HTTP to an external SMTP server for email invitations. In the caldav error log:
    2010-02-11 17:42:20-0800 [-] [caldav-8009] [AuthorizedHTTPGetter,client] [twistedcaldav.scheduling.imip#error] Could not do server-to-imip request : <twistedcaldav.scheduling.imip.ScheduleViaIMip object at 0x102cc8590> Connection was closed cleanly.
    2010-02-11 17:42:27-0800 [-] [caldav-8009] [PooledMemCacheProtocol,client] [twistedcaldav.scheduling.imip#error] Could not do server-to-imip request : <twistedcaldav.scheduling.imip.ScheduleViaIMip object at 0x102cba3d0> iMIP VFREEBUSY REQUESTs not supported.
    In the smtp mail.log:
    Feb 11 15:19:17 ml01vm postfix/smtpd[11981]: warning: non-SMTP command from unkn
    own[X.X.X.X]: POST /inbox HTTP/1.0
    Let me know if I can provide more information. I have reset the iCal email invitation /server settings numerous times with no effect.

    Apparently the answer is Google Calendar.

  • SOAP over HTTP/POST

    Hi everyone,
    I'd be eternally grateful if someone could provide me with a quick + easy solution to the following (basic?) task.
    I have a user form with the required parameters and a submit button. I have an XML schema which specifies the format for the soap requests and responses. How do I accept user input, wrap it into a soap request, send it via HTTP/POST to a server ( http://localhost:9999/xyz/xyz), wait for a soap response and display the response in a readable format to the user when they press the submit button? Not that hard is it?!
    Please try to be a specific as possible because I'm no Java expert. I'm just so confused with all the tutorials about wsdl, bpel, tomcat, jax ws, glassfish etc etc etc!
    I use netbeans and java app server 9, though I'm open to other IDEs/servers.
    Any help will be greatly appreciated,
    Ruth

    https://saaj.dev.java.net/source/browse/*checkout*/saSAAJ: aj/saaj-ri/docs/index.html
    The Java Web Services Tutorial:
    http://java.sun.com/webservices/docs/1.6/tutorial/doc/index.html
    (Chapter 5)
    SOAP Tutorial: http://www.w3schools.com/soap/default.asp

  • Query regarding encoding/decoding of XML over HTTP Post request

    Hello,
    I am working on a project where I need to put SMS inside XML and
    eventually transfer this XML via HTTP post from/to server/client.
    Assuming the SMS to be 7-bit text the XML may look something like
    <?xml+version="1.0"?>
    <SMS
    TESTMESSAGE
    </SMS>
    This XML when encoded in a HTML post may look something like
    http://<IP Address>:<port>/
    POST /MessageReceiver.jsp HTTP/1.0
    Host: www.SomeHost.net
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 90
    xmlMsg=%3C%3Fxml+version%3D%221.0%22%3F%3E%0D%0A%3CSMS%0D%0A%09TESTMESSAGE0D%0A%3C%2FSMS%3E
    This xml is UTF-8 (7-bit ASCII) by default since no encoding format has been specified.
    My question - how will the encoding of xml change to - when 8 bit binary data
    is transferred via xml.
    for e.g.
    <?xml+version="1.0"?>
    <SMS
    <!!!!!BINARY DATA!!!!!>
    </SMS>
    for such a file how/what shld the encoding be set to.
    Further my spec-states the following.
    "The content of the XML must respect the encoding. Thus a SMS
    containing typically french characters must use ISO-8859-1 encoding"
    "This code needs to work with both UTF-8 and UTF-16 standards (ASCII and Unicode). Because of this the parsing code should work internally with UTF-16 and translate up/down to/from UTF-8 (ASCII) only when dealing with the basic HTTP."
    could anyone clarify this for me.

    The first thing you need to do is clear up some fundamental misconceptions about character encodings. UTF-8 is not the same thing as "7-bit ASCII", and UTF-16 is not the same as "Unicode". Anyway, you're making this a lot more difficult than it needs to be. Just use UTF-8 to encode and decode all messages; it can handle all the characters from any language you're likely to run into.

  • Interesting! JDeveloper deploy to remote server uses HTTP POST

    The documentation clearly mentions that the bpelc ant task only deploys to local server using a file copy. I was wondering how JDeveloper is able to deploy to remote servers. Turns out is just does a HTTP POST of multipart/form-data to upload the BPEL suitcase jar file. Given below is the trace of the POST. Of course, it is all proprietary for now and is not documented. Maybe Oracle can wrap this as a custom ant task?
    --Nizam
    POST /integration/services/deploy/deployProcess.jsp HTTP/1.1
    Host: bpel.server.com:9700
    Connection: Keep-Alive, TE
    TE: trailers, deflate, gzip, compress
    User-Agent: RPT-HTTPClient/0.3-3
    BPELDomain: default
    BPELPassword: bpel
    Accept-Language: en
    Accept-Encoding: gzip, x-gzip, compress, x-compress
    Content-type: multipart/form-data;boundary=*****
    Content-length: 10690
    Content-Disposition: form-data; name="upload";BPELDomain="default"; filename="E:\work\MyBPELWS\HelloWorld\output\bpel_HelloWorld_1.0.jar"
    PK..
    ........3................META-INF/....PK..
    ........3...#............META-INF/MANIFEST.MFManifest-Version: 1.0
    Process-GUID: MD5{9d2c0a4b850da042548cc6bdf1c04d68}
    Created-By: 1.4.2_06 (Sun Microsystems Inc.)
    Process-Id: HelloWorld
    Timestamp: 1124360790893
    Process-Class: BPEL
    Implementation-Package: bpel.p0
    Revision-Tag: 1.0
    PK..
    ........3................BPEL-INF/PK..
    ........3.\.Z............bpel.xml<?xml version="1.0" encoding="UTF-8"?>
    <BPELSuitcase guid="MD5{9d2c0a4b850da042548cc6bdf1c04d68}" timestamp="1124360790893" revision="1.0">
    <BPELProcess process-impl="bpel.p0.BPEL_BIN" src="HelloWorld.bpel" id="HelloWorld">
    <partnerLinkBindings>
    <partnerLinkBinding name="client">
    <property name="wsdlLocation">HelloWorld.wsdl</property>
    </partnerLinkBinding>
    </partnerLinkBindings>
    </BPELProcess>
    </BPELSuitcase>
    PK..
    ........3[...5...5.......build.xml<?xml version="1.0" ?>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Run cxant on this file to build, package and deploy the
    HelloWorld BPEL process
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <project name="HelloWorld" default="main" basedir=".">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Name of the domain the generated BPEL suitcase will be deployed to
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <property name="deploy" value="default" />
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    What version number should be used to tag the generated BPEL archive?
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <property name="rev" value="1.0" />
    <target name="main">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    the bpelc task compiles and package BPEL processes into versioned BPEL
    archives (bpel_...jar). See the "Programming BPEL" guide for more
    information on the options of this task.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <bpelc input="${basedir}/bpel.xml" rev="${rev}" deploy="${deploy}" />
    </target>
    </project>PK..
    ........3,.JaZ...Z.......graphics.xml<?xml version = '1.0' encoding = 'UTF-8'?>
    <graphics>
    <partnerlink_locations>
    <partnerlink name="client" x="15" y="215" side="left"/>
    </partnerlink_locations>
    <diagram popupeditor="false" centerzoom="true" validateonload="true" confirmbeforedelete="true" SELECTED_PARTNERLINK_COLOR="0,0,153" SWIMLANE_BACKGROUND="255,255,225" SWIMLANE_DIVIDER_BACKGROUND="236,233,216" GRAPH_BACKGROUND="255,255,255" SELECTED_BORDER_BACKGROUND="204,255,204" CONNECTED_PARTNERLINK_COLOR="204,204,255" CONNECTABLE_PARTNERLINK_COLOR="0,0,255" UNCONNECTED_PARTNERLINK_COLOR="192,192,192"/>
    </graphics>
    PK..
    ........3O ..............HelloService.wsdl<definitions
    targetNamespace="http://tempuri.org/"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:s0="http://tempuri.org/"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    >
    <import namespace="http://tempuri.org/" location="http://localhost/HelloEnglish/Service1.asmx?WSDL"/>
    <plnk:partnerLinkType name="Service1Soap_PL">
    <plnk:role name="Service1Soap_Role">
    <plnk:portType name="s0:Service1Soap"/>
    </plnk:role>
    </plnk:partnerLinkType>
    </definitions>
    PK..
    ........3.....
    ......HelloWorld.bpel<!--
    // Oracle JDeveloper BPEL Designer
    // Created: Fri Aug 05 00:05:52 IST 2005
    // Author: nizam
    // Purpose: Synchronous BPEL Process
    -->
    <process name="HelloWorld" targetNamespace="http://xmlns.oracle.com/HelloWorld" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20" xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap" xmlns:bpelx="http://schemas.oracle.com/bpel/extension" xmlns:client="http://xmlns.oracle.com/HelloWorld" xmlns:ora="http://schemas.oracle.com/xpath/extension" xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"><!-- ================================================================= --><!-- PARTNERLINKS --><!-- List of services participating in this BPEL process --><!-- ================================================================= -->
    <partnerLinks><!--
    The 'client' role represents the requester of this service. It is
    used for callback. The location and correlation information associated
    with the client role are automatically set using WS-Addressing.
    -->
    <partnerLink name="client" partnerLinkType="client:HelloWorld" myRole="HelloWorldProvider"/>
    </partnerLinks><!-- ================================================================= --><!-- VARIABLES --><!-- List of messages and XML documents used within this BPEL process --><!-- ================================================================= -->
    <variables><!-- Reference to the message passed as input during initiation -->
    <variable name="inputVariable" messageType="client:HelloWorldRequestMessage"/><!--
    Reference to the message that will be returned to the requester
    -->
    <variable name="outputVariable" messageType="client:HelloWorldResponseMessage"/>
    </variables><!-- ================================================================= --><!-- ORCHESTRATION LOGIC --><!-- Set of activities coordinating the flow of messages across the --><!-- services integrated within this business process --><!-- ================================================================= -->
    <sequence name="main"><!-- Receive input from requestor.
    Note: This maps to operation defined in HelloWorld.wsdl
    -->
    <receive name="receiveInput" partnerLink="client" portType="client:HelloWorld" operation="process" variable="inputVariable" createInstance="yes"/><!-- Generate reply to synchronous request -->
    <assign name="Assign_1">
    <copy>
    <from expression="concat("v1.1: Hello ", bpws:getVariableData('inputVariable','payload','/client:HelloWorldProcessRequest/client:input'))"/>
    <to variable="outputVariable" part="payload" query="/client:HelloWorldProcessResponse/client:result"/>
    </copy>
    </assign>
    <reply name="replyOutput" partnerLink="client" portType="client:HelloWorld" operation="process" variable="outputVariable"/>
    </sequence>
    </process>PK..
    ........3.....
    ......HelloWorld.wsdl<?xml version="1.0" encoding="UTF-8"?>
    <definitions name="HelloWorld"
    targetNamespace="http://xmlns.oracle.com/HelloWorld"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:client="http://xmlns.oracle.com/HelloWorld"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
    .<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .TYPE DEFINITION - List of services participating in this BPEL process
    .The default output of the BPEL designer uses strings as input and
    .output to the BPEL Process. But you can define or import any XML
    .Schema type and us them as part of the message types.
    .~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    .<types>
    ..<schema attributeFormDefault="qualified"
    ...elementFormDefault="qualified"
    ...targetNamespace="http://xmlns.oracle.com/HelloWorld"
    ...xmlns="http://www.w3.org/2001/XMLSchema">
    ...<element name="HelloWorldProcessRequest">
    ....<complexType>
    .....<sequence>
    ......<element name="input" type="string"/>
    .....</sequence>
    ....</complexType>
    ...</element>
    ...<element name="HelloWorldProcessResponse">
    ....<complexType>
    .....<sequence>
    ......<element name="result" type="string"/>
    .....</sequence>
    ....</complexType>
    ...</element>
    ..</schema>
    .</types>
    .<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .MESSAGE TYPE DEFINITION - Definition of the message types used as
    .part of the port type defintions
    .~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    .<message name="HelloWorldRequestMessage">
    ..<part name="payload" element="client:HelloWorldProcessRequest"/>
    .</message>
    .<message name="HelloWorldResponseMessage">
    ..<part name="payload" element="client:HelloWorldProcessResponse"/>
    .</message>
    .<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .PORT TYPE DEFINITION - A port type groups a set of operations into
    .a logical service unit.
    .~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    .<!-- portType implemented by the HelloWorld BPEL process -->
    .<portType name="HelloWorld">
    ..<operation name="process">
    ...<input message="client:HelloWorldRequestMessage" />
    ...<output message="client:HelloWorldResponseMessage"/>
    ..</operation>
    .</portType>
    .<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    .PARTNER LINK TYPE DEFINITION
    .~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    .<plnk:partnerLinkType name="HelloWorld">
    ..<plnk:role name="HelloWorldProvider">
    ...<plnk:portType name="client:HelloWorld"/>
    ..</plnk:role>
    .</plnk:partnerLinkType>
    </definitions>
    PK..
    ........3..............................META-INF/....PK..
    ........3...#......................+...META-INF/MANIFEST.MFPK..
    ........3..........................T...BPEL-INF/PK..
    ........3.\.Z......................{...bpel.xmlPK..
    ........3[...5...5.................i...build.xmlPK..
    ........3,.JaZ...Z.....................graphics.xmlPK..
    ........3O ........................I...HelloService.wsdlPK..
    ........3.....
    ....................HelloWorld.bpelPK..
    ........3.....
    ....................HelloWorld.wsdlPK...............&....
    *****

    If anyone is interested, I've created a custom ant taks to leverage this HTTP post for deploying the BPEL suitcase jar to remote servers. We didn't want to use FTP, as we'd have to change permissions on the files.
    To do this, I've leveraged the oracle.tip.pc.infra.deploy.DeployRemote class. You just have to pass it the path the the jar, server url (http://host:port/deploy/deployProcess.jsp), domain, and password.
    This seems to work fine for us.
    -Mike

  • HTTP POST from SAP to an external server

    Experts.
    I have a XML file encased in MIME and SOAP format. Essentially it's a .xml file.
    I need to post this to an external server (have the IP address and logon credentials) using http post functionality.
    Can this be accomplished in SAP using ABAP, Function module? I need to post the entire file.
    If anyone has done this, can you please post the steps needed?
    Thank you so much.
    Raj

    Hi Raj,
    a good starting point for you would be the SAP Help. [Here|http://help.sap.com/saphelp_nw04/helpdata/en/1f/93163f9959a808e10000000a114084/frameset.htm] is some sample code of how to make a HTTP call from ABAP.
    Cheers
    Graham Robbo
    Edited by: Graham Robinson on Oct 28, 2009 2:44 PM

  • HTTP post data from the Oracle database to another web server

    Hi ,
    I have searched the forum and the net on this. And yes I have followed the links
    http://awads.net/wp/2005/11/30/http-post-from-inside-oracle/
    http://manib.wordpress.com/2007/12/03/utl_http/
    and Eddie Awad's Blog on the same topic. I was successful in calling the servlet but I keep getting errors.
    I am using Oracle 10 g and My servlet is part of a ADF BC JSF application.
    My requirement is that I have blob table in another DB and our Oracle Forms application based on another DB has to view the documents . Viewing blobs over dblinks is not possible. So Option 1 is to call a procedure passing the doc_blob_id parameter and call the web server passing the parameters.
    The errors I am getting is:
    First the parameters passed returned null. and
    2. Since my servlet directly downloads the document on the response outputStream, gives this error.
    'com.evermind.server.http.HttpIOException: An established connection was aborted by the software in your host machine'
    Any help please. I am running out of time.
    Thanks

    user10264958 wrote:
    My requirement is that I have blob table in another DB and our Oracle Forms application based on another DB has to view the documents . Viewing blobs over dblinks is not possible. Incorrect. You can use remote LOBs via a database link. However, you cannot use a local LOB variable (called a LOB <i>locator</i>) to reference a remote LOB. A LOB variable/locator is a pointer - that pointer cannot reference a LOB that resides on a remote server. So simply do not use a LOB variable locally as it cannot reference a remote LOB.
    Instead provide a remote interface that can deal with that LOB remotely, dereference that pointer on the remote system, and pass the actual contents being pointed at, to the local database.
    The following demonstrates the basic approach. How one designs and implements the actual remote interface, need to be decided taking existing requirements into consideration. I simply used a very basic wrapper function.
    SQL> --// we create a database link to our own database as it is easier for demonstration purposes
    SQL> create database link remote_db connect to scott identified by tiger using
      2  '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SID=dev)(SERVER=dedicated)))';
    Database link created.
    SQL> --// we create a table with a CLOB that we will access via this db link
    SQL> create table xml_files( file_id number, xml_file clob );
    Table created.
    SQL> insert into xml_files values( 1, '<root><text>What do you want, universe?</text></root>' );
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> --// a local select against the table works fine
    SQL> select x.*, length(xml_file) as "SIZE" from xml_files x;
       FILE_ID XML_FILE                                                                                SIZE
             1 <root><text>What do you want, universe?</text></root>                                    53
    SQL> --// a remote select against the table fails as we cannot use remote pointers/locators
    SQL> select * from xml_files@remote_db x;
    ERROR:
    ORA-22992: cannot use LOB locators selected from remote tables
    no rows selected
    SQL> //-- we create an interface on the remote db to deal with the pointer for us
    SQL> create or replace function ReturnXMLFile( fileID number, offset integer, amount integer ) return varchar2 is
      2          buffer  varchar2(32767);
      3  begin
      4          select
      5                  DBMS_LOB.SubStr( x.xml_file, amount, offset )
      6                          into
      7                  buffer
      8          from    xml_files x
      9          where   x.file_id = fileID;
    10 
    11          return( buffer );
    12  end;
    13  /
    Function created.
    SQL> --// we now can access the contents of the remote LOB (only in 4000 char chunks using this example)
    SQL> select
      2          file_id,
      3          ReturnXMLFile@remote_db( x.file_id, 1, 4000 ) as "Chunk_1"
      4  from       xml_files@remote_db x;
       FILE_ID Chunk_1
             1 <root><text>What do you want, universe?</text></root>
    SQL> --// we can also copy the entire remote LOB across into a local LOB and use the local one
    SQL> declare
      2          c               clob;
      3          pos             integer;
      4          iterations      integer;
      5          buf             varchar2(20);   --// small buffer for demonstration purposes only
      6  begin
      7          DBMS_LOB.CreateTemporary( c, true );
      8 
      9          pos := 1;
    10          iterations := 1;
    11          loop
    12                  buf := ReturnXMLFile@remote_db( 1, pos, 20 );
    13                  exit when buf is null;
    14                  pos := pos + length(buf);
    15                  iterations := iterations + 1;
    16                  DBMS_LOB.WriteAppend( c, length(buf), buf );
    17          end loop;
    18 
    19          DBMS_OUTPUT.put_line( 'Copied '||length(c)||' byte(s) from remote LOB' );
    20          DBMS_OUTPUT.put_line( 'Read Iterations: '||iterations );
    21          DBMS_OUTPUT.put_line( 'LOB contents (1-4000):'|| DBMS_LOB.SubStr(c,4000,1) );
    22 
    23          DBMS_LOB.FreeTemporary( c );
    24  end;
    25  /
    Copied 53 byte(s) from remote LOB
    Read Iterations: 4
    LOB contents (1-4000):<root><text>What do you want, universe?</text></root>
    PL/SQL procedure successfully completed.
    SQL> The concern is the size of the LOB. It does not always make sense to access the entire LOB in the database. What if that LOB is a 100GB in size? Irrespective of how you do it, selecting that LOB column from that table will require a 100GB of data to be transferred from the database to your client.
    So you need to decide WHY you want the LOB on the client (which will be the local PL/SQL code in case of dealing with a LOB on a remote database)? Do you need the entire LOB? Do you need a specific piece from it? Do you need the database to first parse that LOB into a more structured data struct and then pass specific information from that struct to you? Etc.
    The bottom line however is that you can use remote LOBs. Simply that you cannot use a local pointer variable to point and dereference a remote LOB.

  • Error Unexpected end of file from server with HTTP POST

    Hi everyone,
    I'm coding a simple client to download some information from a local machine in my LAN.
    I have to do this with an http post request.
    When i try to parse the http response the program catch an exception, this one:
    java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(...)
    the parameter is a JSON request, and of course the response is a JSON formatted.
    i put the http request code:
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    public class HttpDownloaderThread  extends Thread{
         private String url;
            private String param;
         private HttpDownloadListener listener;
         private HttpURLConnection connection=null;
         private InputStream is;
            private OutputStreamWriter wr;
         public HttpDownloaderThread(String _url,String param, HttpDownloadListener _listener){
              url = _url;
              listener = _listener;
                    this.param=param;
         public void run(){
              try{
                   connection=(HttpURLConnection)new URL(url).openConnection();
                            connection.setRequestMethod("POST");
                            connection.setReadTimeout(5000);
                            connection.setRequestProperty("Content-Type", "application/jsonrequest");
                            connection.setDoOutput(true);
                            wr = new OutputStreamWriter(connection.getOutputStream());
                            wr.write(param, 0, param.length());
                            wr.flush();
                            int responseCode=0;
                   System.out.println();
                            try{
                             responseCode= connection.getResponseCode();
                            }catch(Exception e){
                                e.printStackTrace();
                   if (responseCode == HttpURLConnection.HTTP_OK){
                        is = connection.getInputStream();
                                     BufferedReader rd = new BufferedReader(new InputStreamReader(is));
                                    String line;
                                    while ((line = rd.readLine()) != null) {
                                        System.out.println(line);
                        closeHttpConnection();
                        listener.resourceDownloaded(url, null);
                                else{
                                closeHttpConnection();
                                listener.downloadFailed(url, new Exception("Http error: " + Integer.toString(responseCode)));
              }catch(Exception e){
                   e.printStackTrace();
                   listener.downloadFailed(url, e);
              }finally{
         public void closeHttpConnection(){
              if (is != null){
                   try{
                        is.close();
                                    wr.close();
                   }catch (Exception e){
                   }finally{
                        is = null;
                                    wr=null;
              if (connection != null){
                   try{
                        connection.disconnect();
                   }catch (Exception e){
                   }finally{
                        connection = null;
    }there's someone who know's why??
    Thanks to everyone :)
    Thomas.

    jole_star wrote:
    this problem also happen to me,.So since you provided actually no information about your problem you are going to get exactly the same response.
    Please don't hijack old threads. Start your own and provide much much much more information.
    I shall lock this thread.

  • Maximum HTTP posts to "Plain HTTP" adapter

    Hello,
    I am working on some load testing on a development box that we have for a simple synchronous HTTP<>XI<>RFC interface.  I have tested up to around 45 simultaneous users and the XI box starts to reply with 500 Internal Server Errors to the HTTP posts.  Up until that point it processes the messages fine and returns the correct response and 200 OK codes.
    Could someone direct me to the configuration on the XI box for the maximum number of HTTP requests to process or an explanation of why the server starts to drop POSTs?  Thanks for your help!
    Regards,
    Anthony Cesaro

    Hi,
    have a look at those two parameters from the XI profile:
    icm/HTTP/max_request_size_KB
    Maximum size of HTTP request accepted by ICM
    and
    connection timeout:
    icm/server_port_<xx>
    http://help.sap.com/saphelp_erp2004/helpdata/en/25/7e153a1a5b4c2de10000000a114084/content.htm
    maybe these will help
    Regards,
    michal

  • XML over HTTP between client and server

    We are trying to pass XML between a client and servlet over HTTP.
              We used the code from the StockClient/StockServlet examples as a
              starting point but cannot get it to work. Basically we
              have a simple command line java client that is trying to access
              a VERY simple servlet. When the client tries to write data into
              the output stream associated with the connection I get:
              "Connection rejected: 'Login timed out after: '15000' ms....."
              I have read several postings that instruct me to raise the
              timeout limit, but as you can see, I surely don't need 15 seconds
              to write this data out! Is there something special I need to do?
              Does this have anything to do with known issue #10065
              (http://www.weblogic.com/docs51/release_notes/rn_knownprob51.html)
              I have followed all of the instructions in the example code
              (http://www.weblogic.com/docs51/classdocs/xml.html)...
              Any assistance is appreciated...
              here is the client code:
              import java.io.*;
              import java.net.*;
              public class TestClient
              public static void main(String aa[])
              URL url = null;
              HttpURLConnection urlc = null;
              PrintWriter pw = null;
              file://Commented lines indicate other things I have tried
              try
              url = new URL("http://localhost:7001/ParserServlet");
              file://urlc = url.openConnection();
              urlc = (HttpURLConnection)url.openConnection();
              file://urlc.setRequestProperty("Content-Type", "text/xml");
              urlc.setDoOutput(true);
              urlc.setDoInput(true);
              file://urlc.connect();
              pw = new PrintWriter(new OutputStreamWriter
              (urlc.getOutputStream()), true);
              pw.println("<?xml version='1.0'?><test>testing123</test>");
              pw.flush();
              file://urlc.disconnect();
              } catch(IOException ex) {
              System.out.println(ex.getMessage());
              Here is the servlet code:
              import javax.servlet.*;
              import javax.servlet.http.*;
              import java.io.*;
              import java.net.*;
              public class TestServlet extends HttpServlet
              public synchronized void init(ServletConfig config) throws
              ServletException
              super.init(config);
              System.out.println("Inside init()");
              public final void doPost(HttpServletRequest request, HttpServletResponse
              response)
              throws ServletException, IOException
              System.out.println("Inside doPost()");
              protected void doGet(HttpServletRequest req,
              HttpServletResponse resp)
              throws ServletException,
              java.io.IOException
              System.out.println("Inside doGet()");
              

              Jon,
              One thing is missed in your client code. When you use HTTP POST to send request,
              you have two ways to tell the Web server when to stop reading from your input and
              to start process your input: the first one is using "Content-Lenght" header property
              to specify how many bytes you want to send to your servlet, the seocnd is use "Transfer-Code:
              Chunked" and is much more complicated. I didn't see you pass "Content-Length" in
              your client code, in which case, the Web server (Weblogic) cannot know the end of
              your request data and could keep waiting for last byte to come out or waiting for
              the socket time out (that is what you get).
              Since you use servlet, not JSP, I would recommend to code in this way (it works fine
              for me, no guranttee for your situation):
              Client code: Use a big temprary string, or StringBuffer, or StringWriter to store
              all the request data (your xml file content) before you send out the request. After
              you finish to form your XML string, calculate the number of bytes (should equal to
              the length of the string) and add the request header as
              urlc.setRequestProperty("Content-Length", bytes_length);
              I will not suggest you using PrintWriter. Think use BufferedOutputStream constructed
              from URLConnection and write the bytes (use String.getBytes()) to the servlet and
              then flush.
              Servlet code: in the doPost() of your servlet, try to find the request data length
              by calling request.getContentLength(), then open the InputStream (think to use BufferedInputStream
              for performance). Read the contents from the InputStream byte by byte and counter
              the number of bytes. Once you get the number of bytes as specified via request Content-Length,
              break your reading loop and start whatever you want.
              Hope it helps.
              "Jon Clark" <[email protected]> wrote:
              >We are trying to pass XML between a client and servlet over HTTP.
              >We used the code from the StockClient/StockServlet examples as a
              >starting point but cannot get it to work. Basically we
              >have a simple command line java client that is trying to access
              >a VERY simple servlet. When the client tries to write data into
              >the output stream associated with the connection I get:
              >"Connection rejected: 'Login timed out after: '15000' ms....."
              >I have read several postings that instruct me to raise the
              >timeout limit, but as you can see, I surely don't need 15 seconds
              >to write this data out! Is there something special I need to do?
              >Does this have anything to do with known issue #10065
              >(http://www.weblogic.com/docs51/release_notes/rn_knownprob51.html)
              >I have followed all of the instructions in the example code
              >(http://www.weblogic.com/docs51/classdocs/xml.html)...
              >
              >Any assistance is appreciated...
              >
              >here is the client code:
              >import java.io.*;
              >import java.net.*;
              >
              >public class TestClient
              >{
              > public static void main(String aa[])
              > {
              > URL url = null;
              > HttpURLConnection urlc = null;
              > PrintWriter pw = null;
              >
              > file://Commented lines indicate other things I have tried
              > try
              > {
              > url = new URL("http://localhost:7001/ParserServlet");
              > file://urlc = url.openConnection();
              > urlc = (HttpURLConnection)url.openConnection();
              > file://urlc.setRequestProperty("Content-Type", "text/xml");
              > urlc.setDoOutput(true);
              > urlc.setDoInput(true);
              > file://urlc.connect();
              > pw = new PrintWriter(new OutputStreamWriter
              > (urlc.getOutputStream()), true);
              > pw.println("<?xml version='1.0'?><test>testing123</test>");
              > pw.flush();
              > file://urlc.disconnect();
              > } catch(IOException ex) {
              > System.out.println(ex.getMessage());
              > }
              > }
              >}
              >
              >
              >
              >Here is the servlet code:
              >
              >import javax.servlet.*;
              >import javax.servlet.http.*;
              >import java.io.*;
              >import java.net.*;
              >
              >public class TestServlet extends HttpServlet
              >{
              > public synchronized void init(ServletConfig config) throws
              >ServletException
              >
              >
              > super.init(config);
              > System.out.println("Inside init()");
              > }
              >
              > public final void doPost(HttpServletRequest request, HttpServletResponse
              >response)
              > throws ServletException, IOException
              > {
              > System.out.println("Inside doPost()");
              > }
              >
              > protected void doGet(HttpServletRequest req,
              > HttpServletResponse resp)
              > throws ServletException,
              > java.io.IOException
              > {
              > System.out.println("Inside doGet()");
              > }
              >}
              >
              >
              >
              >
              

  • Simple HTTP Post Handler - Best Practice?

    I would like to create a fairly simple ASP.Net application that takes an XML record from an HTTP post request, submits it to a process that invokes a command line app that parses the XML file, takes the parsed XML file (as XML), and returns the result. 
    For now the process can be synchronous as the transform has to complete and there are no parallel activities that need to be performed.
    I'm not sure that writing an HTTP Handler is the way to go, but maybe I'm mistaken.  Plus there are no examples of doing that in Visual Studio 2013 using IIS 8.0 or 8.5 and I don't really understand the value of applying a file extension or processing
    an HTTP post to initiate the request, perhaps using a dedicated port.  I already have a class library for handling the process request.
    I'm also a little confused about reading the post request - it seems I can just do it during the page load and that I should be able to extract the first request form field - that of course means using a webform to process the request which seems to be the
    most straight-forward way to do this. So I'm looking for the best practice for fielding this kind of request.  My target server is Windows 2012, but I'm developing with VS 2013 and C# on Windows 7 using IIS Express and configuring IIS is confusing. 
    Overall it is a fairly simple app, but there are so many rich new features in VS 2013 (most of my work has been in VS 2005).  I also want to build a test app and am looking for the best way to do so, although I think I can build a simple client app
    to do that.  The business requirements will be to issue the post request from a MarkLogic xquery request which will take care of any JSON wrappers and balance between multiple Windows servers to handle the load.
    Thanks for any help with this!
    ~Tim

    Hi Tim,
    Thank you for posting in the MSDN forum.
    Actually this forum is to discuss the VS IDE, if this issue is related to web development, you could ask this question in the ASP.NET forum:
    http://forums.asp.net. If then, you could get an answer more quickly and professional. Thanks for your cooperation.
    Best Regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Sending a dom via http Post

    Hi,
    for some reason unknown to me whenever I try to send a dom via http Post I get the following error:
    org.xml.sax.SAXParseException: The root element is required in a well-formed document.
    This is the source code:
    package com.cyberrein.payunion.transaction;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    //xml lib
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    //weblogic xml lib
    import weblogic.apache.xerces.dom.DocumentImpl;
    import weblogic.apache.xml.serialize.DOMSerializer;
    import weblogic.apache.xml.serialize.XMLSerializer;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    public class Xmltest extends HttpServlet {
    //Initialize global variables
    public void init(ServletConfig config) throws ServletException {
    super.init(config);
    //Process the HTTP Request
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Retrieve transaction data from HttpServletRequest.
    try {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setValidating(false);
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document docIn = db.parse(request.getInputStream());
    String code = "XX";
    String tranID = "000000";
    String message = "This Card Is Invalid. Transaction Discontinued";
    //Output dom
    Document docOut = new DocumentImpl();
    Element e = (Element)docOut.createElement("TransactionResponseData");
    e.setAttribute("Code", code);
    e.setAttribute("TransactionID", tranID);
    e.setAttribute("Message", message);
    docOut.appendChild(e);
    FileOutputStream fos;
    fos = new FileOutputStream("/victory");
    DOMSerializer serX = new XMLSerializer(fos,null);
    serX.serialize(docIn);
    DOMSerializer ser = new XMLSerializer(response.getOutputStream(), null);
         ser.serialize(docOut);
         } catch (Throwable e) {e.printStackTrace();}
    //Get Servlet information
    public String getServletInfo() {
    return "com.cyberrein.payunion.transaction.Xmltest Information";
    package com.cyberrein.payunion.transaction;
    import org.w3c.dom.*;
    import org.apache.xerces.*;
    import org.apache.xerces.dom.*;
    import org.apache.xerces.parsers.*;
    import org.apache.xml.serialize.*;
    import org.xml.sax.*;
    import java.net.*;
    import java.io.*;
    public class CardClient {
    private String sURI;
    public BufferedReader in
    = new BufferedReader(new InputStreamReader(System.in));
    public CardClient(String serverURI) {
    sURI = serverURI;
    public Document test(){
    Document docIn = null;
    try
    //XML Document impl
         docIn = new DocumentImpl();
    //Create the root element
         Element t = docIn.createElement("TransactionData");
    Element k = docIn.createElement("Payunion.com");
    k.appendChild( docIn.createTextNode("North American server") );
    t.appendChild(k);
    //Set attributes
    t.setAttribute("cardnumber", "4444444444444444");
    t.setAttribute("amount", "3000.67");
    t.setAttribute("name", "tolu agbeja");
    t.setAttribute("cvv2", "001");
    t.setAttribute("pu_number", "ejs:pupk:23456");
    t.setAttribute("expirydate", "0903");
    t.setAttribute("address", "100 peachtree industrial");
    t.setAttribute("zipcode", "30329");
    docIn.appendChild(t);
    catch (Throwable te)
    te.printStackTrace();
    return docIn;
    public Document sendRequest(Document doc) {
         Document docOut = null;
         try {
         URL url = new URL("http://" + sURI);
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
         conn.setDoInput(true);
         conn.setDoOutput(true);
         OutputStream out = conn.getOutputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    XMLSerializer ser = new XMLSerializer( out, new OutputFormat("xml", "UTF-8", false) );
    ser.serialize(doc);
    while(!br.ready()){}
         DOMParser parser = new DOMParser();
         parser.parse(new InputSource(br));
         docOut = parser.getDocument();
    catch (Throwable et)
         et.printStackTrace();
         return docOut;
    public static void main(String []args)
    CardClient c = new CardClient("cyber1:7001/xmltest");
    try
    Document doc = c.sendRequest(c.test());
    Element responseMessage = (Element)doc.getElementsByTagName("TransactionResponseData").item(0);
    String message = responseMessage.getAttribute("Message");
    String tranID = responseMessage.getAttribute("TransactionID");
    String code = responseMessage.getAttribute("Code");
    System.out.println(message);
    System.out.println("");
    System.out.println("The Response Code Is: "+code);
    System.out.println("");
    System.out.println("The Transaction ID Is: "+tranID);
    catch(Exception ex)
    ex.printStackTrace();
    All comments will be appreciated!!

    Hi, thanks for your reply i knew the FileUplaod was the way forward.
    I read topics advising to use the FileUpload and tried the following but it did not seem to work ( i get an HTTP Internal Server error when i try that):
    try
    DiskFileUpload upload = new DiskFileUpload();
    boolean isMultipart = FileUpload.isMultipartContent(request);
    if( isMultipart )
    List items = upload.parseRequest( request );
    Iterator iter = items.iterator();
    while( iter.hasNext() )
    FileItem fileItem = ( FileItem ) iter.next();
    File uploadedFile = new File("myreceivedfile.zip");
    fileItem.write( uploadedFile );
    }catch (Exception e)
    System.out.println("RECEIVER: " + e.getMessage());
    Also DiskFileUpload,isMultipartContent and parseRequest have a line going through the middle (horizontal middle).
    Edited by: Overmars08 on Jun 23, 2009 5:35 AM
    Edited by: Overmars08 on Jun 23, 2009 5:36 AM

  • Retrieve data/files fro HTTP POST request in On-Demand process

    Hello,
    I would like to integrate https://github.com/blueimp/jQuery-File-Upload to my APEX 4.2 application inside XE11g. I would like to use this kind of jQuery component, multiple file upload, use Drag & Drop, image resize, size limit, filter extensions etc...
    This jQuery component and also others javascript uploaders sends data files to some defined URL. Developer need to build some servlet, php script or something on server side that will read files from HTTP request and stores it somewhere.
    Do you know how to do it in APEX? How can I read data from HTTP POST request in PL/SQL? Now I can only call my On-Demand application process from javascript, but I am not able to read any data from HTTP POST in it.
    Can I do it in APEX, or using MOD_PLSQL?
    I would like to implement this:
    1) some javascript uploader will call some URL of my application and sends HTTP POST with data files
    2) I will read data files from HTTP POST and store them into database
    3) I will create some HTTP response for javascript uploader
    Thank you for some tips

    I know about that existing plugin " Item Plugin - Multiple File Upload"
    But I doesn't work in IE and has only basic features. Licence for commercial use is also needed. I would like to use some existing jQuery plugin. There are many of these plugins with nice features. And only one problem is that I need to create some server side process/servlet/script.. that can recieve HTTP request, get files from it and stores them into DB.

Maybe you are looking for

  • How do i find the model number on my macbook?

    how do i find the model number on my macbook?

  • Video in photo stream

    Videos in my photo streams isnt playing for others who also have iOS7, they doesnt even play on my own iPad. Others who share their videos with me in steams isnt playing either. Same thing happen with them all, you can click the play icon, and then i

  • Firefox issue

    I"ve been using firefox for a while now as my default browser and have been quite pleased but have one question. Each time I open an attachment (for example some type of pdf file) a copy of the file remains on my desktop- so I often have many, many f

  • Which table cotain cheque numbers

    I am using pay_pre_payments_v2 to get the cheque number. But when I query this table against Assignment_action_id. It gives me multiple records against each cheque number with different effective dates.

  • Keyboard Arrow_Keys not working on Imac

    My IMAC's keyboard ARROW KEYS FAIL TO WORK except for the "up" key. This problem started as soon as I brought my IMAC home from an Apple Store which replaced the screen. Please: How do I fix this?