Cache synchronisation via events acrsoss multiple clients

I have a number of TopLink (9.0.3) clients (using SoftCacheWeakIdentityMap) connected to a single server via RMIRemoteSessions and want to keep the objects in the local caches of all the clients up-to-date when any one of the clients updates one of these objects (through a UnitofWork). I'm looking for some advice as to the most appropriate way to do this in TopLink.
Calling refreshObject on relevant objects in each client before I access them works, but am looking for a more "automatic" mechanism -- such as events or even "automatic cache synchronisation".
I've tried using events but it doesn't work as I expected. I've specified event methods in the Mapping Workbench for the relevant classes, but these ONLY get called in the client session of the client that makes the change (and the server session), and NOT in any of the other client sessions. Is this the intended behaviour or am I doing something wrong here?
I've also looked at the cache synchronisation mechanisms but this seems to be more targeted at synchronisation of caches across multiple servers. Is this correct or would this be an appropriate mechanism to use in my case?
Alternatively, is there some way I can find out if an object is out-of-date in the client cache so I can then do a refresh before I access it?
Any guidance / comments would be most appreciated...
Thanks

Roger,
a.1) TopLink's cache-sync will notify all connected caches of changes through other TopLink sessions. This will update the object with the values changes to keep the cached objects from being stale/out-of-sync with the database.
a.2) If your clients are not all TopLink enabled then I would recommend starting with optimistic locking to detect when you write against a stale object, a weak cache to minimize stale objects and possibly adding a notification system from the database. The notification system has been successful in very read intensive systems only.
b) There is a setting on a query and more globally on a descriptor to refreshIfNewerVersion. This works with the optimistic locking policy to ensure that when the refresh row is returned the cost of repopulating object is not incurred if the version match.
There is some new functionality coming in 10.0.3 to handle cache invalidation/expiry. This will allow objects to be expired a fixed time after reading, at a regular point in time daily, or through API. This API will also allow you to ask if an object has been invalidated/expired.
A How-to for this functionality in the 10.0.3 preview is available at: http://otn.oracle.com/products/ias/toplink/preview/howto/cacheexpiry.htm
Doug

Similar Messages

  • How to control one server with multiple clients via TCP/IP

    I am wanting to control a single server with multiple clients.  Only one client would be active at a time, so there would be no conflict.  I want to use TCP/IP.  So far, I have programmed a cluster that passes data back to the server with no problems.  The challenge come in when a second client is added to the mix.  I have't been able to figure out how to turn each client on and send the appropriate data and then turn it off so it doesn't keep sending the same data to the server. 
    Here are the things that I have considered and did some preliminary testing, but don't really know how to impliment:
    1.  Send a numeric on the front of the cluster packet that tells the server that data is on the way.
    2.  Send a boolean on the front of the cluster packet to somehow turn the server TCP/IP on.
    The problem I have found is that LabVIEW TCP/IP doesn't like to be turned on and off.  If it doesn't get the data it expects, it goes into a reset mode and that kills the response time.
    Any help?

    You should consider implementing a set of simple one-byte commands that can be sent back and forth between the Server and the Clients. You can base all of these ideas off the example in the Example Finder under Networking >> TCP and UDP called Multiple Connections - Server.
    You will have two loops in the server VI: one to wait for new connections, and one to send and receive data from the existing connections. For instance, after one of the clients connects, it can request control of the server to send data to it by sending the character "R" for request. Every time the send/receive loop of the Server executes, the first thing it can do is to check all the existing connections to see if any of the clients have sent a control request ("R"). If so, it will create a buffer (array) of control requests. This could be in the form of Connection IDs or indexes in the array for a particular Connection ID. Your choice.
    After the Server receives a request for contol, if it is not already under control by another client, then it can send a response to the first client on the control request list. For instance, the server could send the first client a "S" command for send. Note that after the clients send their control request, they should execute a TCP Read and wait indefinitely for the server to respond with the one-byte "S" command. Then, once the client in control is finished sending data to the server, it could send the character "X" telling the Server to release it from control.
    The example I mentioned above already does a similar thing. Note how when a client wants to disconnect, they send the letter "Q". You can see this in the Multiple Connections - Client VI. The Server then checks each individual connection to see if it's received this one-byte command, and if it has, it closes the connection to the client. This is what you would want to implement, but instead of having just one command, you'll have to distinguish between a few and build up a buffer of control requests.
    Finally, if a client does decide to disconnect in your application, they could send the command "Q" just like the example above. At this point, close the connection and remove that Connection ID from the array of connections. You will also have to handle the case that this client was in the request control waiting line when it disconnected, in which case you need to delete it from that array as well.
    This will definitely work for you, but it will take some work. Best of luck!
    Jarrod S.
    National Instruments

  • RAS Server allowing multiple clients in and telnet redirection to correct reciever.

    Product being used:
    IOS (tm) 3700 Software (C3725-ADVIPSERVICESK9-M), Version 12.3(26), RELEASE SOFTWARE (fc2)
    cisco 3725 (R7000) processor (revision 0.1) with 118784K/12288K bytes of memory.
    R7000 CPU at 240MHz, Implementation 39, Rev 3.3, 256KB L2 Cache
    MICA-6DM Firmware: CP ver 2940 - 7/24/2002, SP ver 2940 - 7/24/2002.
    Bridging software.
    X.25 software, Version 3.0.0.
    Primary Rate ISDN software, Version 1.1.
    2 FastEthernet/IEEE 802.3 interface(s)
    24 Serial network interface(s)
    24 terminal line(s)
    1 Channelized T1/PRI port(s)
    In combination with a server running:
    tac_plus version F4.0.3.alpha.v9 (Extended Tac_plus)
    • The goal is create a RAS Server to allow multiple clients to call in and separate them via DNIS.
    Then specify an auto-command to send the traffic to the correct receiver of that call.
    We are not stuck on doing this with tacacs if there is a more efficient way of doing this.
    The thought was to only send the authorization to tacacs to allow for the dnis map to point the traffic to the correct receiver.
    aaa authentication login DIALIN none
    aaa authorization exec DIALIN none
    • If we set aaa authentication login DIALIN none it works without any issues but does not go to the tacacs server and therefore does not allow us to use the dnis map commands.
    aaa authentication login DIALIN group AAA-mydial
    aaa authorization exec DIALIN none
    • If we set aaa authentication login DIALIN group AAA-mydial using the aaa group server tacacs+ AAA-mydial it goes out to the tacacs server as expected but then it requires a login ID at least in order to get into a session.
    aaa authentication login DIALIN none
    aaa authorization exec DIALIN group AAA-mydial
    • When we change the aaa authorization exec DIALIN group AAA-mydial it fails and does not even send the information out to the tacacs server.
    aaa authentication login DIALIN “see above for options “
    aaa authorization exec DIALIN “see above for options”
    aaa new-model
    aaa group server tacacs+ AAA-2035554677
    server 172.16.0.109
    aaa group server tacacs+ AAA-2035554570
    server 172.16.0.109
    aaa group server tacacs+ AAA-2035554571
    server 172.16.0.109
    aaa group server tacacs+ AAA-mydial
    server 172.16.0.109
    aaa authentication login DIALIN none
    aaa accounting exec default start-stop group AAA-2035554570
    aaa dnis map enable
    aaa dnis map 2035554677 authorization network group AAA-2035554677
    aaa dnis map 2035554677 accounting network start-stop group AAA-2035554677
    aaa dnis map 2035554570 authentication login group AAA-2035554570
    aaa dnis map 2035554570 authorization network group AAA-2035554570
    aaa dnis map 2035554570 accounting network start-stop group AAA-203554570
    aaa dnis map 2035554571 authorization network group AAA-2035554571
    aaa dnis map 2035554571 accounting network start-stop group AAA-2035554571
    aaa session-id common
    ip subnet-zero
    ip cef
    line con 0
    line 65 88
    no motd-banner
    no exec-banner
    privilege level 15
    no vacant-message
    login authentication DIALIN
    modem Dialin
    transport preferred none
    transport output telnet
    escape-character NONE
    telnet transparent
    line aux 0
    line vty 0
    exec-timeout 0 0
    password cisco
    line vty 1
    exec-timeout 0 0
    transport preferred telnet
    transport input all

    /* Style Definitions */
    table.MsoNormalTable
    {mso-style-name:"Table Normal";
    mso-tstyle-rowband-size:0;
    mso-tstyle-colband-size:0;
    mso-style-noshow:yes;
    mso-style-priority:99;
    mso-style-qformat:yes;
    mso-style-parent:"";
    mso-padding-alt:0in 5.4pt 0in 5.4pt;
    mso-para-margin:0in;
    mso-para-margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
    mso-ascii-font-family:Calibri;
    mso-ascii-theme-font:minor-latin;
    mso-fareast-font-family:"Times New Roman";
    mso-fareast-theme-font:minor-fareast;
    mso-hansi-font-family:Calibri;
    mso-hansi-theme-font:minor-latin;}
    NOTHING LIKE ANSWERING YOUR OWN POST:::
    --Well after looking around I found the following on a forum which seems to have gotten us to our destination but uses local authentication to direct the DNIS numbers to the correct receiving system.  Just need to give things a final polishing to make the configuration as clean as possible.
    hostname Router
    boot-start-marker
    boot-end-marker
    logging buffered 65536 debugging
    enable password cisco
    clock timezone EDT -5
    clock summer-time EDT recurring
    aaa new-model
    aaa user profile TEST
    aaa group server tacacs+ AAA-mydial
    server 172.16.0.109
    !!!!!  Below defines the AAA-mydial group you are sending the accounting information to.
    aaa group server radius AAA-myradius
    server 172.16.0.109 auth-port 1645 acct-port 1646
    !!!!!  Below you are using the DNISTEST local group for authentication and authorization.
    aaa authentication banner ^C^C
    aaa authentication login DNISTEST local
    aaa authorization exec DNISTEST local
    aaa accounting update newinfo
    aaa accounting connection DNISTEST start-stop group tacacs+ group AAA-mydial
    aaa session-id common
    ip subnet-zero
    ip cef
    ip audit po max-events 100
    isdn switch-type primary-ni
    isdn voice-call-failure 0
    isdn logging
    !!!!!  Below you are directing which DNIS number goes to which receiving host.
    username cisco-kid password 0 cisco
    username DNIS##1212 nopassword dnis
    username DNIS##1212 autocommand telnet 172.16.0.5 22 /stream /quiet
    username DNIS##4677 nopassword dnis
    username DNIS##4677 autocommand telnet 172.16.0.6 22 /stream /quiet
    username DNIS##4570 nopassword dnis
    username DNIS##4570 autocommand telnet 172.16.0.7 22 /stream /quiet
    controller T1 1/0
    framing esf
    linecode b8zs
    pri-group timeslots 1-24
    interface FastEthernet0/0
    ip address 172.16.0.35 255.255.255.0
    speed auto
    full-duplex
    interface FastEthernet0/1
    no ip address
    shutdown
    duplex auto
    speed auto
    interface Serial1/0:23
    no ip address
    encapsulation hdlc
    isdn switch-type primary-ni
    isdn incoming-voice modem
    no cdp enable
    interface Group-Async0
    no ip address
    encapsulation slip
    dialer in-band
    dialer-group 1
    async mode interactive
    group-range 65 88
    interface Dialer0
    no ip address
    dialer in-band
    dialer idle-timeout 3600
    dialer-group 1
    ip classless
    ip route 0.0.0.0 0.0.0.0 172.16.0.254
    no ip http server
    no ip http secure-server
    ip tacacs source-interface FastEthernet0/0
    dialer-list 1 protocol ip permit
    !!!!!  Below you are further defining the tacacs server and the encryption key to be used.
    tacacs-server host 172.16.0.109 key cisco
    no tacacs-server directed-request
    radius-server host 172.16.0.109 auth-port 1645 acct-port 1646 key ras-secret123
    line con 0
    !!!!!  Below you are directing all calls to go to DNISTEST for authentication, authorization, & accounting.
    !!!!!  Then we are stripping all prompting so that the connection is completely clean.
    !!!!!  The only issue was that the aaa banner was still there which is why there is a
    !!!!!  “aaa authentication  banner ^C^C” above in the aaa section.
    line 65 88
    no motd-banner
    no exec-banner
    privilege level 15
    authorization exec DNISTEST
    accounting connection DNISTEST
    no vacant-message
    login authentication DNISTEST
    modem Dialin
    transport preferred none
    transport output telnet
    escape-character NONE
    telnet transparent
    line aux 0
    line vty 0 4
    exec-timeout 0 0
    password cisco
    transport preferred telnet
    transport input all
    transport output all
    escape-character NONE
    telnet transparent
    end
    tacacs+ config just needs to have an accounting log file defined and all output will be logged there:
    Here is my tac_plus.cfg file:
    ===========================================================
    key = "cisco"
    accounting file = /var/log/tac_plus-f404.log
    -----------------------  the info below this line is irrelevant  ---------------------------
    ---  Just from me trying to use tacacs for the authentication & authroization----
    user = default {
            login = nopassword
            service = exec {
                   autocmd = "telnet 172.16.0.5 22 /stream /quiet"
    user = Router {
            login = nopassword
            member = dialup
    group = dialup {
            default service = permit
            expires = "Apr 1 2010"
            service = exec {
                    idletime = 15
                    autocmd = "telnet 172.16.0.5 22 /stream /quiet"
            cmd = disconnect {
                    permit .*
    user = test {
            name = "Dial"
            login = nopassword
            member = dialup

  • Saving string  from multiple clients on a server data structue

    I have a server which receives updates from multiple clients ( in this example, football scores which are updated periodically by the clients.)
    When the server receives the scores it needs to store them and at certain time intervals send the complete list of scores to multiple terminals at various locations.
    I am approaching this task in stages...
    stage 1.
    ..create the clients and server ...test the clients can send the data and the server can receive the data and output to screen..
    this is completed
    stage 2...
    a/ on the server side store the received scores in a data structure (ArrayList<String> is what I'm thinking.)
    b/ periodically output all scores to the screen (maybe every 30 seconds) and empty the ArrayList..am looking at the Timer class for this part..
    stage 3
    create the monitors and output scores to monitors periodically..
    ======================================================
    right now I'm at stage 2a ie trying to store the received scores in a data structure.
    i've created a method saveScore in the StoreScore class which is called by the StoreScore run method...
    The saveScore method creates an ArrayList and adds the score to it...
    Question
    does every thread create a new instance of storedScores and therefore the scores are stored in a multitude of data structures?
    I think the answer is yes and if so then this is not the solution...
    What I'm thinking is , as all scores can be outputted to the server screen via System.out.println, is there not a way of saving all these scores in a single data structure?
    The code below is the server code..
    any advice much appreciated....thank you
    /*=============================================================== */
    import java.io.*;
    import java.net.*;
    import java.util.*;
    import java.util.concurrent.*;
    class ScoresServer1{
    final static int portNum = 1234; // any number > 1024
    final static int numThreads = 10;
    static ExecutorService pool;
    public static void main(String[] args){
    pool = Executors.newFixedThreadPool(numThreads);
    System.out.println("Server running ...");
    try{  
    ServerSocket servesock = new ServerSocket(portNum);
    // for service requests on port
    while (true){ 
    // wait for a service request on port portNum
    Socket socket = servesock.accept();
    // submit request to pool
    pool.submit(new StoreScore(socket));
    }catch(IOException e){}
    class StoreScore implements Runnable {
    BufferedReader reader;
    Socket sock;
    public StoreScore(Socket clientSOcket) {
    try {
    sock = clientSOcket;
    InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
    reader = new BufferedReader(isReader);
    } catch (Exception ex) { ex.printStackTrace(); }
    public void run() {
    String message;
    try {
    while ((message = reader.readLine()) != null) {
    // System.out.println("latest score: " + message);
    saveScore(message);
    } catch (Exception ex) { ex.printStackTrace(); }
    public void saveScore(String message){
         ArrayList<String> storedScores = new ArrayList<String>();
         storedScores.add(message);
         Iterator<String> t = storedScores.iterator();
              while(t.hasNext()){
                   String s = t.next();
                   System.out.println(s);
    }

    does every thread create a new instance of storedScores and therefore the scores are stored in a multitude of data structures?
    I think the answer is yes and if so then this is not the solution...The answer is yes. However, threads can share data, if they were properly synchronized. You should read the threading tutorial before creating a lot of hard to debug mistakes.
    [http://java.sun.com/docs/books/tutorial/essential/concurrency/]

  • Library Cache Pin Wait Event (within the context of APEX)

    Hello,
    Firstly -
    Oracle Version: 10.2.0.4.0
    Apex Version: 3.0.1.00.08
    Okay, my colleague (no really! This isn't one of those "Ahem ... A friend of mine has contracted something nasty +downstairs+..."-type questions) is having problems compiling a package (using TOAD incidentally, but it's the same in SQL Developer).
    I've searched the forum and the web for a bit of help on what's maybe happening here and it appears to be related to a concurrency conflict with the package definition - from what I can understand it's a case of the package is in use by another session, therefore another session cannot alter it at the same time (which makes sense)
    "What does this have to do with APEX?"... well, he is working on this package using the following methodology:
    1. Compile the package body/spec (as necessary - body more often obviously)
    2. run an apex page which uses the code in a process, which may or may not result in the error page being displayed
    3. Making changes to the package body/spec
    repeat steps 1-3 ad nauseum...
    He is the only user directly accessing the schema (and the only user accessing the page via APEX too, although I appreciate this isn't quite the same thing).
    I was wondering if, due to the architecture of APEX (the use of session pools etc), the state of a package might be being retained in some manner, thus resulting in this library cache pin wait event? If so, is there anything I can do to mitigate against this occurring?
    p.s. the only difference I can see between this particular package and any other package in the schema is that this one interacts with blobs (including making references to the wwv_flow_files view) - with blobs being passed as parameters between procedures (thus potentially creating temporary blobs which may or may not being closed).
    Any ideas?
    p.p.s. there are also no DBMS_SCHEDULER jobs or anything that might potentially be running the code incidentally...
    Edited by: Joel_C on 11-Nov-2011 11:58
    We got our DBAs to run a bit of code to identify the blocking session:
    select
             decode(lob.kglobtyp, 0, 'NEXT OBJECT', 1, 'INDEX', 2, 'TABLE', 3, 'CLUSTER',
                          4, 'VIEW', 5, 'SYNONYM', 6, 'SEQUENCE',
                          7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
                          11, 'PACKAGE BODY', 12, 'TRIGGER',
                          13, 'TYPE', 14, 'TYPE BODY',
                          19, 'TABLE PARTITION', 20, 'INDEX PARTITION', 21, 'LOB',
                          22, 'LIBRARY', 23, 'DIRECTORY', 24, 'QUEUE',
                          28, 'JAVA SOURCE', 29, 'JAVA CLASS', 30, 'JAVA RESOURCE',
                          32, 'INDEXTYPE', 33, 'OPERATOR',
                          34, 'TABLE SUBPARTITION', 35, 'INDEX SUBPARTITION',
                          40, 'LOB PARTITION', 41, 'LOB SUBPARTITION',
                          42, 'MATERIALIZED VIEW',
                          43, 'DIMENSION',
                          44, 'CONTEXT', 46, 'RULE SET', 47, 'RESOURCE PLAN',
                          48, 'CONSUMER GROUP',
                          51, 'SUBSCRIPTION', 52, 'LOCATION',
                          55, 'XML SCHEMA', 56, 'JAVA DATA',
                          57, 'SECURITY PROFILE', 59, 'RULE',
                          62, 'EVALUATION CONTEXT',
                         'UNDEFINED') object_type,
             lob.KGLNAOBJ object_name,
             pn.KGLPNMOD lock_mode_held,
             pn.KGLPNREQ lock_mode_requested,
             ses.sid,
             ses.serial#,
             ses.username
        FROM
           x$kglpn pn,
           v$session ses,
           x$kglob lob,
           v$session_wait vsw
      WHERE
       pn.KGLPNUSE = ses.saddr and
       pn.KGLPNHDL = lob.KGLHDADR
       and lob.kglhdadr = vsw.p1raw
       and vsw.event = 'library cache pin'
    order by lock_mode_held descresults as follows (I've changed some object names to protect the ignorant):
    OBJECT_TYP OBJECT_NAME                   LOCK_MODE_HELD LOCK_MODE_REQUESTED        SID    SERIAL# USERNAME
    PACKAGE    PKG_FOOBAR                             2                   0        356      21694 HTMLDB_PUBLIC_U
                                                                                                      SER
    PACKAGE    PKG_FOOBAR                             0                   3        463      22309 FOOHTMLDB_PUBLIC_USER is the apex user incidentally. The session is marked in the v$session table as "inactive", the last statement being
    Begin
       Dbms_session.reset_package;
    End;Edited by: Joel_C on 11-Nov-2011 14:39

    bump
    No-one?
    The problem seems to have 'resolved itself' over the weekend incidentally (although I don't believe anything truly resolves itself in this manner - something must have changed).

  • Using BC to manage multiple client sites

    Hi,
    I'm a freelance designer who has recently started delving into the world of web design due to the high demand from my clients!
    I am very interested in the Muse and BC software packages from Adobe and like the way that they interact with eachother to enable more interactive features on websites.
    I am really struggling to get my head around how BC works though?? As mentioned before I have multiple clients that have recently asked me to create/redesign their webistes for them and all of my clients have asked for feature rich websites that either allow them to update certain pages themselves (news pages, menu pages etc.) and add in features that allow for e-commerce/shopping carts.
    I know that combining both Muse and BC will allow me to achieve all of these features but I need to know how I can get BC to manage all of the sites.
    Do I only need a copy of BC myself so I can manage all of the sites in one place or will I need to set up an account for each seperate site and log into each one to manage the modules etc.?
    My ideal scenario would be as follows:
    I have a copy of BC on my machine that I can use to set up each site and manage it. I can then give each individual client login details for their site so they can add/amend content on specific pages that I unlock for them. The clients login details also give them access to the site analytics, create e-shots, update the e-commerce side of the site.
    Each client would then pay the relevant monthly subscription to host their site on BC depending on what level of interactivity they require.
    As I said, I'm struggling to work out how BC works in terms of managing multiple sites so any suggestions/guidance would be great!
    Kind Regards
    Dan

    Hi Dan,
    Firstly you need to understand Muse in the scope of website design & development and also with it and BC.
    Muse is a means for graphic designers to step into the web would and get them going. Its concept as a point and click interface, while built very well from a good team by its very nature is only a stepping stone and basic.
    With that and how it works with BC as well it is only the lower end of what you can do with it and BC. So proper implemented eCommerce etc you simply can not create properly and use and utlise other BC features.
    It does not teach you the javascript etc you need to take a full on BC site to where it needs to be.
    Also while it has been improved the way you develop in Muse and then clients updating content via the admin (as they should being a CMS) it is not the smoothest affair.
    With your next part of your post - To manage many clinets in BC you should look to become a partner. You have access to the partner portal and can manage client sites more easily and access some cool tools to help and aid with that. You get a free partner site for yourself you can use as your business site.
    Lots of info on BC is here:
    http://helpx.adobe.com/business-catalyst/topics.html

  • TES 6.1.0.x Multiple Client Managers

    Hello:
    I am trying to find out if there is anyone else using multiple client managers on a load balancer and if we could have a discussion regarding such a setup. We have this in our envrionment and it does work, however sometimes I see oddities with in the client - even if I log directly into one of my client managers, by-passing the load balancer completely.
    Looking forward to hearing from anyone with a similar setup.
    Regards,
    Ceceil Rufo

    We haven't done a formal load testing yet.  But we have conducted training with 10 - 15 users and would experience performance sometimes people just getting kicked out.  At the time though we were still finagling with server configuration settings for threads, cache and java heap.  During training too what seemed to impact performance more was the browser and version, and workstation memory.  For a web app, TES 6.1 uses a LOT of memory so there were some suggested tweaks that had to be done on some machines.  We have more consistent performance on IE 9 (than IE 10), and Firefox 18+ was faster.
    I have installed Jconsole and am planning to conduct load testing sometime this month where i could monitor server resource from Jconsole to get an idea where bog down really is. 
    There is a TES 6.1 presentation doc that sort of outlines approx sizing based on concurrent users - we fit in the 10 -20 concurrent users given that our CM has 12GB RAM (allocated 10GB to TES) and 4 core.  So hopefully with two CMs we can have upto 40.  We are open to adding more mem if needed.  So what tools do you use for Load testing?  Also I wonder if it was possible to automate Load Testing like with Jmeter or something.  For now we just plan on getting 20 users together to perform set functions at the same time and measure that with 1 CM up and me looking in Jconsole.
    I also notice the multiple connections, even see myself twice even when I only have 1 browser session.  Not having had a chance to dig to deeply i was chalking it up to maybe that I didn't exit properly last time so that it has to wait 30 minuts to totally clear me (with time to live setting) out but haven't really tested formally.  I will see about adding that to my testing.  I would also think it would impact system in that some folks may cause the number of concurrent connections allowed to be exceeded if you have too many of these lying around but since they are not doing anything perhaps not performance as much?  It will be good to confirm though that a single web session really only takes 1 connection and won't potentially spawn another somehow.
    Our implementation being highly distributed with workgroups having full autonomy over their jobs - means every team needs to have access to Transporter.  We have over 15 teams. Which is scary since that also takes resources from the CM -  and also from a management and training perspective.  We also haven't load tested the Transporter server interms of number of concurrent users that can be running Transporter on it at one time.  Nor have any clear idea yet how we'll manage the mapping files.  But we are also opening up Transporter to be installed by teams on their team server (only that they have to patch themselves) - I really wonder if we should just restrict Transporter access to just the servers our team manage and no one else can install it anywhere else.

  • Multiple clients with role production

    Dear SAP experts,
    Is it possible to assign the client role "production"  (in scc4) to multiple clients in 1 instance. If the answer is yes then how can it be done because if I try to do it via ssc4 i get an error that there already is a production client..
    I have searched the forum, SAPNET  and googled but I could not find a definitive answer.
    Thanks for your patience and answers.
    Regards
    Dirk Visser

    Hi all,
    I discovered that it can be done. Just set the role to production and ignore the warning.

  • One Server Multiple Clients

    Hello,
    This server code accepts only one client connection at a time. However, I have several lines that are specifically for the server to accept more than one client. What do I need to do in addition for the server to recognize that it can accept more than one client at a time?
    import java.io.EOFException;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ExecutorService;
    import javax.swing.JFrame;
    public class ServerTest
       public static void main( String args[] )
          Server application = new Server();
          application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
          application.runServer();
    class Server extends JFrame
       private JTextField enterField;
       private JTextArea displayArea;
       private ObjectOutputStream output;
       private ObjectInputStream input;
       private ServerSocket server;
       private Socket connection;
       private int counter = 1;
       private ExecutorService serverExecutor;
       private MultiServer clients[];
       public Server()
          super( "Server" );
          enterField = new JTextField();
          enterField.setEditable( false );
          enterField.addActionListener(
             new ActionListener()
                public void actionPerformed( ActionEvent event )
                   sendData( event.getActionCommand() );
                   enterField.setText( "" );
          add( enterField, BorderLayout.NORTH );
          displayArea = new JTextArea();
          add( new JScrollPane( displayArea ), BorderLayout.CENTER );
          setSize( 300, 150 );
          setVisible( true );
       public void runServer()
          serverExecutor = Executors.newCachedThreadPool();
          try
             server = new ServerSocket( 12345, 100 );
             while ( true )
                try
                   waitForConnection();
                   getStreams();
                   processConnection();
                catch ( EOFException eofException )
                   displayMessage( "\nServer terminated connection" );
                finally
                   closeConnection();
                   counter++;
          catch ( IOException ioException )
             ioException.printStackTrace();
       private void waitForConnection() throws IOException
          displayMessage( "Waiting for connection\n" );
          connection = server.accept(); 
          serverExecutor.execute( new MultiServer(server, connection));     
          displayMessage( "Connection " + counter + " received from: " + connection.getInetAddress().getHostName() );
       private void getStreams() throws IOException
          output = new ObjectOutputStream( connection.getOutputStream() );
          output.flush();
          input = new ObjectInputStream( connection.getInputStream() );
          displayMessage( "\nGot I/O streams\n" );
       private void processConnection() throws IOException
          String message = "Connection successful";
          sendData( message );
          setTextFieldEditable( true );
          serverExecutor.execute(new MultiServer(server, connection));
          do
             try
                message = ( String ) input.readObject();
                displayMessage( "\n" + message );
             catch ( ClassNotFoundException classNotFoundException )
                displayMessage( "\nUnknown object type received" );
          } while ( !message.equals( "CLIENT>>> TERMINATE" ) );
       private void closeConnection()
          displayMessage( "\nTerminating connection\n" );
          setTextFieldEditable( false );
          try
             output.close();
             input.close();
             connection.close();
          catch ( IOException ioException )
             ioException.printStackTrace();
       private void sendData( String message )
          try
             output.writeObject( "SERVER>>> " + message );
             output.flush();
             displayMessage( "\nSERVER>>> " + message );
          catch ( IOException ioException )
             displayArea.append( "\nError writing object" );
       private void displayMessage( final String messageToDisplay )
          SwingUtilities.invokeLater(
             new Runnable()
                public void run()
                   displayArea.append( messageToDisplay );
       private void setTextFieldEditable( final boolean editable )
          SwingUtilities.invokeLater(
             new Runnable()
                public void run()
                   enterField.setEditable( editable );
      class MultiServer extends Thread
      public MultiServer(ServerSocket servers, Socket connection)
          servers = server;
      public void run(){System.out.print("Yes");}
    }

    Check out the "Supporting Multiple Clients" bit here: http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer.html
    Start a Thread for each client. I'd recommend you create a class:
    class Client
        Socket socket;
        ObjectOutputStream out;
        ObjectInputStream in;
        ...any other client-specific data you need...
        public void sendMessage(String s) { ...send to this client...; }
       ...any other client-specific methods you need...;
    }Create one of those when accept() gets a new connection, then start the thread for that client.
    You may want to keep a LinkedList that contains all the Client objects. E.g. if you want to send a message to all clients you'd loop over the LinkedList and send to each in turn. Synchronize the list appropriately. Removing clients from the list when they close down can be interesting :-) so be careful.

  • Can a RMI Server trap an exit event of its client  ?

    Hi all,
    Can a RMI Server trap an exit event of its client ??
    For example
    If I close the client using Ctrl-C, can the Server known what one of its client is closed ??

    You could consider allocating a new remote object per client via some login object. In my book I called this the 'remote session' pattern. That way each client can have its own server-side context, i.e. like an EJB session bean, which can have its own advantages. In fact if you're interested in when a specific client disappears, you must already have some client context so this is a clean solution to that as well.
    Then the session object can use the Unreferenced technique to know when the client has gone away unexpectedly, albeit with a 10 minute delay. This can be tuned via the java.rmi.dgc.leaseValue setting at the server. This works because each session object only has one client.
    If you can't do this and you can't control the client code, I'm not aware of any other solution under RMI.
    Except that as a last resort you could do something really fancy with custom socket factories at both ends that both implement a special ping protocol I suppose, but this is getting pretty hairy and you'd need to understand the RMI wire protocol to make it work.

  • Multiple Clients in SCM/APO 51.

    Hello,
    1.Is it possible to create Golden master client & Testing client in a single SAP SCM/APO5.1 instance and work simultaneously with the BI and APO commands (e.g. RSA1) in both the clients?
    2.Can we have two live cache servers on a single physical hardware?
    3.Can a single live cache server can be connected to two different SAP instance DEV and QAS?
    Regards
    Riya
    SAP basis Consultant

    I do not have a good answer but it seems APO-DP uses BW as Data Mart which results in some restriction in using multiple client. See SAP Note 522569 for details. Moreover in the Multi-client Whitepaper (attached to SAP Note 31557) the table in page 23 mentions Multi-client Status for APO with DP : Not OK and APO w/o DP : Restricted OK.
    Hope this is of some help.
    somnath

  • Making a chat server that supports multiple clients!

    This is what I got so far:
    import java.net.*;
    import java.io.*;
    public class Server{
         public static void main(String [] args){
              ServerSystem ssys = new ServerSystem();
              ssys.ServerMethod();
    class ServerSystem{
         static ServerSocket ss;
         public void ServerMethod(){
              try{
                   ss = new ServerSocket(27700);
                   boolean listening = true;
                   for(;listening;){
                        ClientThread ct = new ClientThread(ss.accept());
                        ct.start();
                        ss.close();
              }catch(Exception e){
                   System.exit(0);
    class ClientThread extends Thread{
         ServerSystem ssys = new ServerSystem();
         ServerSocket ss = ssys.ss;
         public void run(){
              try{
                   BufferedReader in = new BufferedReader(new InputStreamReader(ss.getInputStream()));
                   PrintWriter out = new PrintWriter(ss.getOutputStream(),true);
              }catch(Exception e){
                   System.out.println(e);
    }3 Errors:
    ClientThread ct = new ClientThread(ss.accept()); CONSTRUCTOR : CANNOT RESOLVE SYMBOL
    BufferedReader in = new BufferedReader(new InputStreamReader(ss.getInputStream())); METHOD : CANNOT RESOLVE SYMBOL InputStream
                   PrintWriter out = new PrintWriter(ss.getOutputStream(),true); METHOD : CANNOT RESOLVE SYMBOL OutputStream
    First of all, how do I fix those. Second, am I on the right track for a server that supports multiple clients? Please help me with this.
    Thanks!

    well, since I feel kinda bad for just re-posting the link to the API docs previously posted by supermicus I shall elaborate - though, since my reading for comprehension skills are clearly lacking, I will not attempt to teach you to read.
    This conversation should be held in the "New to Java Technology" forum, BTW.
    Java derives a lot of its power from the huge library of classes that ships with it, which is called the API. These classes are grouped into packages roughly along functional lines, so you should expect to see some relationship between the classes found in a given package - the java.net.* classes all pertain to networking. The API documentation describes three things about each class - fields that are available, constructors that you can use, and methods that you can call. Basically, anything at all that you can do with a given class (ThreadGroup, for instance) can be found in the documentation for that class. Typically (for non-static classes), you call the constructor that seems most appropriate via the "new" keyword, and, using the reference returned from that, you call the method that does what you want. It's all outlined in the docs.
    If you don't get what you need from the docs, then read the appropriate Tutorial (also in the list of links to the left of your screen) find the one on Threads and off you go.
    I hope this helped.
    Lee

  • How to display timed events across multiple days in month view?

    Simple question I suppose, though I don't know if it has an answer. When I put an event spanning multiple days (say, a week long vacation) in iCal, and check the "All Day" box, it shows a nice, accurate, bar going across those days the event I'm entering covers. However, if I give it specific times for the event (e.g. the times of departure and return for said trip), even if those times are a week apart, the event still appears to only cover the starting date when viewed from the month perspective.
    Is there any way I can make the month calendar show all the days during which the event is "happening" so that at a glance I will realize that an entire week is busy?

    Hi,
    You can do it with keyboard shortcuts.
    Select the event. Press Cmd+X. Press Cmd and right or left arrow (depending if it is forward or back in months) until you are in the correct month. Press Cmd+V to pase on the same day in the new month.
    Best wishes
    John M

  • Accessing the same stateful session bean from multiple clients in a clustered environment

    I am trying to access the same stateful session bean from multiple
              clients. I also want this bean to have failover support so we want to
              deploy it in a cluster. The following description is how we have tried
              to solve this problem, but it does not seem to be working. Any
              insight would be greatly appreciated!
              I have set up a cluster of three servers. I deployed a stateful
              session bean with in memory replication across the cluster. A client
              obtains a reference to an instance of one of these beans to handle a
              request. Subsequent requests will have to use the same bean and could
              come from various clients. So after using the bean the first client
              stores the handle to the bean (actually the replica aware stub) to be
              used by other clients to be able to obtain the bean. When another
              client retrieves the handle gets the replica aware stub and makes a
              call to the bean the request seems to unpredictably go to any of the
              three servers rather than the primary server hosting that bean. If the
              call goes to the primary server everything seems to work fine the
              session data is available and it gets backed up on the secondary
              server. If it happens to go to the secondary server a bean that has
              the correct session data services the request but gives the error
              <Failed to update the secondary copy of a stateful session bean from
              home:ejb20-statefulSession-TraderHome>. Then any subsequent requests
              to the primary server will not reflect changes made on the secondary
              and vice versa. If the request happens to go to the third server that
              is not hosting an instance of that bean then the client receives an
              error that the bean was not available. From my understanding I thought
              the replica aware stub would know which server is the primary host for
              that bean and send the request there.
              Thanks in advance,
              Justin
              

              If 'allow-concurrent-call' does exactly what you need, then you don't have a problem,
              do you?
              Except of course if you switch ejb containers. Oh well.
              Mike
              "FBenvadi" <[email protected]> wrote:
              >I've got the same problem.
              >I understand from you that concurrent access to a stateful session bean
              >is
              >not allowed but there is a
              >token is weblogic-ejb-jar.xml that is called 'allow-concurrent-call'
              >that
              >does exactly what I need.
              >What you mean 'you'll get a surprise when you go to production' ?
              >I need to understand becouse I can still change the design.
              >Thanks Francesco
              >[email protected]
              >
              >"Mike Reiche" <[email protected]> wrote in message
              >news:[email protected]...
              >>
              >> Get the fix immediately from BEA and test it. It would be a shame to
              >wait
              >until
              >> December only to get a fix - that doesn't work.
              >>
              >> As for stateful session bean use - just remember that concurrent access
              >to
              >a stateful
              >> session bean is not allowed. Things will work fine until you go to
              >production
              >> and encounter some real load - then you will get a surprise.
              >>
              >> Mike
              >>
              >> [email protected] (Justin Meyer) wrote:
              >> >I just heard back from WebLogic Tech Support and they have confirmed
              >> >that this is a bug. Here is their reply:
              >> >
              >> >There is some problem in failover of stateful session beans when its
              >> >run from a java client.However, it is fixed now.
              >> >
              >> >The fix will be in SP2 which will be out by december.
              >> >
              >> >
              >> >Mike,
              >> >Thanks for your reply. I do infact believe we are correctly using
              >a
              >> >stateful session bean however it may have been misleading from my
              >> >description of the problem. We are not accessing the bean
              >> >concurrently from 2 different clients. The second client will only
              >> >come into play if the first client fails. In this case we want to
              >be
              >> >able to reacquire the handle to our stateful session bean and call
              >it
              >> >from the secondary client.
              >> >
              >> >
              >> >Justin
              >> >
              >> >"Mike Reiche" <[email protected]> wrote in message
              >news:<[email protected]>...
              >> >> You should be using an entity bean, not a stateful session bean
              >for
              >> >this application.
              >> >>
              >> >> A stateful session bean is intended to be keep state (stateful)
              >for
              >> >the duration
              >> >> of a client's session (session).
              >> >>
              >> >> It is not meant to be shared by different clients - in fact, if
              >you
              >> >attempt to
              >> >> access the same stateful session bean concurrently - it will throw
              >> >an exception.
              >> >>
              >> >> We did your little trick (storing/retrieving handle) with a stateful
              >> >session bean
              >> >> on WLS 5.1 - and it did work properly - not as you describe. Our
              >sfsb's
              >> >were not
              >> >> replicated as yours are.
              >> >>
              >> >> Mike
              >> >>
              >> >> [email protected] (Justin Meyer) wrote:
              >> >> >I am trying to access the same stateful session bean from multiple
              >> >> >clients. I also want this bean to have failover support so we want
              >> >to
              >> >> >deploy it in a cluster. The following description is how we have
              >tried
              >> >> >to solve this problem, but it does not seem to be working. Any
              >> >> >insight would be greatly appreciated!
              >> >> >
              >> >> >I have set up a cluster of three servers. I deployed a stateful
              >> >> >session bean with in memory replication across the cluster. A client
              >> >> >obtains a reference to an instance of one of these beans to handle
              >> >a
              >> >> >request. Subsequent requests will have to use the same bean and
              >could
              >> >> >come from various clients. So after using the bean the first client
              >> >> >stores the handle to the bean (actually the replica aware stub)
              >to
              >> >be
              >> >> >used by other clients to be able to obtain the bean. When another
              >> >> >client retrieves the handle gets the replica aware stub and makes
              >> >a
              >> >> >call to the bean the request seems to unpredictably go to any of
              >the
              >> >> >three servers rather than the primary server hosting that bean.
              >If
              >> >the
              >> >> >call goes to the primary server everything seems to work fine the
              >> >> >session data is available and it gets backed up on the secondary
              >> >> >server. If it happens to go to the secondary server a bean that
              >has
              >> >> >the correct session data services the request but gives the error
              >> >> ><Failed to update the secondary copy of a stateful session bean
              >from
              >> >> >home:ejb20-statefulSession-TraderHome>. Then any subsequent requests
              >> >> >to the primary server will not reflect changes made on the secondary
              >> >> >and vice versa. If the request happens to go to the third server
              >that
              >> >> >is not hosting an instance of that bean then the client receives
              >an
              >> >> >error that the bean was not available. From my understanding I
              >thought
              >> >> >the replica aware stub would know which server is the primary host
              >> >for
              >> >> >that bean and send the request there.
              >> >> >
              >> >> >Thanks in advance,
              >> >> >Justin
              >>
              >
              >
              

  • We have created shared folder on multiple client machine in domain environment on different 2 OS like-XP,Vista, etc. from some day's When we facing problem when we are access from host name that shared folder is accessible but same time same computer when

    Hello All,
    we have created shared folder on multiple client machine in domain environment on different 2 OS like-XP,Vista, etc.
    from some day's When we facing problem when we are access from host name that shared folder is accessible but same time same computer when we are trying to access the share folder with IP it asking for credentials i have type again and again
    correct credential but unable to access that. If i re-share the folder then we are access it but when we are restarted the system then same problem is occurring.
    I have checked IP,DNS,Gateway and more each & everything is well.
    Pls suggest us.
    Pankaj Kumar

    Hi,
    According to your description, my understanding is that the same shared folder can be accessed by name, but can’t be accessed be IP address and asks for credentials.
    Please try to enable the option below on the device which has shared folder:
    Besides, check the Advanced Shring settings of shared folder and confrim that if there is any limitation settings.
    Best Regards,
    Eve Wang
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Support, contact [email protected]

Maybe you are looking for

  • Looking for a driver for HP M277dw for MAC OS 10.6.8

    HI friends, I have a new model of HP MFP M277dw. Unfortunately HP does not have a driver for my OS 10.6.8. I don't want to upgrade it. Can you help me where to find a driver. Thank you in advance.

  • What is The Best Virus Removal Method?

    Hey there, I bought my Macbook Pro about a year ago, partially becuase I thought that they couldn't get viruses. Well, last week I found out that my Mac has been sending wierd emails to anybody, and everybody, in my email address book. I ran a virus

  • HT201359 Why did iTunes not use my credit to pay for purchase

    I have redeemed a gift card and It shows my available credit however when I buy a song it is still charging my credit card. How do I make iTunes use my available credit?

  • Mail text indent

    does anyone know if it is possible to indent text while typing in Mail?? Just like setting margin etc in Word I have mail 2.1.3 I hate to have to type in in word 1st and then copy and paste it in an email! Michel

  • Can't use "Calendar" application

    What is a "Calendar Cache"?