How to generate a new rhread for every request

Hello,
I'm trying to write a server side program that does the following, recieves a Single connection from a client, client sends a request to the server side program, the server side program sends to a third party(back end) and waits for a reply.
The problem i am facing is the following, I want to for each message(request) recieved from the Client to generate a new thread and establish a new connection with the third party, I have tried creating a new thread for the communication with the third party, in this case if the response from backend takes time I will still be able to recieve other requests from the client. But I dont know how to return the message that his been to the Father thread. The reason why I am doing this is that I dont want the same thread that recieves the request from client to wait until the reply for the previous thread is sent.
Here's the code which I have been trying to implement.
ClientCommunicator {
Socket soc= new Socket(IPAddress,port);
Thread backEndComm= new Thread (new BackEndCommunicator
(soc,"Message To Back End"));
backEndComm.setPriority(8);
backEndComm.start();
public class BackEndCommunicator implements Runnable
Socket socket;
String messageToBeSentToBE= "";
public BackEndCommunicator(Socket socket, String messageTOBE)
this.socket= socket;
messageToBeSentToBE= messageTOBE;
public void run()
PrintWriter outtBackEnd= null;
BufferedReader innBackEnd= null;
String replyFromBE= "";
try
outtBackEnd= new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
outtBackEnd.println(messageToBeSentToBE);
outtBackEnd.flush();
innBackEnd= new BufferedReader(new InputStreamReader(socket.getInputStream()));
replyFromBE= innBackEnd.readLine();
How can I return the String "replyFromBE" to the ClientCommunicator class so it can be sent to the client as soon as recieved from the back end.
regards,
[email protected]

I assume the problem you are having is that your ClientCommunicator thread is blocking in a read and has no way of receiving notification from the other thread. Seems like you have a couple options at least.
1. Use non-blocking IO and a selector to do service both the client socket and the backend socket. Usually, NIO is more of a pain than it is worth unless you need to service hundreds of connections at once, but I think that in this case where you know that there are only two connections it might be easy enough to use.
2. A second option would be to avoid blocking on the read by using the available method on the input stream to first determine if you can actually read anything. This would allow you to wait with a small timeout on a monitor that the backend communicator could notify when it receives a response. This is not the ideal solution because you are limiting how fast you respond to the client and could be using more cpu time than necessary. However, it might be a lot easier to implement and could be adequate for what you need.
First solution is more elegant but potentially not worth the trouble. Second solution is less elegant, but may be good enough.

Similar Messages

  • New instance for every request to Servlet

    I want to create new instance for every request to Servlet ...
    I am running my servlet on weblogic

    Hi!
    what functionality can there be that has to be put into init()?
    Another idea:
    why not include your needed functions in a private method within the servlet and call this method from init() and from doPost/doGet so it is processed any time the servlet is called?
    btw: more instances of the same servlet seems to me as going back to the roots (cgi).
    Thomas.

  • Hello.  I have an old G4 Tower at 10.4.11.  The password for Keychain has been lost.  How can I generate a new password for Keychain?  Every time I use Safari it want me to enter the password.  Any suggestions?  Thank you

    Hello.  I have an old G4 Tower at 10.4.11.  The password for Keychain has been lost.  How can I generate a new password for Keychain?  Every time I use Safari it wants me to enter the keychain password.  Any suggestions?  Thank you

    See if this helps...
    Open Keychain Access in Utilities, use Keychain First Aid under the Keychain Menu item, then either check the Password under that item, change it, or delete it and start over.
    Keychain Access asks for keychain "login" after changing login password...
    http://support.apple.com/kb/HT1631
    Resetting your keychain in Mac OS X...
    If Keychain First Aid finds an issue that it cannot repair, or if you do not know your keychain password, you may need to reset your keychain.
    http://support.apple.com/kb/TS1544

  • How to refersh a page automatically for every 10 mins

    how to refersh a page automatically for every 10 mins

    Hi,
    Check this out. This may help you out -
    http://stackoverflow.com/questions/552756/can-silverlight-initiate-page-refreshes
    Thanks,
    Pravin
    "Please mark as answered, if this answers your question"

  • How to create a new field for Q3 - QM notification in Header and item level

    Dear All,
    l
               Sub: How to create a new field for Q3 - QM notification in Header and item level
    Ref. the link --> Quality Notification
    We want to create a new field in header level and item level.
    As per the thread the solution is given below.
    In the IMG Config: Quality Management -> Quality Notification -> Notification Types -> Define screen areas for notification types Then Choose 'Define screen areas' Then Click on 'New entries' button Now, select the relevant Notification Type and click in 'Enter'. Select the 'Iten Cases' register and remember to setup the Tabstrip Header, Icon, etc. Set the 'Tabstrip active' flag. Then Save.
    Quality Notification -> Notification Types -> Define screen areas for notification types
    WE ARE UNABLE TO FIND IN CUSTOMIZATION PATH --> DEFINE SCREEN AREAS FOR NOTIFICATION TYPES.
    Please help.
    Question No. 2 :
    THE REQUIREMENT IS GIVEN BELOW.
    We want to hide the field in Q3 - QM Notification
    In header --> Reference tab --> Item (sub heading) --> "DEFECT LOCATION" FIELD TO BE ELIMINATED (HIDE)
    Ref the link --> Quality notification
    The solutiion is given below.
    Hi Sami,
    We can hide the collumns using the Transaction OQM1 and Program Name SAPLIQS0.
    Lets say Defect location need to be hidden, the field TXTCDOT need to have the radio button HIDE.
    Hope this will suffice your requirement.
    Kindly ask me if you need any other details.
    Thanks & Regards,
    Srinivas.D
    Hi Sami,
    We can hide the collumns using the Transaction OQM1 and Program Name SAPLIQS0.
    Lets say Defect location need to be hidden, the field TXTCDOT need to have the radio button HIDE.
    Hope this will suffice your requirement.
    Kindly ask me if you need any other details.
    Thanks & Regards,
    Srinivas.D
    By double clicking the "DEFECTIVE QUANTITY (EXTERNAL), WE COULD NOT GET --> field TXTCDOT .
    Plese do the needful.
    We are using ECC6.0 Ehp3 and Ehp4.
    With Best Regards,
    Raghu Sharma

    Dear Pushpa,
    Transaction Code :SHD0 is working fine.
    Please accept my sincere thanks for your sharing your Knowledge.
    I am able to fulfill my
    Regarding the enhancement, I have not tried.
    Once I will complete, I will award the fulll marks to you.
    With Best Regards,
    Raghu Sharma

  • How to add a new tab for the project?

    Dear All Experts,
        Could you tell me how to add a new tab for the project?
        Pls refer to the screenshot as below:
    Thanks!
    Xinling Zhang

    Hi,
        The new tab in cj20n , and the new tab can only be displayed in the highed level.Pls refer to below
        And in cj02, there is no this tab also in the wbs detailed screen,
    Thanks!
    Xinling

  • How to create a new Condition for tax as VAT ( 4 % )  in SAP ? .

    Dear All ,
                           Pl guide that " How to create a new Condition for tax as VAT ( 4 % )  in SAP ? . What are all necessary requirements to do so , I need to have all steps so that i should feel very confident . For example what data is to be ticked in Control tab during cond. creation , in the same way how to put this cond. in Pricing procedure ? pl write all necessary thing which are required during this process .
    Thanx & deep regrads to all in adv.
    sap11

    In tax we can configure taxprocedure two types i.e., taxinn and tainj. If you adopt taxinn procedure if  it is other than VAT condition first you have to create the condition type and then you have to go to FTXP and assign the tax required VAT percentage to the repective % to ded or non ded VAT condion type. In second step you have to assign this tax code to respective company code.
    If you adopt taxinj procedure you have to a create tax code with FTXP T-code by assigning the values to the respective and save conditions.
    Regards,
    Bhuvan

  • How to create a new row for a VO based on values from another VO?

    Hi, experts.
    in jdev 11.1.2.3,
    How to create a new row for VO1 based on values from another VO2 in the same page?
    and in my use case it's preferable to do this from the UI rather than from business logic layer(EO).
    Also I have read Frank Nimphius' following blog,but in his example the source VO and the destination VO are the same.
    How-to declaratively create new table rows based on existing row content (20-NOV-2008)
    http://www.oracle.com/technetwork/developer-tools/adf/learnmore/13-create-with-params-169140.pdf
    I have tried:
    1.VO1(id,amount,remark1) and VO2(id,amount,remark2) are based on different EO,but render in same page,
    2.Drag and drop a Createwithparams button for VO1(id,amount,remark),
    3.add: Create insertinside Createwithparams->Nameddata(amount),
    4.set NDName:amount, NDValue:#{bindings.VO2.children.Amount}, NDtype:oracle.jbo.domain.Number.
    On running,when press button Createwithparams, cannot create a new row for VO1, and get error msg:
    <Utils> <buildFacesMessage> ADF: Adding the following JSF error message: For input string: "Amount"
    java.lang.NumberFormatException: For input string: "Amount"
         at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    Can anyone give some suggestions?
    Thanks in advance.
    bao
    Edited by: user6715237 on 2013-4-19 下午9:29

    Hi,CM,
    I'm really very appreciated for your quick reply! You know, today is Saturday, it's not a day for everyone at work.
    My principal requirement is as follows:
    1.select/check some rows from VO2, and for each selection create a new row with some attributes from VO2 as default values for VO1's corresponding attributes, and during this process the user may be cancel/uncheck or redo some of the selections.
    --so it's better to implement it in UI rather than in EO.
    2.it's better to implement this function with declarative way as in Frank Nimphius' blog.
    --little Jave/JS coding, the better. I only have experience in ORACLE FORMS, little experience in JAVA/JS.
    In order to get full information for the requirements of my use case, can take a check at:
    How to set default value for a VO query bind variable in a jspx page?
    (the end half of the thread: I have a more realworld requirement similar to the above requirement is:
    Manage bank transactions for clients. and give invoices to clients according to their transaction records. One invoice can contain one or many transactions records. and one transaction records can be split into many invoices.
    Regards
    bao
    Edited by: user6715237 on 2013-4-19 下午11:18
    JAVE->JAVA

  • A new socket for every http-request?

    Do I have to make a new socket for every http-request? The code below doesn't work because it is two requests in a row. The first GET works, but the second doesn't. I thought that the purpose of a socket is that you set it up once and then you should be able to do arbitrary communication between the two peers. Maybe that is just the case with sockets only but not if you use sockets to perform http.
    Thank you for your answers! Nice greetings from Austria (not Australia)!
    Stefan :)
    package httptest;
    import javax.net.ssl.*;
    import java.io.*;
    import java.net.*;
    public class Conn2 {
        private PrintWriter out;
        private BufferedReader in;
        private Socket socket;
        public Conn2()
            try {
             socket = new Socket("www.google.at", 80);
             out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));         
             if (out.checkError())
              System.out.println("SSLSocketClient:  java.io.PrintWriter error");
             in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                System.out.println("Connect erfolgreich.");
         } catch (Exception e) {
             System.err.println(e);
        public void test()
            String inputLine;
            // 1. GET
            out.println("GET / HTTP/1.0");
         out.println();
         out.flush();
         try
                while ((inputLine = in.readLine()) != null)
                    System.out.println(inputLine);
            catch(IOException e)
                System.err.println(e);
            // 2. GET
            out.println("GET / HTTP/1.0");
         out.println();
         out.flush();
            try
                while ((inputLine = in.readLine()) != null)
                    System.out.println(inputLine);
            catch(IOException e)
                System.err.println(e);
    }

    Normally in the HTTP protocol, the server will close the connection after every request. So after you do the first GET, the server sends you the result and closes the connection. You have to open a new connection for the second GET.
    You can set specific headers to keep the connection open, which makes things faster if you have to do multiple GET's quickly after another. Lookup the specification of the HTTP protocol on http://www.ietf.org/
    Maybe it's easier to use a HTTP client library like Apache's HTTPClient: http://jakarta.apache.org/commons/httpclient/ so that you don't have to implement all the difficulties of the HTTP protocol yourself.

  • How to set a new value for formula field in crystal reports xi?

    <p>How to set a new value for formula field in crystal reports xi?</p><p>//formula</p><p>{@description}</p><p> </p><p>exemplo in VB6</p><p>crxSubreport.FormulaFields.Item(1).Text =  "&#39;Subreport Formula&#39;"  or</p><p>crxSubreport.FormulaFields.Item("description").Text =  "&#39;Subreport Formula&#39;"</p><p>How to in JRC?</p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>

    Hi,
    This functionality is known to be very important and is a key part of the next major release of the JRC planned for the first half of 2008.
    Regards,
    <p>Blair Wheadon</p>
    <p>Product Manager, Crystal Reports</p>

  • "A new folder for every project file"

    Aha!!  Right, from now on ... (thanks Steve)
    From the Muvipix.com Guide to Adobe PE11 by Steve Grisetti
    (p 36) [on starting and saving a new project]
    2     Click the Browse button to choose a location to save your new
    project file.
    We at Muvipix recommend always selecting the Browse option and,
    wherever you choose to save your file, creating a new folder for every
    new project file.
    This little bit of housekeeping keeps all of your new project's files in
    one neat, little folder. And, when your project is done and you want to
    clear it from your computer, you can then remove not only the project
    file but all of the temp, render and scratch disk files Premiere Elements
    has created for that project simply by deleting that single folder!
    This makes post-project clean-up a much easier and neater process.
    OK, hope I've got it this time (at last)
    cheers
    Brian

    Oh no!  I thought I’ll re-work that Canal video again, but this time saved the project from the very start in a new folder on an ext HD (500 GB) connected USB3.0.  Tried all sorts of things on it, saved each time in the same folder.   Cleared all 14 clips from Project Assets (which of course emptied the timeline).   Shut down PE11.   Checked via Windows Explorer that the project files were all on the ext HD – and by the way, there are no other files on it, just the PE files.  My understanding is that Advanced System Care Pro (Iobit) regularly defrags all my drives if necessary (tho’ I haven’t done this manually for months with this drive).
    OK, opened PE, went to Open Recent Projects, it shows the above .prel file and the entire path, I click on it and – 
    Weird, just weird
    Nil desperandum
    Brian
    Edited --- and another weird thing, my email isn't sending the complete message I type to this forum.   I sent a whole message once and it never appeared, but this time it's cut off half a sentence above (it did this before, earlier today).
    That sentence should read,
    OK, opened PE, went to Open Recent Projects, it shows the above .prel file and the entire path, I click on it and – nothing happened!   (You'll have gathered that's what happened, but I wrote it in my Windows Live Mail, sent via BT-Yahoo ISP ......... )  Hey wait, there was a whole lot more.
    Here's a copy / paste from Windows Live Mail outbox
    It’s so odd, because as I said previously, most of the time it works so well, does all the things it’s supposed to do.   I followed Steve’s instructions here to the letter.   By the way, as you know, it’s not just the ext HD, this has been happening all along with allowing PE to save everything in its default Folder 11.
    I would be – now – very sorry indeed to have to abandon PE11 simply on this account, but it’s causing me to waste such a lot of time.   (Let alone the expense of buying it, plust one Lynda.com course, plus 2 books – not forgetting that I’d previously tried the Corel software and bought a book and DVD for that too!!)
    Might just use – what’s that simplicity-itself thingy everyone uses who just want to get any old kind of thing up on You Tube ..........   Oi vey!! <<more weary sigh>>
    Weird, just weird
    Nil desperandum

  • How to generate an XML file for an animation of IK armature

    Can someone please tell me how to generate an XML file for an animation of IK armature.
    I have a 5 keyframe/16 frame animation of a human character made up of a series of moveiclip symbols that is animated with an IK armature.  I need the XML information from the animation. 
    When I go to Commands > Export Motion XML I get the error message "There is more than one object on frame 1" and then nothing happens.
    Thank you,
    c

    I hope that's not the case.  I want to write to adobe about it.  I think it's a great feature and it functions really well even though it is not a very developed IK tool.  My biggest issue with it is ouput options and integration with motion tweens.
    I have seen a lot of examples of animators using it online, just no one talked about output.  I just feel it hasn't been developed.  It can generate a sprite sheet but only for a single pose frame of the animation, and not all the key frames or pose tweens.  I find that functionality quite odd, as if adobe just forgot about IK when added in sprite sheets, etc. and the reason it half works is just an accident.

  • How to save a new value for Set command variable

    I am using SET [variable = [String]] to update Set variable. It works fine. But when I restart MSDOS Prompt, I get old value for variable.
    How to save a new value for SET command variable?
    I am using Windows XP.

    And this has to do with java how?

  • How To Generate Debug Log Files for ebs jsp?

    hi   How To Generate Debug Log Files for ebs r12 jsp?
    and where i get the log .please help me thanks!

    Please check following MOS Document
    Oracle Application Server Diagnostic Tools and Log Files in Applications Release 12 (Doc ID 454178.1)

  • How much is a new screen for a mac book pro

    how much is a new screen for a mac book pro? - mine is cracked and shattered, everything else seems to work at mo?

    check this link ifixit.com

Maybe you are looking for

  • Why does Contacts crash each time I open it?

    since the weekend, I cannot open the Contacts App - it crashes at open every single time with a report dump that states its an EXC_CRASH (SIGABRT)

  • RELEASE REMAIN  UNCHANGED

    Dear experts PO created with  release strategy ,then in  conditions custom  clearing charges were included and  this  vendor  was included .Now  this  PO was  re-released  . Another PO with  release strategy , ,then in  conditions custom  clearing ch

  • How do I consolidate two iTunes accounts?

    I accidentally created two iTunes accounts.  How do I consolidate them so that I have access to all of the music I have paid for?

  • Cisco 878 GSHDSL line rate

    I have had a problem recently with an 878 using SDSL. I recently lost connection to the device after a thunderstorm and assumed either a tail problem or a blown modem. After several tests by BT the line passed as clear and after changing the 878, the

  • Error in dealing with parameters

    I am facing a very strange problem with sting parameters i use a method that deals with string when i give it the sting as a static value it works but when i try to get a value fron the DB and give this value to the method it doesn't work Sample Test