Keeping Service Object Method Running

Does anyone have any suggestions how I can handle the followingsituation:
>
We want a service object to begin each morning and beavailable all day.
>
This service object contains a timer event that at specified timeswill
send events to certain users. Our approach this far has been for thefirst
user to sign on in the morning would start a task that would createthe
timer. Each subsequent user would first check if the timer is runningand
if it is, they would bypass this step. This works great until thefirst
user closes the application which in turn kills the task whichcontains the
timer.
How can we start a task that will not be killed when theparent is kille
d?
Any suggestions are greatly appreciated.
TIA
Tony
I'd suggest starting up the service independent of the clients by using
escript. The start task would be put into the INIT method of the
service object. You can put the escript commands in a batch job started
by a job scheduler. You can also shut down the service in the same
manner.
Bill

While I think I understand your thought process that led you to your design you have made an erroneous assumption when it comes to interfaces that has put you off the rails.
Casting to an interface does not magically mean that you can deserialize an object created with a non-existant class.
Which is what you are doing.
Let us say you have two classes...
public class ServisArayuzuServerImplementation implements ServisArayuzuand
public class ServisArayuzuClientImplementation implements ServisArayuzuThe problem is that when the server object is serialized in it's header it says it is a ServisArayuzuServerImplementation. Thus this class MUST exist on the client side if it is to be deserialized. And this MUST happen before any casting etc.
There are two possible solutions for the problem.
1) Use the same class on both sides.
2) Don't use ObjectInput and ObjectOutput streams but serialize the data yourself using DataInput and DataOutput streams. Then you can construct and deconstruct the objects as you need too. And they could be differen types if you wanted. This solution though is more complex so you'll have to decide for yourself.

Similar Messages

  • Re: Service Objects

    Hi Andrew...
    Service Objects, are, in essence, the central concept of any Forte
    application, so I think that every participant in this forum can
    probably offer some type of insight on using Forte Service Objects in
    their application :).
    Any type of shared application functionality is a candidate for
    inclusion in a service object. The definition given on page 156 of the
    Forte Programming Guide states that "[a] service object is a named
    object that represents an existing external resource, a Forte shared
    business service that is shared by multiple users, or a service that is
    replicated to provide failover or load-balancing. The service object
    contains information needed by the service as well as operations that
    the service can perform."
    Service objects are, imho, the most important concept for building a
    successful Forte application, and by far the least well understood. I
    suggest spending a good amount of time familiarizing yourself with the
    Service Object concept, and then understanding the Service Object
    properties (dialog duration, visibility, replication, search paths,
    etc.) so that you can build a scalable, robust, and fault-tolerant
    system to meet your user requirements. Forte is an incredibly powerful
    tool when you understand all of the possibilities you have, especially
    those related to Service Objects.
    In order to get a better understanding of Forte Service objects and how
    they relate to the design and development of your particular system, I
    highly suggest participating in the Forte Object-Oriented Analysis and
    Design (OOAD) course. You can get more information on the course and
    register on-line by visiting the Forte Education website:
    http://www.forte.com/Educate/index.htm. Additionally, you can take a
    look at the Forte manuals, especially Chapter 8 of the Forte Programming
    Guide and throughout the Guide to the Forte Workshops manual.
    To answer one of your other questions... You can pass references to
    objects from a service object back to a client in Forte (you can also,
    for that matter, pass copies of objects - it depends upon your needs).
    Again, to get a better understanding of these concepts, I suggest taking
    the Forte OOAD class.
    I hope this helps! Please let me know if you have any further questions
    - I'd be happy to help.
    -Katie
    Andrew Lowther wrote:
    >
    We are currently in the process of rearchitecting our software systems
    around Forte.
    Could anyone tell me what experiences they have had with building a
    system using Forte Service objects in a multi-tiered system?
    It seems to us that these are intended to be used as high-value
    facade-like interfaces which serve as an entry point to the underlying
    business object model. Is this correct?
    Can we pass a remote object reference back to a client for its
    subsequent use? If not, does this mean that we have to build a local,
    client-based object model to hold the data returned from the service
    object methods?
    Any other assistance you can give will be very much appreciated.
    Thanks
    Andrew Lowther--
    Katie Carty
    Senior Consultant
    Forte Software, Inc.
    http://www.forte.com
    4801 Woodway Drive, Suite 300E
    Houston, Texas 77056
    vmail: (510) 986-3802
    email: [email protected]
    **************************************************

    Andrew,
    We at Per-Se Technologies have developed an approach to alleviate many
    "pains" with using service objects. Some things you will soon discover is
    that although service objects provide fail-over, load balancing, etc., they
    also,
    1. Eat up valuable developer time because it takes time to repartition and
    start partitions in development mode. In development mode (i.e., running
    from the workshops), each developer gets their own copy of all partitions!
    2. Limit the use of compiled libraries due to service object references in
    TOOL code.
    3. Consume valuable server resources because each developer has their own
    copy of the partitions.
    We have several alternatives to address all of the above problems. I am
    currently working on converting a large application so that:
    1. All developers share a single set of service objects/partitions. Each
    developer doesn't have to wait while their copies of the partitions come
    up. Therefore, development time is more fully utilized and server
    resources are dramatically freed up.
    2. Service objects are completely decoupled from an application.
    Therefore, we can compile as much as possible.
    You asked some other questions as well: You should always isolate SO
    references as much as possible. We do this by using a facade. You can
    pass a remote obj. reference to a client for future use.
    Take care!
    Dustin Breese
    Supervising Technical Specialist
    Per-Se Technologies
    From: Andrew Lowther <[email protected]>
    Date: Tue, 24 Feb 1998 16:24:31 -0000
    Subject: Service Objects
    We are currently in the process of rearchitecting our software systems
    around Forte.
    Could anyone tell me what experiences they have had with building a
    system using Forte Service objects in a multi-tiered system?
    It seems to us that these are intended to be used as high-value
    facade-like interfaces which serve as an entry point to the underlying
    business object model. Is this correct?
    Can we pass a remote object reference back to a client for its
    subsequent use? If not, does this mean that we have to build a local,
    client-based object model to hold the data returned from the service
    object methods?
    Any other assistance you can give will be very much appreciated.
    Thanks
    Andrew Lowther

  • Service Objects

    We are currently in the process of rearchitecting our software systems
    around Forte.
    Could anyone tell me what experiences they have had with building a
    system using Forte Service objects in a multi-tiered system?
    It seems to us that these are intended to be used as high-value
    facade-like interfaces which serve as an entry point to the underlying
    business object model. Is this correct?
    Can we pass a remote object reference back to a client for its
    subsequent use? If not, does this mean that we have to build a local,
    client-based object model to hold the data returned from the service
    object methods?
    Any other assistance you can give will be very much appreciated.
    Thanks
    Andrew Lowther

    hi
    Basis Team will maintain some parameter value in the below transactions for the Serivce for Object storage capacity
    RZ10 Maintain system profiles X

  • Error #3343 - XMLExporter Method 'Run' of object '_Application' failed ...

    Hi all,
    I am new to the Migration Workbench tool - so excuse me if I ask some silly questions.
    I have a MSAccess 2002 application with some tables and forms (plus macros) - When run the omwb2002.mde program (version 10.1.0.4.0) - select my mdb file, set the directories and press the "Export Database Schema" button I get an "Error #3343 - XMLExporter Method 'Run' of object '_Application' failed ..." error !
    No Files are created !
    Any help would be greatly appreciated

    Hi,
    You may be receiving the MS Access Error #3343 - Unrecognized database format for one of the following reasons:
    1. You are attempting to open an MS Access database in an older version of MS Access e.g opening a 2002 MDB file on a machine where MS Access 97 is installed.
    Ensure that the Exporter Tool version and the MS Access MDB file version all match the version of MS Access installed on your machine e.g. If attempting to export a 2002 MDB file, you should use the omwb2002.mde and have MS Access 2002 installed on the machine.
    2. You have a linked table to an Excel spreadsheet.
    The Exporter tool supports the extraction of linked tables where the link is to another MS Access database. Links to Excel spreadsheets should be removed prior to export. Make a copy of your MDB file, and remove any such links from the new copy. Then carry out the export.
    3. Your database is corrupt & needs to be repaired.
    From the MS Access menu bar, go to Tools | Database Utilities | Compact and Repair Database... to repair the MDB file.
    I hope this helps. If none of the above steps resolve your issue, please let me know.
    Regards,
    Hilary

  • Access Migration Failure: Error 3021 Method 'Run' of object

    I am doing a proof-of-concept to migrate and convert some Access applications.
    I downloaded the migration tool and then tried the Northwind mdb to verify it worked and all went as planned with a SQL output file.
    When I run it against a working copy of the production mdb it gives this error and produces no output.
    Error #3021 – XMLExporter – Method ‘Run’ of object ‘_Application failed *access.mdb” Database Schema Export did not complete successfully.
    I conjecture it is trying to 'Run' the object and not finding it. How can I work around this or fix the error. I am not an Access expert so any ideas are appreciated.
    slavanaway
    Message was edited by:
    slavanaway

    Hi Ian,
    Thanks for the detailed posting, it's very helpful.
    If you are receiving error #2501, it would appear that there's an issue in opening a report in your MS Access database.
    When you open the MS Access database to be exported, can you successfully view your report(s) or do you receive the #2501 error even then? If you receive this error when accessing the reports, I believe it's relating to the printer setup on the machine. The default printer on the machine you are using may be "imcompatible" with the format of your MS Access report. Try to select another printer on your network as the default, or even try re-installing the default printer. If this does not resolve your issue, please let me know.
    I hope this helps.
    Regards,
    Hilary

  • Window manager service object

    We use a user-visible service object to manage the positioning and
    cascading of our client windows, whether modal or not. Before each
    window performs an Open(), it registers it's reference and title
    with the SO. If there are other active windows of the same type,
    the title is modified to include a colon and count number, as in
    normal Windows applications. After the window performs the Close()
    method, it de-registers itself with the SO. Whilst open, the window
    can also call a method on the SO to cascade all active windows.
    (Every window has a Window\Cascade menu item for this purpose.)
    One of the reasons for using the SO to implement cascading, was to
    enable the user to cascade only the Forte application windows. If a
    non-Forte window gets in the way, you can use the Forte cascade to
    bring the Forte windows in front of it again !
    As an aside, the only windows that we have that are modal, are very
    small input windows that don't need much in the way of behaviour.
    As most of our windows are started using START TASKs, all windows
    need to keep references to child windows that they have
    instantiated, in order to perform orderly shutdowns, iconising and
    re-opening.
    Have fun !
    Justin Levis
    Hydro-Electric Commission
    Hobart, Tasmania
    Australia

    Please read the information posted @
    http://msdn.microsoft.com/en-us/library/windows/desktop/aa969540%28v=vs.85%29.aspx
    Desktop Window Manager
    The desktop composition feature, introduced in Windows Vista, fundamentally changed the way applications display pixels on the screen.  When desktop composition is enabled, individual windows no longer draw directly to the screen or primary display
    device as they did in previous versions of Windows. Instead, their drawing is redirected to off-screen surfaces in video memory, which are then rendered into a desktop image and presented on the display.
    Desktop composition is performed by the Desktop Window Manager (DWM).  Through desktop composition, DWM enables visual effects on the desktop
    as well as various features such as glass window frames, 3-D window transition animations, Windows Flip and Windows Flip3D, and high resolution support.
    The Desktop Window Manager runs as a Windows service. It can be enabled and disabled through the Administrative Tools Control Panel item, under Services, as Desktop Window Manager Session Manager.
    Many of the DWM features can be controlled or accessed by an application through the DWM APIs.  The following documentation describes the features and requirements of the DWM APIs.
    Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”

  • Service Object Init References

    Has anyone come up with a good work around to allow Service Objects to
    reference other service objects in their init methods or during application
    startup. Since we can't specify the order in which Service Objects start,
    is there a way we can execute some code once all Service Objects have come
    online?
    Will this idea work?
    Start a task in the init method that loops for the referenced service object
    to not be nil, then references the needed SO. For example:
    while true do
    if LogMgrSO = Nil then
    task.delay(100);
    else
    exit;
    end if;
    end while;
    Eric Rasmussen
    Project Manager
    Online Resources & Communications Corporation
    (703)394-5128
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Hi,
    Sorry to answer so late ! I left (one year ago may be) some Tool code on
    the Mailing list on that subject.
    May be you have to consider some different cases :
    1&deg;) Is a Service started because it is only instanciated (<> NIL)?
    2&deg;) Forte insures that the first services to be started on a partition
    are DBsession and DBResource Managers.
    3&deg;) A local Service or a distributed service are not exactly treated the
    same way.
    4&deg;) The init() method has a specific way to run : the allocations are
    made at the end.
    1&deg;) When a Service is not NIL it is only that it is instanciated. So
    your initialization sequence is not endded may be or
    the service is not insured to be started properly. It should be
    important if you need to load a cache for instance. I
    would recommand to test that a service is ON (for DBsessions for
    instance) and to add (if possible) a state to determine
    that a service is properly started.
    2&deg;) This is only available if you are inside the same partition on the
    same machine. So if you have to synchronize with
    external ressources from the partition you will need to treat them like
    other services.
    3&deg;) A local Service will be NIL and then instanciated. The classname
    will be the same as in the workshop.
    A distrubuted service (exactly a service which is not on the same
    partition) will have a different classname (Classname+Proxy).
    So the external service proxy may be instanciated but the So May not,
    and you will get a DistributedAccessException.
    4&deg;) The init() method may not be the best location for a synchronization
    if you need to use an array for instance to
    store you dependencies. So I would use a start task on an InitService()
    method to avoid that problem.
    Options :
    - A dependency could be optionnal : after a certain amount of tries you
    can abort synchronization on the service.
    - You can use synchronization on "cold" and "hot" startup of services.
    - You can develop a service agent which cold have instruments to see
    dependencies and states, and commands to stop/start services.
    - The Delay you may play should be different for each service you are
    waiting for.
    - The order of dependencies should have an importance (first put
    mandatory dependancies, and then optional ones).
    - A Service is not only a Service Object, but could also be just a
    reference to an instance through a container for example.
    - Some kind of autoStart : should I start all my services at the
    beginning of my application or could I start some services
    at the first call ? This should be available if you use your own
    application protocole and if your services are inside some
    service managers for instance.
    Remarks :
    Thoses concepts have been tested on a Framework from R2 to R3 of Forte
    with success. With those, you can imagine
    starting the application without knowing if the database is running, the
    application will wait for the database
    to be mounted. An other advantage of the synchronization is that you
    will resolve the naming of the services at
    the begining of the application. Then, you can stop the environment
    manager and the application will still work
    (for the clients which were already started of course). You can also
    imagine transfering your partitions from one
    node to an other at run-time.
    Hope this helps,
    Daniel Nguyen
    Freelance Forte Consultant
    Stephen McHenry wrote:
    >
    At 11:04 AM 10/1/98 -0700, John Jamison wrote:
    begin
    while true do
    begin
    ..attempt "remote" SO reference..
    exit; // while true do loop
    exception
    when e:UsageException do // if in same partition and not yet
    initialized,
    // you get a NIL object exception
    task.errormgr.clear;
    when e:DistributedAccessException do (or RemoteAccessException)
    // if in a different partition, get this
    error
    task.errormgr.clear;
    end;
    event loop
    aTimer : Timer = new (tickInterval=5*1000); // 5 seconds -
    adjust to taste
    aTimer.isActive=true;
    when aTimer.Tick do
    aTimer.IsActive=false;
    exit;
    end event;
    end while;
    end;One of the problems I see with all of these "catch the exception and try
    again" schemes is that they fail to take into account that the SO you are
    calling may, in fact, never appear (due to some sort of problem, of course)
    and then you never exit this loop. It's a "liveness" problem with this
    approach. So, be sure to add some alternate way out after 1 minute (or
    whatever your particular threshold is) and raise an exception yourself.
    Always gotta think about what happens if something goes wrong... ;-)
    Stephen
    |===========================================================================
    ===|
    |Stephen McHenry | Design Consulting |Training courses
    offered: |
    |Advanced Software Tech | | -Distributed
    Obj-Oriented |
    |305 Vineyard Town Ctr #251| [email protected] | Analysis &
    Design |
    |Morgan Hill, CA 95037 | (408) 776-2720 x210 | -Intro to Object
    Technology|
    |USA | http://www.softi.com | -Advanced OO Design
    |
    |===========================================================================
    ===|
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>-
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • Sharing Service Objects / Partitions between applications

    I have 4 apps; to name App1, App2, App3 & App4. They all have public plans Plan1, Plan2 included. These public plans got few DBResMgrs in them. We each of these applications are released, each of them get their partitions with these DBResMgrs in it. Is there anyway I can have a single partition with these DBResMgrs and have all applications share them ? I am ready to explain further, if necessary.

    You should also have a look at reference partitions.
    Partition your first application as normal.
    When you partition your second application create a reference partition for the service objects that exist in the first application and you want to reuse.
    The resulting application will then use the first applications service objects.
    You can also look at using libraries and interfaces as well.
    The reference partition method is the quickest but the library and interface method is more usefull in the long run as you can deploy and use libraries more easily than applications.
    Cheers
    David

  • Loadbalancing a service object

    Hello,
    I tried to loadbalance a service object that has both methods and
    attributes. The first copy of the service object works fine. However, all
    the attributes of the second copy of the service object are nil when a
    client try to use this copy. How can I make those two copies exactly the
    same?
    I am new to Forte. Any input will be greatly appreciated.
    Menghua Xiao
    Regional Transportation District,
    Denver, Colorado, USA

    Menghua Xiao wrote:
    I tried to loadbalance a service object that has both methods and
    attributes. The first copy of the service object works fine. However, all
    the attributes of the second copy of the service object are nil when a
    client try to use this copy. How can I make those two copies exactly the
    same?Ummmmm ...
    How are you initializing these attributes? In your Init method? Do you need
    to refer to any other SOs to do it? Forte does not guarantee the order in
    which service objects are initialized. Referring to other SOs in the Init
    method may not work, or it may work well for a long time and then suddenly
    break when Forte decides to initialize things in a different order in
    response to an upgrade, or to some random change in the application, or for
    no known reason. If you're replicating, things could conceivably get even
    more complex, with different replicates being initialized at different
    times. And if one if the Init methods fails, Forte can't create the service
    object, and your entire application fails to start.
    Furthermore, Forte will tell you that attributes on a service object are a
    bad idea. It's possible that they tell you this because there are bugs
    around it that they're ashamed to tell you about (have you checked Forte's
    web page?). Even if there are no bugs, there are a BUNCH of traps you can
    fall into if you do this. The only time I consider it safe to have
    attributes on a replicated SO is if those attributes can be reliably
    maintained on that SO. This restricts it to:
    * Database connection objects, and other such things that don't need to be
    in synch.
    * Static data that NEVER, NEVER changes.
    The reason for these severe restrictions are that there are no reliable
    ways to keep the two SOs in synch.
    All that said, how can you get away with it? My religion says the best way
    is to turn your attributes into virtual attributes. The quick and dirty way
    to do this is:
    1. Rename the attribute from AttrName to PrivateAttrName, and MAKE IT
    PRIVATE.
    2. Write a GetAttrName method that returns the attribute. This method
    should check to see if the attribute is NIL, and if so load it. It ends
    with "Return PrivateAttrName;".
    3. Re-create AttrName as a virtual attribute, with "GetAttrName ()" (no
    semicolon) as its get expression.
    This approach gets the initialization of the attribute out of the Init
    method, and instead forces initialization on the first reference. Hopefully
    this solves all the problems. If it does not solve them, you ought at least
    to get a useful error message out of your service object this way. I hope.
    Good luck,
    Tom Wyant

  • Screen manager service object

    We use a user-visible service object to manage the positioning and
    cascading of our client windows, whether modal or not. Before each
    window performs an Open(), it registers it's reference and title
    with the SO. If there are other active windows of the same type,
    the title is modified to include a colon and count number, as in
    normal Windows applications. After the window performs the Close()
    method, it de-registers itself with the SO. Whilst open, the window
    can also call a method on the SO to cascade all active windows.
    (Every window has a Window\Cascade menu item for this purpose.)
    One of the reasons for using the SO to implement cascading, was to
    enable the user to cascade only the Forte application windows. If a
    non-Forte window gets in the way, you can use the Forte cascade to
    bring the Forte windows in front of it again !
    As an aside, the only windows that we have that are modal, are very
    small input windows that don't need much in the way of behaviour.
    As most of our windows are started using START TASKs, all windows
    need to keep references to child windows that they have
    instantiated, in order to perform orderly shutdowns, iconising and
    re-opening.
    Have fun !
    Justin Levis
    Hydro-Electric Commission
    Hobart, Tasmania
    Australia

    We use a user-visible service object to manage the positioning and
    cascading of our client windows, whether modal or not. Before each
    window performs an Open(), it registers it's reference and title
    with the SO. If there are other active windows of the same type,
    the title is modified to include a colon and count number, as in
    normal Windows applications. After the window performs the Close()
    method, it de-registers itself with the SO. Whilst open, the window
    can also call a method on the SO to cascade all active windows.
    (Every window has a Window\Cascade menu item for this purpose.)
    One of the reasons for using the SO to implement cascading, was to
    enable the user to cascade only the Forte application windows. If a
    non-Forte window gets in the way, you can use the Forte cascade to
    bring the Forte windows in front of it again !
    As an aside, the only windows that we have that are modal, are very
    small input windows that don't need much in the way of behaviour.
    As most of our windows are started using START TASKs, all windows
    need to keep references to child windows that they have
    instantiated, in order to perform orderly shutdowns, iconising and
    re-opening.
    Have fun !
    Justin Levis
    Hydro-Electric Commission
    Hobart, Tasmania
    Australia

  • Service object start-up

    Hello. We'd like to be able to determine when a TOOL service object
    starts up from within another TOOL service object. I understand the
    problems with service object start up ordering, but I'll summarize
    them here:
    1. You can't reference a service object until it's up
    2. You can't guarantee a service object to be up unless
    a) it's a non-TOOL SO (DB Resource Manager or DB Session)
    b) it's a TOOL SO in another partition which is numerically lower
    than yours
    According to Forte support, we should put our dependant service objects in
    different partitions and use the numerical startup to get them going. For
    example, if SO A depends on SO B, we need SO B in partition 1 and SO A in
    partition 2. Also, if we have A depends on B and nobody else uses B, we
    should probably use A as an umbrella for B.
    But what if we don't want to do this? What if we don't want to take the
    performance hit from the partitioning? What if we've got multiple
    client-visible SOs that interact? We tried this scheme:
    in A.Init():
    super.Init()
    start task Startup()
    in A.Startup():
    while B_SO = NIL do
    task.part.operatingsystem.sleep(SPIN_TIME);
    end while;
    // now do stuff with B_SO
    self.Ready = TRUE; // users can test this to see if A_SO is ready
    The above works sporadically. According to support, that's because
    testing the NIL reference isn't like testing for NIL on a normal object,
    the name service is involved and that can screw things up.
    Anybody have something that works? This seems to be a really stupid
    feature of the system.
    ========================================================================
    Neil Gendzwill, Senior Software Engineer, SED Systems, Saskatoon, Canada
    E-MAIL: [email protected] PHONE: (306) 933-1571 FAX: (306) 933-1486
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    Neil-
    The reason your scheme fails occasionally (I'm pretty sure) is the
    "start task" in the init method.. The only thing you are guaranteed by
    partition order, etc, is that the "init" methods are executed (i.e. the
    objects are instantiated) in the order you want. If you start
    asynchronous tasks from within the init method, all bets are off as to
    whether the spun-off asynchronous task will get done before the next
    service object init() is called or even before the first client is
    allowed to come on line.. All depends on the thread switching, which of
    course cannot be predicted or counted on (hence the term "thread-safe
    code").
    I use something similar to the subsequent writer on the thread (Mark
    Sundsten) except that service objects which need other objects (like
    services requiring DB session brokers) go through a multi-step process
    waiting for the broker to be up and truly ready for business:
    Keep testing for a legal reference to the broker until it is non-NIL
    and no exception
    Post an "areyoualive" event on the broker with suitable
    retry/error-handling until positive response
    The broker, of course, does the start task startup() sort of thing in
    its init method, the final step of which is to begin responding to
    "areyoualive" events with the proper response.
    The final trick is that no services on the service object work (they
    block/wait) until the object has successfully started (including the
    wait for the broker). This is to avoid client requests from being
    processed before the service is ready.
    With this technique, you can put service objects and their brokers
    wherever you want to. I wish it was simpler, but when you enter the
    world of multiple threads you need to carefully plan your startup
    behavior and bullet-proof all code to be thread safe.
    I've also seen techniques where the first actual service request
    performs a startup if it hasn't been done already. Sort of the "lazy
    instantiation" of service-object startups.. Problem is, of course, that
    for the reason outlined above the first client can come alive and begin
    asking for things from the services before asynchronous tasks started in
    the init methods are done. If you go this direction, make sure you
    understand this nuance and have no ansych startups occurring in init
    methods.
    Hope this helps.
    -Greg
    -----Original Message-----
    From: Neil Gendzwill [SMTP:[email protected]]
    Sent: Friday, June 19, 1998 12:48 PM
    To: Users, Forte
    Subject: Service object start-up
    Hello. We'd like to be able to determine when a TOOL service
    object
    starts up from within another TOOL service object. I understand
    the
    problems with service object start up ordering, but I'll
    summarize
    them here:
    1. You can't reference a service object until it's up
    2. You can't guarantee a service object to be up unless
    a) it's a non-TOOL SO (DB Resource Manager or DB Session)
    b) it's a TOOL SO in another partition which is numerically
    lower
    than yours
    According to Forte support, we should put our dependant service
    objects in
    different partitions and use the numerical startup to get them
    going. For
    example, if SO A depends on SO B, we need SO B in partition 1
    and SO A in
    partition 2. Also, if we have A depends on B and nobody else
    uses B, we
    should probably use A as an umbrella for B.
    But what if we don't want to do this? What if we don't want to
    take the
    performance hit from the partitioning? What if we've got
    multiple
    client-visible SOs that interact? We tried this scheme:
    in A.Init():
    super.Init()
    start task Startup()
    in A.Startup():
    while B_SO = NIL do
    task.part.operatingsystem.sleep(SPIN_TIME);
    end while;
    // now do stuff with B_SO
    self.Ready = TRUE; // users can test this to see if A_SO is
    ready
    The above works sporadically. According to support, that's
    because
    testing the NIL reference isn't like testing for NIL on a normal
    object,
    the name service is involved and that can screw things up.
    Anybody have something that works? This seems to be a really
    stupid
    feature of the system.
    ========================================================================
    Neil Gendzwill, Senior Software Engineer, SED Systems,
    Saskatoon, Canada
    E-MAIL: [email protected] PHONE: (306) 933-1571 FAX: (306)
    933-1486
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive
    <URL:http://pinehurst.sageit.com/listarchive/>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

  • How to build sql query for view object at run time

    Hi,
    I have a LOV on my form that is created from a view object.
    View object is read-only and is created from a SQL query.
    SQL query consists of few input parameters and table joins.
    My scenario is such that if input parameters are passed, i have to join extra tables, otherwise, only one table can fetch the results I need.
    Can anyone please suggest, how I can solve this? I want to build the query for view object at run time based on the values passed to input parameters.
    Thanks
    Srikanth Addanki

    As I understand you want to change the query at run time.
    If this is what you want, you can use setQuery Method then use executeQuery.
    http://download.oracle.com/docs/cd/B14099_19/web.1012/b14022/oracle/jbo/server/ViewObjectImpl.html#setQuery_java_lang_String_

  • VMM - Add 2 hosts in cluster. 1st added OK, 2nd Failed Error 416. Retry gives Error 2912 An instance of the service is already running 0x80070420

    Have 2 host cluster as part of infrastructure adding to VMM.
    Added cluster server. 1st had no issue and has picked up it's VMs. Second gave this error below:
    Error (416)
    Agent installation timed out while waiting on service VMMAgentInstaller on host02domain.private.
    Recommended Action
    Ensure that the Windows Installer service is running on host02.domain.private and try the operation again.
    Sure the Windows Installer has nothing to do with this but in case I manually started it on the server without issue.
    On retrying first without starting Windows Installer manually and then doing so in both instances I get:
    Error (2912)
    An internal error has occurred trying to contact the host02.domain.private server: : .
    WinRM: URL: [http://host02.domain.private:5985], Verb: [INVOKE], Method: [GetVirtualizationStatus], Resource: [http://schemas.microsoft.com/wbem/wsman/1/wmi/root/scvmm/AgentManagement]
    An instance of the service is already running (0x80070420)
    Recommended Action
    Check that WS-Management service is installed and running on server host02.domain.private. For more information use the command "winrm helpmsg hresult". If host02.domain.private is a host/library/update server or a PXE server role then ensure
    that VMM agent is installed and running. Refer to http://support.microsoft.com/kb/2742275 for more details.
    I've tried killing the VMM Agent running on the host (which is running now after the attempted deploy) and rerunning - as the second error indicates it can't run because it's already running (far as I can figure). But even though it takes longer to run then
    it still fails with exactly the same error.
    I've checked the host and winrm shows as already running and already set up for remote management.
    Am I missing something?

    Hi Allister,
    What is the version of SCVMM ?
    Did you follow the document ?
    As for VMM 2008R2 :
    "On the Select Host Servers page, in the Computer name box, type either the name of the cluster or the name of any node in the cluster, and then click
    Add."
    "Do not skip Active Directory name verification. If you do, the wizard will add the host as a stand-alone host instead of discovering the cluster nodes "
    "When you specify the name of a failover cluster that was created in Windows Server 2008 or Windows Server 2008 R2, or you specify a node in one of these clusters, the Add Hosts Wizard discovers all nodes in the cluster and adds
    them to VMM. "
    https://technet.microsoft.com/en-us/library/ee236431.aspx
    Also 2012 :
    https://technet.microsoft.com/en-us/library/gg610648.aspx
    For your case , I  would suggest you to stop VMM service and remove the added cluster from
    scvmm then follow the article and add cluster again .
    Best Regards,
    Elton Ji
    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 Subscriber Support, contact [email protected] .

  • FIM MA Export errors. There is an error executing a web service object creation.

    While checking for the permission, we have figured that the Built-In Synchronization account is being deleted by an Expiration Workflow.
    FIM MA Export errors. There is an error executing a web service object creation.
    While checking for the permission, we have figured that the Built-in Synchronization account was deleted by an Expiration Workflow
    Is there a way to restore. Thanks.

    I would re-run FIM setup - I think it can re-create this account
    If you found my post helpful, please give it a Helpful vote. If it answered your question, remember to mark it as an Answer.

  • Re: Service Object events and LockMgr

    On the option that you have considered, I have implemented the same model
    in my previous project (using Java/RMI), but I felt that it is more than
    what is normally needed for concurrency protection.
    I can suggest another option that is worth considering which is in place in
    our app for concurrency.
    Almost every table in our db has created By, created On, modifed By,
    modified On columns. The parent class of all business objects has
    attributes that correspond to these four columns. In addition to these
    four, there is a fifth attribute (introduced when concurrency was built)
    called originalModifiedOn. Upon retrieval from the db, it is set to
    modifiedOn value (from the db), during UPDATE, the value in this column is
    added part of the WHERE clause. So when the second user tried to do save
    the same object, the underlying db update will get a 'zero rows updated'
    which is translated into an application error 'possible concurrency
    error'. The user re-retreives the now 'stale' object before applying their
    edits.
    A lot of these things are and can be built into the framework imposing very
    little work that each Object needs to do to have concurrency protection.
    I am not sure if there is a mention in the Patterns paper of this model,
    but it is very easy to implement and supports what is needed.
    Kishore Puvvada's Mail
    [email protected] on 07/28/99 01:47:00 AM
    To: [email protected]@INTERNET
    cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
    Subject: Service Object events and LockMgr
    Hi folks,
    We're currently looking at strategies for dealing with the simultaneous
    updates to the database from multiple clients (concurrency
    management). That is when two (or more) clients load the same object to
    edit it, then make different changes and save them to the database.
    We have a copy of a Fort&eacute; document (from the "Patterns" course, I
    think) which describes three methods of dealing with this:
    1) Lock the database table row as soon as a client select it for editing
    and hold the lock until it is saved.
    2) Immediately before 'saving' check that the database hasn't changed
    (either by reading what's there before updating, or by using a huge
    'where' clause that contains all unchanged fields)
    3) The Fort&eacute; "LockMgr" pattern, which uses a service object with notifier
    proxies to allow locking and updating notification between the clients.
    Option 3 is obviously the most robust method, but it requires a fair
    amount of coding and could also be a bottleneck for database reads and
    writes.
    But I have another option for which I was looking for opinions. What if
    we had a "Change Event manager" which broadcast an event every time
    a change is made to the database. Each business class would have its
    own event. If the event had the object's primary key as a parameter, then
    clients editing that particular object type could check to see if the object
    currently on screen is the one that changed. That way you could disable
    the 'save' until they had refreshed their on-screen data.
    It's not particularily elegant, but it's reasonably simple to implement. It
    also deals with changes sent across our WAN from other database
    servers.
    But this option is only worthwhile if you can replicate the "Change Event
    manager" SO and still register for an event on the client. Can clients
    register for SO events and receive an event generated by any of the SO's
    replicates? Or when you register for an SO's event do you register for
    only one instance of the SO?
    Thanks in advance for any answers.
    Cheers,
    Duncan Kinnear,
    McCarthy and Associates, Email:
    [email protected]
    PO Box 764, McLean Towers, Phone: +64 6 834 3360
    Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
    Providing Integrated Software to the Meat Processing Industry for over 10
    years
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:
    http://pinehurst.sageit.com/listarchive/forte>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>

    On the option that you have considered, I have implemented the same model
    in my previous project (using Java/RMI), but I felt that it is more than
    what is normally needed for concurrency protection.
    I can suggest another option that is worth considering which is in place in
    our app for concurrency.
    Almost every table in our db has created By, created On, modifed By,
    modified On columns. The parent class of all business objects has
    attributes that correspond to these four columns. In addition to these
    four, there is a fifth attribute (introduced when concurrency was built)
    called originalModifiedOn. Upon retrieval from the db, it is set to
    modifiedOn value (from the db), during UPDATE, the value in this column is
    added part of the WHERE clause. So when the second user tried to do save
    the same object, the underlying db update will get a 'zero rows updated'
    which is translated into an application error 'possible concurrency
    error'. The user re-retreives the now 'stale' object before applying their
    edits.
    A lot of these things are and can be built into the framework imposing very
    little work that each Object needs to do to have concurrency protection.
    I am not sure if there is a mention in the Patterns paper of this model,
    but it is very easy to implement and supports what is needed.
    Kishore Puvvada's Mail
    [email protected] on 07/28/99 01:47:00 AM
    To: [email protected]@INTERNET
    cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
    Subject: Service Object events and LockMgr
    Hi folks,
    We're currently looking at strategies for dealing with the simultaneous
    updates to the database from multiple clients (concurrency
    management). That is when two (or more) clients load the same object to
    edit it, then make different changes and save them to the database.
    We have a copy of a Fort&eacute; document (from the "Patterns" course, I
    think) which describes three methods of dealing with this:
    1) Lock the database table row as soon as a client select it for editing
    and hold the lock until it is saved.
    2) Immediately before 'saving' check that the database hasn't changed
    (either by reading what's there before updating, or by using a huge
    'where' clause that contains all unchanged fields)
    3) The Fort&eacute; "LockMgr" pattern, which uses a service object with notifier
    proxies to allow locking and updating notification between the clients.
    Option 3 is obviously the most robust method, but it requires a fair
    amount of coding and could also be a bottleneck for database reads and
    writes.
    But I have another option for which I was looking for opinions. What if
    we had a "Change Event manager" which broadcast an event every time
    a change is made to the database. Each business class would have its
    own event. If the event had the object's primary key as a parameter, then
    clients editing that particular object type could check to see if the object
    currently on screen is the one that changed. That way you could disable
    the 'save' until they had refreshed their on-screen data.
    It's not particularily elegant, but it's reasonably simple to implement. It
    also deals with changes sent across our WAN from other database
    servers.
    But this option is only worthwhile if you can replicate the "Change Event
    manager" SO and still register for an event on the client. Can clients
    register for SO events and receive an event generated by any of the SO's
    replicates? Or when you register for an SO's event do you register for
    only one instance of the SO?
    Thanks in advance for any answers.
    Cheers,
    Duncan Kinnear,
    McCarthy and Associates, Email:
    [email protected]
    PO Box 764, McLean Towers, Phone: +64 6 834 3360
    Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
    Providing Integrated Software to the Meat Processing Industry for over 10
    years
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:
    http://pinehurst.sageit.com/listarchive/forte>
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>

Maybe you are looking for