Non-blocking J2EE calls

We wish to connect fat clients (in our case Powerbuilder) to a J2EE environment (Weblogic). We also need to make some of the calls from the fat client non-blocking (asynchronous). With many clients, JMS was rejected as a mechanism.
Our first solution, which works as a prototype, was to package a Java bean as an OLE object and deploy it to the client. This bean could make the calls non-blocking. However there are registry issues (the packaging implies a pre-defined directory structure), we need a JRE on every client and 15Mb of weblogic jars (aaargh), so it only really works as a prototype.
The next (current) solution is a C dll that can be called from Powerbuilder and uses a socket to talk to a Java J2EE Gateway on the server. This Gateway makes the system non-blocking and calls the EJBs. This is clearly easier in terms of configuring the client.
Ideally we would like to drop the Gateway by finding a non-blocking way to get into J2EE from the C dll but the only methods we have thought of:
- simulating an HTTP servlet call
- SOAP
are synchronous (or appear to be, my knowledge of SOAP is limited).
Has anyone come across other ways of getting non-blocking communications with J2EE?

CORBA, this is what it was designed to do, but it is not not a light weight solution.

Similar Messages

  • Using non blocking connect() call for SCTP sockets in Solaris10

    Hi,
    I have a problem with non blocking connect call on SCTP socket.
    I am using the sctp stack support in Solaris10.
    When the connect is successful, I can get the pollout event on the socket.
    But there is no event observed when the peer does not exist. In other words, I could not get the pollout event on connection failure. This logic works fine with TCP sockets on both Solaris and Suse10.
    I am working with SCTP one-to-one style sockets.
    Is there any way to handle this issue?
    Do I need to load any patch to resolve this issue?
    It will be great if I get a solution in this regard.
    Thanks in advance.
    Best Regards,
    Bipin.

    There are at least two problems here.
    A. In the receiver you should test for -1 from the read() immediately, rather than continue with the loop and try to write -1 bytes to the file.
    B. In the sender you are ignoring the return value of client.write(), which can be anything from 0 to the buffer length. If you get 0 you should wait for another OP_WRITE to trigger; if you get a 'short write' you need to retry it until you've got nothing left to write from the current buffer, before you read any more data. This is where the data is vanishing.

  • ORA-03118 two-task error while doing a non blocking OCI call

    Hi,
    I have an application that runs on Linux and uses OCI API (version 8.1.6).
    If I do the following in non blocking mode after polling about
    70 times I get the error:
    ORA-03118: two-task coroutine has invalid state
    do {
    call_cnt++;
    rtc = OCIStmtFetch(stmtptr->stmt, oracle_err, 1, OCI_FETCH_NEXT,
    OCI_DEFAULT);
    } while (rtc == OCI_STILL_EXECUTING);
    This doesn't happen all the time but it happens most often on big selects.
    Does anyone have any idea what is happening here?
    I have searched for related information but have come up dry. If anyone
    knows anything or maybe a better place to ask this question please tell me.
    Thanks,
    Barry
    null

    Ask your basis guys to increase the table space...
    check this thread...
    [Error : DBIF_RSQL_SQL_ERROR;
    --- Thanks...

  • SQL Developer blocking vs non-blocking

    Hi,
    Is there a way in SQL Developer 3.0 to have a non-blocking SQL call? In Oracle Forms we can choose between blocking and non-blocking SQL Net connections to the database. Does SQL Developer have the same capability? If so where exactly are those options hidden in the preferences menus?
    Annoyed,
    ScottK
    Edited by: ScottK on Jun 1, 2011 11:20 AM

    Hi ScottK,
    SQLDeveloper locks access to individual connections when they are in use, if you want to simulate
    some aspects of non blocking behaviour you can use other connections.
    The following features might help:
    Use a different connection name back to the same schema in your database - it will be treated as an independent connection and 'blocking' on this connection will not affect your other connections.
    This can be achieved temporarily in the worksheet by:
    ctrl shift n
    which creates a worksheet with new connection independent of your existing worksheet connection
    though connected to the same schema and database.
    -Turloch
    SQLDeveloper team

  • Persistant non-blocking operation problem

    When using asynchronous database calls with non-blocking methods, I am getting a persistant error on the CreateSQL method call - the error is "OIP-04153: Non-Blocking operation in progress". This is raised even though the database connection has been closed and restarted and no non-blocking operations called. The methods used are similar to the following example code:
    Dim OraDatabase as OraDatabase
    Dim OraStmt as OraSQLStmt
    Dim stat as long
    Dim OraSess as OraSession
    Set OraSess = CreateObject("OracleInProcServer.XOraSession")
    Set OraDatabase =OraSess.OpenDatabase("ExampleDb", "scott/tiger", 0)
    'execute the select statement with NONBLOCKING mode on
    set OraStmt = OraDatabase.CreateSQL ("update emp set sal = sal + 1000", ORASQL_NONBLK)
    'Check if the call has completed
    stat = OraStmt.NonBlockingState
    if stat = ORASQL_STILL_EXECUTING
    MsgBox "Cancelling the asynchronous operation that is underway"
         OraStmt.Cancel
    End if
    I cannot cancel the operation using OraStmt.Cancel because OraStmt Is Nothing!

    Actually, that is not correct. All of the 48 port Gig-E line cards for the 6500 are oversubscribed; it does vary by the degree of oversubscription.
    In a 6506 or a 6509 (with a Sup720) you have (2) 20 Gbps connections (per slot) to the fabric. With a WS-X6748-GE-TX you have a potential for 48 (Full Duplex) Gbps of traffic, but only 2 connections to the fabric. This yields an oversubscription rate of 1.2:1 (or 48:40) assuming a worst case scenario.
    It should be noted that the 24 port 67xx cards are still oversubscribed as well, because they only have one connection to the fabric. There is a potential for 24 Gbps of traffic and only (1) 20 Gbps fabric connection, so it has an identical oversubscription rate.
    By using only 24 of the 48 possible ports, depending on which ones you choose, you should be OK. But I do not know which ports use which fabric connection on the backplane, so I can't assist you in picking them.
    It should be noted that in most environments it is unlikely every port will be a 100% utilized so the risk of dropping packets because of oversubscription is low.

  • Non blocking stored proc call

    HI
    I have written a c application using OCI which can call stored proc. but that is using blocking call. Is it possible to call stored proc in non blocking mode? So that I can receive output in call back function. Actually stored proc take much time to execute can I associate some Subscription callback-function with my stored proc call. Any idea?
    Thanks
    Kamran

    If you want to do non-blocking calls in OCI, you just need to set the server handle (svrhp below) attribute:
    sb2 polling=1;
    OCIAttrSet((dvoid *)svrhp,
    (ub4)OCI_HTYPE_SERVER,
    (dvoid *)&polling,
    (ub4)0,
    (ub4)OCI_ATTR_NONBLOCKING_MODE,
    (OCIError *) errhp);
    And then you call you OCIExecute() as you would in blocking mode. The difference is that instead of blocking until the call is done on the server, it always returns immediately. So instead of calling it just once per statement and checking the return code, you must keep calling OCIExecute() until it does not equal OCI_STILL_EXECUTING. When the proc is done, the final call to OCIExecute() will then be OCI_SUCCESS, OCI_ERROR, whatever happened.

  • Non-Blocking call to read the Keyboard

    does anyone know how to make a JAVA program make a non-blocking call to read the keyboard? eg. write a program which generates prime number until a keyboard key is pressed.

    if you use a gui you can use keyListener
    Would work only if your gui elements have focus right now.

  • Application Builder: Can you create non-blocking, return-immediately functions in a dll?

    I need to include a procedure in a dll that is non-blocking, i.e. it should return immediately after the procedure has been called, and not return after its processes are completed.
    The procedure is a LabView 7.0 VI, and the dll is being created using the Application Builder. Currently the procedure completes its desired task and then returns, but I would like the function to return immediately. Thanks for your help!

    Rischaard,
    I don't know if that will work in a dll, however as an idea:
    use the vi-server functions:
    Your dll-procedure opens a OwnTreat.vi(wich will do the work) with vi-server, and run it without waiting for completion.
    First thing OwnTreat.vi should do is opening (with vi-server) a reference to itself (So your caller dll can close without stopping the OwnTreat.vi)
    Then OwnTreat.vi con do what YOU want. When finished close the self-reference
    Maybe you need a short wait or a feedback to make sure that OwnTreat has opened his own reverence before your dll stops.
    Greetings from Germany
    Henrik
    LV since v3.1
    “ground” is a convenient fantasy
    '˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'

  • Using OCIBindDynamic with non-blocking connections

    I need to use an OCI array interface for execute statements more than once per one request to server.
    When I have called stored procedure or function in the non-blocking connection context using OCIBindDynamic for parameter binding, application have been crashed at random time.
    I don't have any problems using default (blocking) mode.
    Environment:
    Oracle 8.1.7 release 3 for Windows
    MS Visual C++ 6.0 compiler
    Could anybody help me ?

    It's always possible in any read that the number of bytes read is less than the number of bytes requested. You need to keep reading until you have got everything you expected, and cope with every possible error condition on each iteration.
    EJP

  • NIO: Strange problem when using ByteBuffer with non-blocking SocketChannel

    Hi,
    I have a server that uses multiplexed, non-blocking I/O with java.nio. When a client connects, the server waits for the message: <system cmd="knock"/>, returns a message and disconnects the client. The clients are shortly serviced in less than a second.
    But the server newer receive anything from about 20% of the clients - even though it is sent. Or with other words: it is received and the data is contained in the ByteBuffer - SocketChannel.read(ByteBuffer) - but a call to ByteBuffer.remaing() returns 0 !!
    ByteBuffer receiveBuf = ByteBuffer.allocate(65536);
    receiveBuf.clear(); // the code is elsewhere used for longer living clients
    int readBytes = channel.read(receiveBuf);
    receiveBuf.flip();
    StringBuffer sb = new StringBuffer();
    System.out.println(" * Remaining: "+receiveBuf.remaining()); // writes: ' * Remaining: 0'
    System.out.println(" * Received: "+new String(receiveBuf.array())); // writes: ' * Received: <system cmd="knock"/>'
    while(receiveBuf.remaining() >= 2) {
      byte b = receiveBuf.get();
      sb.append((char)b);
    System.out.println(" * sb content: "+sb.toString()); // writes: ' * sb content: 'The ByteBuffer clearly receives the correct data, but the ByteBuffer.remaining() returns 0 and therefore the StringBuffer will never have any content.
    The problem seems to occur randomly and for about 20% of the clients (simulated from the same computer and therefore has the same bandwidth and so on).
    Anyone knows what is going on, and how to solve the problem !?

    It's always possible in any read that the number of bytes read is less than the number of bytes requested. You need to keep reading until you have got everything you expected, and cope with every possible error condition on each iteration.
    EJP

  • Screen becomes non-responsive during calls

    Hello:
    I am having an occasional, but seemingly becoming more frequent, problem in which the screen becomes non-functional during calls. My immediate impression is of removing the phone from my ear to end a call and the screen not lighting up. Eventually, after I played with the buttons (which may or may not have really helped) the phone lit up. This has also happened when the phone was ringing, making it impossible to take the call.
    I am using the most current firmware, but believe the problem began with an earlier version. It just seems more frequent. I cannot reproduce the problem on demand.
    Ideas? Solutions?
    David

    The proximity sensor, which is what tells the phone to turn off the touch screen when the phone is against your face to prevent "cheek dialing", is located just above the ear speaker hole. Do you have a case or anything else on the phone that could possibly be blocking the sensor?
    -SB

  • How can I block unwanted calls? (Besides Do Not Call List)

    We just moved into our new home and have Verizon's home phone service (and everything else). In less than the month we've been here we've been BOMBARDED by HUNDREDS of solicitors! Half are non-profits, half biz/telemarketers.They're all unwanted (I don't even do charities over the phone). I've never been so overwhelmed with unwanted calls before! (Must be a California thing? We just moved here from Seattle). Our number is on the National Do Not Call registry, but of course that doesn't stop the non-profits, charities and politicians from calling (they're excluded). Nor does it stop the ones who just don't care. I see that Verizon no longer provides the option of blocking unwanted numbers, and it also discontinued the Do Not Disturb feature. There used to be other options from many of the various phone providers to block all calls except those on a pre-approved list of your choosing. Why aren't these options available to us anymore???
    I'm thinking... with all this advanced technology...  there MUST be some way to block all those unwanted calls!!??!!
    Does anyone have any suggestions?
    Thanks!

    Hello rednorsk
    There are a couple of options, including one that is on done through your account online, or by calling customer service and requesting the block.  Customer Service can tell you how many of these blocks can be done for free, and whether you will need a specific plan to cover more.
    Here is a thread on just your issue.
    Regards,
    ElizabethS

  • Non-blocking ServerSocketChannel.accept()

    This may be a dumb question, but what would the motivation be behind utilizing a non-blocking call to the accept method of the ServerSocketChannel? I'm just having a hard time thinking of any, although I'm sure there are good reasons for doing it.
    Thanks,
    Ken

    it does seem pretty strange

  • OCCI and non-blocking

    I'd like to use the OCCI interface in a non-blocking mode. Does anyone have any experience with this? Looks like I need to use a combo of OCI and OCCI calls to set the OCI_HTYPE_SERVER handle with the OCI_ATTR_NONBLOCKING MODE. However, my stmt->executeQuery() method seems to be throwing an exceptions, which I would have though would have been the OCI_STILL_EXECUTING error, but it's not. The exeception is an "ORA-32103 error from OCI call". If I continue to do another stmt->executeQuery(), I eventually get an access exception.
    Anyone have any code snippets using OCCI in non-blocking mode?

    I use threads. ACE/TAO to be precise.
    I have singleton class that manages the Oracle environment and connection as well as being a statement
    factory.
    Just have a thread perform your stmt->executeXXX() method and you will not need to worry about non-blocking.
    That's how I do it and it works well.

  • Non blocking jDialog & return values

    Hi,
    I have (at the center of this problem) 3 classes. A controller class, and two jDialog windows.
    The controller initiates the first jDialog window (a main menu window). When the use clicks on a button the second jDialog window opens (a search window).
    How do I start the jDialog windows without the controller blocking on the show() calls?

    solved the non-blocking problem now have another lol!
    the method in the controller now does not block and the search dialog is displayed fine.
    It displays a list of results and the use double clicks on a result to display the details. I am using a jTable to display the results. The table has a mouse click listener that detects the double click. How do i notify the my controller class that the use has selected a result?
    If this is an easy problem, accept my apologies, I am relatively new to java...

Maybe you are looking for

  • An Open Plea To Apple, Inc ....

    PLEASE release the iPodOS SDK Into the wild. What's that, naysayers? The iPod Nano 5G not a pocketcomputer? Consider .... It runs apps/displays text/plays audio/records & displays images/records & displays video .... All functions of a regular deskto

  • ~ javax.ejb.ObjectNotFoundException: no such entity ~

    Hi all, When I deploy my own app into OC4J, the cmp beans get deployed properly (w/o any error messages). But when the client tries to access the bean through the findByPrimaryKey method the following exception is prompted: javax.ejb.ObjectNotFoundEx

  • Help with Mac Help!

    I recently updated my OS from 10.2 to 10.28. Now, when I go to Mac Help application, I have a strange problem. There is no text box to enter a question (of which I seem to have many). I've tried clicking on logical places where a text box might be hi

  • Working with Motion 5 and FCPX

    hey guys i am just getting started with motion 5 but i just wanted to know whats the easiest way to get them to work smoothly together please? say for eg i have fcpx open and i have a shot where i want to add a background to my greenscreen and anothe

  • How to increase photo booth resolution?

    photo booth is taking pics at 640x480 only. i think the macbook isight is 2 MP. that means the resolution should be more. any help?