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/>

Similar Messages

  • 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/>

  • 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

  • Passing objects by reference in PL/SQL

    Hi,
    I have come across an unexpected problem using object types in PL/SQL that is causing me some grief. I'm from a Java background and am relatively new to Oracle Objects but what I'm trying to do is fairly trivial, I think. The code below illustrates the problem.
    --- cut here ---
    CREATE OR REPLACE TYPE test_obj_t AS OBJECT
    num INTEGER,
    CONSTRUCTOR FUNCTION test_obj_t RETURN SELF AS RESULT
    CREATE OR REPLACE TYPE BODY test_obj_t IS
    CONSTRUCTOR FUNCTION test_obj_t RETURN SELF AS RESULT IS
    BEGIN
    num := 0;
    RETURN;
    END;
    END;
    CREATE OR REPLACE PACKAGE test_obj_ref AS
    PROCEDURE init(o IN test_obj_t);
    PROCEDURE inc;
    FUNCTION get_num RETURN INTEGER;
    END;
    CREATE OR REPLACE PACKAGE BODY test_obj_ref IS
    obj test_obj_t;
    PROCEDURE init(o IN test_obj_t) IS
    BEGIN
    obj := o;
    END;
    PROCEDURE inc IS
    BEGIN
    obj.num := obj.num + 1;
    END;
    FUNCTION get_num RETURN INTEGER IS
    BEGIN
    RETURN obj.num;
    END;
    END;
    --- cut here ---
    The object type test_obj_t holds a integer and the test_obj_ref package holds a 'reference' to an instance of the object.
    To test the above code I run this PL/SQL block:
    declare
    obj test_obj_t;
    begin
    obj := test_obj_t;
    test_obj_ref.init(obj);
    dbms_output.put_line('obj.num='||obj.num);
    dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
    test_obj_ref.inc;
    dbms_output.put_line('obj.num='||obj.num);
    dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
    test_obj_ref.inc;
    dbms_output.put_line('obj.num='||obj.num);
    dbms_output.put_line('test_obj_ref.get_num='||test_obj_ref.get_num);
    end;
    giving the output:
    obj.num=0
    test_obj_ref.get_num=0
    obj.num=0
    test_obj_ref.get_num=1
    obj.num=0
    test_obj_ref.get_num=2
    It appears that the object held by the test_obj_ref package is being incremented as expected, but I would have expected the object declared in the PL/SQL block to be pointing to the same object and so should report the same incremented values.
    I suspect that the object is copied in the call to test_obj_ref.init() so I end up with two object instances, one that is held by the test_obj_ref package and one in the anonymous block. Although, I thought that all IN parameters in PL/SQL are passed by reference and not copied!
    Am I right?
    Is passing objects by reference possible in PL/SQL, if so how?
    I'm using Oracle 10.2.0.3.
    Cheers,
    Andy.

    the object being passed to the test_obj_ref.init+ procedure is passed by reference; however, when you assign it to your package variable obj it is being copied to a new instance. you can pass object instances as parameters to procedures using the +IN OUT [NOCOPY]+ *calling mode, in which case modifications to the attributes of the passed object will be reflected in the calling scope's instance variable.
    oracle's only other notion of an object reference is the +"REF &lt;object-type&gt;"+ datatype, which holds a reference to an object instance stored in an object table or constructed by an object view.
    hope this helps...
    gerard

  • Service objects inside libraries (WAS: Interfaces in Forte -has anyon

    The following message is actually not about interfaces, but libraries:
    > From: Jeanne Hesler <[email protected]>
    > To: [email protected] <[email protected]>
    > Date: Thursday, July 30, 1998 11:12 AM
    > Subject: RE: Interfaces in Forte - has anyone used them?
    >>
    > Just to clarify a few things:
    >>
    1) Just to be 100% correct -- it is actually Libraries that areloaded and
    not Interfaces. The distinction is important because a librarycould
    potentially implement many interfaces (or provide manyimplementations for a
    single interface).
    2) The code in a Library may reference a service object, but itmay not
    define a service object. Of course any SO's referenced by thelibrary
    must already be known to the loading partition. It is OK to havecode like
    this in a library:
    MySO.doSomething();
    The documentation is a little vague on this point, but I haveconfirmed that
    this is true through Tech Support and by experimentation.
    Actually you CAN define and use service objects inside libraries
    (compiled or interpreted) with two restrictions:
    1) You can not define two service objects inside library in different
    projects and call one of them from another. If you need that, both
    service objects must be in the same project.
    2) If service object is defined and used only by library (if it never
    referenced directly by application code), than in order to be able to
    partition application, you will need to create dummy method inside
    application, which will reference this service object (you do not need
    to execute this method - just have in the code).
    WBR,
    Nickolay Sakharov.
    To unsubscribe, email '[email protected]' with
    'unsubscribe forte-users' as the body of the message.
    Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>

    The way stateful Web services are currently handled is through the use of cookies ... once your stub invokes a stateful Web service a cookie is created which routes subseqent requests back to the Web service.
    In your scenario, the problem is given one client has creates Web service 1 and now Web service 2 would like to be able to use that state it really isn't possible unless you engineer a solution yourself ... you would need so somehow set the cookie on your Web service 2 client to that of the original client to Web service 1. State tends to be based around an individual client versus multiple clients for that state.
    There are numerous ways around this but you would be engineering around the issue ... the easiest is to write the state out somewhere so that it can be shared.
    This section of the doc gives a brief overview:
    http://download-west.oracle.com/docs/cd/A97688_06/generic.903/b10004/javaservices.htm
    Lastly be aware there is a bug with timeouts in stateful Web services in Oracle9iAS 9.0.3 that has been fixed in 9.0.4. I can't find the thread here that documents it but when I track it down I will post the link so you can see the workaround.
    Mike.

  • 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

  • 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

  • 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. ”

  • Referencing Service Objects after FailOver

    I have a service object Manager1SO in partition1, that calls a Start method on
    another service object WorkerSO in partition3.
    Manager1SO then monitors WorkerSO by registering for the RemoteAccessEvent on
    WorkerSO.
    When partition2 is brought offline, Manager1SO catches the RemoteAccessEvent on
    WorkerSO successfully, and calls the Start method on WorkerSO again.
    This seems to work a few times in a single environment, but after a while the
    call to the Start method seems to hang.
    When I attempt this kind of processing on 2 connected environments using
    failover, the Manager1SO in partition1 in the environment on which WorkerSO
    failed from cannot reference WorkerSO at all (hangs).
    The Manager2SO in partition2 in the environment on which WorkerSO has failed
    over to, references it okay i.e. the Start method completes.
    If I restart Manager1SO, it then references WorkerSO in its environment rather
    than the environment it failed over to.
    I know this is very light on information, but any help would be appreciated.
    Regards,
    Moris Mihailidis
    Consulting & Technology Department
    CSC
    570 St. Kilda Road, Melbourne VIC 3004
    Ph: 61-3-95364675 Email: mmihailicsc.com.au

    I have a service object Manager1SO in partition1, that calls a Start method on
    another service object WorkerSO in partition3.
    Manager1SO then monitors WorkerSO by registering for the RemoteAccessEvent on
    WorkerSO.
    When partition2 is brought offline, Manager1SO catches the RemoteAccessEvent on
    WorkerSO successfully, and calls the Start method on WorkerSO again.
    This seems to work a few times in a single environment, but after a while the
    call to the Start method seems to hang.
    When I attempt this kind of processing on 2 connected environments using
    failover, the Manager1SO in partition1 in the environment on which WorkerSO
    failed from cannot reference WorkerSO at all (hangs).
    The Manager2SO in partition2 in the environment on which WorkerSO has failed
    over to, references it okay i.e. the Start method completes.
    If I restart Manager1SO, it then references WorkerSO in its environment rather
    than the environment it failed over to.
    I know this is very light on information, but any help would be appreciated.
    Regards,
    Moris Mihailidis
    Consulting & Technology Department
    CSC
    570 St. Kilda Road, Melbourne VIC 3004
    Ph: 61-3-95364675 Email: mmihailicsc.com.au

  • Service Objects with Dialog duration

    m
    Hi Forte`ans,
    I am trying to listen to an event from a service object which has a
    dialog duation of Message.The service object is configured for
    failover.
    I get an exception ( not an error message ) saying :
    SYSTEM ERROR: Invalid attempt to register for an event on an object of
    class (CKBaseServiceMgrProxy) which has a dialog duration of
    message. The
    semantics of message duration do not guarantee that the same object
    instance will service each message, which is in conflict with the
    semantics of event registration (which requires that the same object
    instance to which the event is registered for generates the event;
    these are two separate actions). To disable this restriction,
    restart this process with cfg:do:4 specified.
    If I make the dialog duration of the SO Session, it works without
    screaming.
    Does this mean I cannot listen to events from such SO( Failover
    enabled with Message duration?) Is it because the event loop may still
    point to the failed SO and Forte wants to avoid such situations???
    Can somebody throw some light on this..?
    Thanks
    Ajith Kallambella M
    International Business Corporation.

    We ran into this same problem when converting an application from R1 to
    R2. In R1, you were allowed to do this. However, Forte won't
    guarantee, even in a non-replicated, non-failover partition, that it
    won't swap objects under certain situations unless the dialog duration
    is session. If this happened, you would lose your registration and not
    even know it. The recommended solution is for the client partition to
    pass a reference to an object anchored in its partition to the service
    object in the remote partition. The service object can then post events
    on the anchored object, which is guaranteed to be there during the life
    of that client partition. The logger flag was designed for backwards
    compatibility. It's not really recommended, but it's not supposed to
    have much overhead if you do use it. We already had a client
    notification architecture in place, so we re-worked our application to
    use it in the cases where we had been using direct registrations. Hope
    this helps -- Chris
    Chris Kelly, IS Architect
    Andersen Windows
    From:
    [email protected][SMTP:[email protected].
    net.in]
    Sent: Thursday, September 18, 1997 1:44 PM
    To: [email protected]
    Subject: Service Objects with Dialog duration
    m
    Hi Forte`ans,
    I am trying to listen to an event from a service object which
    has a
    dialog duation of Message.The service object is configured for
    failover.
    I get an exception ( not an error message ) saying :
    SYSTEM ERROR: Invalid attempt to register for an event on an
    object of
    class (CKBaseServiceMgrProxy) which has a dialog duration of
    message. The
    semantics of message duration do not guarantee that the same
    object
    instance will service each message, which is in conflict with
    the
    semantics of event registration (which requires that the same
    object
    instance to which the event is registered for generates the
    event;
    these are two separate actions). To disable this restriction,
    restart this process with cfg:do:4 specified.
    If I make the dialog duration of the SO Session, it works without
    screaming.
    Does this mean I cannot listen to events from such SO( Failover
    enabled with Message duration?) Is it because the event loop may
    still
    point to the failed SO and Forte wants to avoid such
    situations???
    Can somebody throw some light on this..?
    Thanks
    Ajith Kallambella M
    International Business Corporation.

  • Re: (forte-users) Service Object

     

    what about subclassing it and putting the agent stuff in there
    Matthew Middleton Ph: +61 2 9239 4972
    Oryx Software Consultant Fax: +61 2 9239 4900
    Lawpoint Pty. Ltd. E-mail matthewmwriteme.com
    ----- Original Message -----
    From: Ramarao Pabbaraju <RPabbarajulmimsno.com>
    To: <kamranaminyahoo.com>
    Sent: Tuesday, February 29, 2000 9:02 AM
    Subject: (forte-users) Service Object
    Hi,
    We have a class X which we would like to use it for service object andalso
    to instantiate it locally to call some methods. We would like to have
    system agents for the service object, but not for objects instantiated
    locally. In other words, if the object is used for service object, only
    then we want the agents (customized) to be initialized. How do we find out
    whether it is service object in Init method self? Service objectproperties
    (like isAnchored) or attributes (given from ServiceObject
    properties/initial values window) are set only at the end of init method.
    One workaround we could think of is start a task at the end of init method
    and also delay the execution of method. Is there any clean way of doing
    this?
    Thanks in advance,
    Ramarao
    IonIdea
    For the archives, go to: http://lists.xpedior.com/forte-users and use
    the login: forte and the password: archive. To unsubscribe, send in a new
    email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com

  • 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

  • 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

  • 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.

  • 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.

Maybe you are looking for