RE: (forte-users) Named Anchored Obj-EnvironmentFailover
I did some playing around with this stuff as well. I can tell you a few
things.
1) The search path option of connected environments only works for SO's, not
for named anchors.
2) When EnvA creates a directory "/glob", which contains object "obj1", then
EnvA owns directory "/glob". Even after restarting environments. If EnvB
tries to add a subdirectory to "/glob" or inserts its own objects into this
path, then the situation becomes unstable. It doesn't immediately produce an
error, but things go wrong anyway. Is this a bug or expected behaviour? I
don't know. I just learned not to do this. Every environment must place it's
named anchors in it's own tree. Directories can't be shared.
3) I think the relative name "glob/obj1" should work, but only if you set
the ObjectLocationMgr to start looking at the root. Default, it will start
looking in it's own environment basepath. But I don't have any experience
with this.
Pascal Rottier
Atos Origin Nederland (BAS/West End User Computing)
Tel. +31 (0)10-2661223
Fax. +31 (0)10-2661199
E-mail: Pascal.Rottiernl.origin-it.com
++++++++++++++++++++++++++++
Philip Morris (Afd. MIS)
Tel. +31 (0)164-295149
Fax. +31 (0)164-294444
E-mail: Rottier.Pascalpmintl.ch
-----Original Message-----
From: Master Programmer [mailto:masterprghotmail.com]
Sent: Monday, January 08, 2001 11:13 PM
To: forte-userslists.xpedior.com
Subject: (forte-users) Named Anchored Obj-Environment Failover
Hi to all,
We connect from EnvA to EnvB giving the user directory parameter as / and
set the Environment Search Path
as EnvA:EnvB. From both environments we start and register
'/glob/obj1' named anchored objects with the same name.
From a client we connect to EnvA and bind to'/glob/obj1' when we shutdown EnvA partition it fails-over to
EnvB. And then we restart EnvA partition. We restart/rebind the client and
try to use object. We see that it is using the EnvB object.
Although we started the primary environment object again.
It is not using the search path. Once we shutdown secondary environment
it starts using primary environment object.
When we try to use relative path when we are binding the object
First parameter ('glob/obj1') No first slash. Trying 3rd parameter
for bind function or just using environment search path, Is is not able to
find the object. From nsls command I figured out that
under the root directory
/forte/UUID of ENVA/node
/site
/UUID of ENVB
/glob/obj1
names are available. When we use relative path (without slash)
is it trying to find /glob/obj1 under the /forte/UUID of ENVA
but we are registering the name under the root.
What is the reason of this odd behaviour or is this a bug?
Any answer will be appreciated,
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
I did some playing around with this stuff as well. I can tell you a few
things.
1) The search path option of connected environments only works for SO's, not
for named anchors.
2) When EnvA creates a directory "/glob", which contains object "obj1", then
EnvA owns directory "/glob". Even after restarting environments. If EnvB
tries to add a subdirectory to "/glob" or inserts its own objects into this
path, then the situation becomes unstable. It doesn't immediately produce an
error, but things go wrong anyway. Is this a bug or expected behaviour? I
don't know. I just learned not to do this. Every environment must place it's
named anchors in it's own tree. Directories can't be shared.
3) I think the relative name "glob/obj1" should work, but only if you set
the ObjectLocationMgr to start looking at the root. Default, it will start
looking in it's own environment basepath. But I don't have any experience
with this.
Pascal Rottier
Atos Origin Nederland (BAS/West End User Computing)
Tel. +31 (0)10-2661223
Fax. +31 (0)10-2661199
E-mail: Pascal.Rottiernl.origin-it.com
++++++++++++++++++++++++++++
Philip Morris (Afd. MIS)
Tel. +31 (0)164-295149
Fax. +31 (0)164-294444
E-mail: Rottier.Pascalpmintl.ch
-----Original Message-----
From: Master Programmer [mailto:masterprghotmail.com]
Sent: Monday, January 08, 2001 11:13 PM
To: forte-userslists.xpedior.com
Subject: (forte-users) Named Anchored Obj-Environment Failover
Hi to all,
We connect from EnvA to EnvB giving the user directory parameter as / and
set the Environment Search Path
as EnvA:EnvB. From both environments we start and register
'/glob/obj1' named anchored objects with the same name.
From a client we connect to EnvA and bind to'/glob/obj1' when we shutdown EnvA partition it fails-over to
EnvB. And then we restart EnvA partition. We restart/rebind the client and
try to use object. We see that it is using the EnvB object.
Although we started the primary environment object again.
It is not using the search path. Once we shutdown secondary environment
it starts using primary environment object.
When we try to use relative path when we are binding the object
First parameter ('glob/obj1') No first slash. Trying 3rd parameter
for bind function or just using environment search path, Is is not able to
find the object. From nsls command I figured out that
under the root directory
/forte/UUID of ENVA/node
/site
/UUID of ENVB
/glob/obj1
names are available. When we use relative path (without slash)
is it trying to find /glob/obj1 under the /forte/UUID of ENVA
but we are registering the name under the root.
What is the reason of this odd behaviour or is this a bug?
Any answer will be appreciated,
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
Similar Messages
-
Named Anchored Obj-Environment Failover
Hi to all,
We connect from EnvA to EnvB giving the user directory parameter as / and
set the Environment Search Path
as EnvA:EnvB. From both environments we start and register
'/glob/obj1' named anchored objects with the same name.
From a client we connect to EnvA and bind to'/glob/obj1' when we shutdown EnvA partition it fails-over to
EnvB. And then we restart EnvA partition. We restart/rebind the client and
try to use object. We see that it is using the EnvB object.
Although we started the primary environment object again.
It is not using the search path. Once we shutdown secondary environment
it starts using primary environment object.
When we try to use relative path when we are binding the object
First parameter ('glob/obj1') No first slash. Trying 3rd parameter
for bind function or just using environment search path, Is is not able to
find the object. From nsls command I figured out that
under the root directory
/forte/UUID of ENVA/node
/site
/UUID of ENVB
/glob/obj1
names are available. When we use relative path (without slash)
is it trying to find /glob/obj1 under the /forte/UUID of ENVA
but we are registering the name under the root.
What is the reason of this odd behaviour or is this a bug?
Any answer will be appreciated,Hi Juliesmiley,
According to your description, I recommend you check the conditions required for an automatic failover.
• Primary replica and secondary replica are both configured for syschronous-commit mode and set to AUTOMATIC failover.
• All availability databases that are defined in the availability group must be in a SYNCHRONIZED state between the primary replica and the secondary replica.
• The Windows Server Failover Clustering (WSFC) cluster has quorum.
• The primary replica has become unavailable.
For more information, please review the following articles.
Failover and Failover Modes (AlwaysOn Availability Groups)
Troubleshooting automatic failover problems in SQL Server 2012 AlwaysOn environments
Thanks,
Lydia Zhang -
RE: Named anchored objects
Albert,
In my case I was using a named anchored object to get a handle to an actual
service object. My named object that I registered in the name service was
an intermediary to which I did not maintain a connection. So I have not
explicitly tested what you are asking.
However, I too was not using a hard coded reference to the SO, and fail over
and load balancing worked fine. The functions of fail over and load
balancing are not done by the service object but by the name service, proxy
and router. Since you are getting a proxy back any time you do a lookup in
the name service I would think that fail over should work with any anchored
object that is registered in the name service. When you do a RegisterObject
call you will notice that one of the arguments is the session duration,
which implies to me that fail over will be handled the same as for service
objects.
Load balancing adds another wrinkle. Load balancing is handled by a router.
You must get a proxy to the router and not a proxy to an instance of the
object that the router is doing the load balancing for. In the latter
scenario you will be bypassing the router. If you are creating, anchoring
and registering your objects dynamically you will not have a router so you
will not be able to load balance! This applies even if the objects are
instantiated within partitions that are load balanced because you will still
be getting proxies back to a particular instance of the anchored objects.
There are ways to accomplish load balancing between objects that you
register yourself. However, the best solution will vary depending on the
actual problem trying to be solved. If you would like to discuss this
further, include a little more detail about the scenario you need to
implement and I will give you what I know.
BTY what I have outlined above also applies to getting references via a
system agent.
Sean
Cornice Consulting, Inc.
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of Albert Dijk
Sent: Friday, July 03, 1998 11:01 AM
To: [email protected]
Subject:
Alex, David, Jez, Sean,...
My question about both solutions (using Nameservice and agents) is:
If I reach a remote service object using either a BindObject or an agent, do
fail-over and load-balancing work the same way as they normally do when
using a hard coded reference to the SO.
Albert Dijk
From: Sean Brown[SMTP:[email protected]]
Reply To: [email protected]
Sent: Thursday, June 25, 1998 6:55 AM
To: Ananiev, Alex; [email protected]
Subject: RE: multiple named objects with the same name and
interface
Alexander,
I can not comment on the speed difference because I never tested it.
But, I
will say that we looked at the agent solution at a client sight
before. I
will give the same warning I gave them. If you go the agent direction
you
are now using agents for a purpose that they were not intended. Even
though
it technically works, as soon as you start using a piece of
functionality in
a way the developer did not intend it to be used you run the risk of
forward
compatibility problems. By this I mean, since agents were not
originally
intended to be used to look up service / anchored object references,
it may
not work in the future because it is not likely to be given
consideration in
any future design.
As we all know, programmers are always stretching the bounds of the
tools
they use and you may have a good reason (i.e. performance). I just
wanted to
let you know the possible risk.
One final note on a limitation of using system agents to obtain
references
to anchored objects. You can not access agents across environments.
So, if
you have connected environments and need to get references to services
in
another environment for fail-over or whatever, you will not be able to
do it
with agents.
Just some thoughts!
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of Ananiev, Alex
Sent: Wednesday, June 24, 1998 12:14 PM
To: '[email protected]'
Subject: RE: multiple named objects with the same name and interface
David,
The problem with dynamic binding is that in this case you have to keep
the reference to the service object somewhere. You don't want to call
"bindObject" every time you need to use this service object, "bind" is
a
time-consuming operation, even on the same partition. Keeping
reference
could be undesirable if your object could be moved across partitions
(e.g. business object).
The alternative solution is to use agents. You can create custom
agent,
make it a subagent of an active partition agent and use it as a
placeholder for whatever service you need. "FindSubAgent" works much
faster than "bindObject", we verified that and agent is "user-visible"
by its nature.
Alexander
From: "Sean Brown" <[email protected]>
Date: Wed, 24 Jun 1998 09:12:55 -0500
Subject: RE: multiple named objects with the same name and interface
David,
I actually determined it through testing. In my case I did not want
this to
happen and was trying to determine why it was happing. It makes sense
if
you think about it. Forte is trying to avoid making a remote method
invocation if it can.
Now, for anything more complex than looking locally first and if none
is
found give me any remote instance you can find, you will need to do
more
work. Using a naming scheme like Jez suggests below works well.
Sean
- -----Original Message-----
From: Jez Sygrove [<a href="mailto:[email protected]">mailto:[email protected]</a>]
Sent: Wednesday, June 24, 1998 4:34 AM
To: [email protected]; 'David Foote'
Cc: [email protected]
Subject: RE: multiple named objects with the same name and interface
David,
there's a mechanism used within SCAFFOLDS that allows the
location of the 'nearest' SO when more than one is available.
It involves registering each duplicated SO under three dynamically
built
names. The names include the partition, the node or the environment
name.
When wishing to locate the nearest SO the BO builds a SO name using
its
own partition and asks the name service for that.
If there is an SO registered under that name then it must be in the
same
partition and all is well. No cross partition calls.
If not, then the BO builds the name using its node and asks the name
service for that.
This means that if there is an SO outside the BO partition but still
on
the same node then this can be used. Again, relatively 'local'.
If neither of these work then the BO has to resort to an environment
wide search.
It may be that this approach could be adapted / adopted; I like it's
ingenuity.
Cheers,
Jez
From: David Foote[SMTP:[email protected]]
Reply To: David Foote
Sent: 24 June 1998 03:17
To: [email protected]
Cc: [email protected]
Subject: RE: multiple named objects with the same name and
interface
Sean,
First, thank you for your response. I have wondered about this fora
long time.
I looked at the documentation for ObjectLocationManager and on page
327
of the Framework Library and AppletSupport Library Guide indescribing
the BindObject method Forte says:
"The name service allows more than one anchored object (from
different
partitions) to be registered in the name service under the same
registration name. When you invoke the BindObject method with a
request
for a name that has duplicate registration entries, the BindObject
method finds an entry corresponding to an active partition, skipping
any
entries that do not. If no such active partition is found, or if the
requested name is not found in the name service registry, a
RemoteAccessException will be raised when the BindObject method is
invoked."
My question is: How did you discover that in the case of duplicate
registrations the naming service will return the local object if one
exists? This is not apparent from the documentation I have quoted.
Is
it documented elsewhere? Or did you determine it empirically?
David N. Foote,
Consultant
----Original Message Follows----
David,
First I will start by saying that this can be done by using named
anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get mostof
the
behavior you desire. When you do a lookup in the name service
(BindObject
method) it will first look in the local partition and see if thereis
a
local copy and give you that copy. By anchoring the object and
manually
registering it in the name service you are programmatically creating
your
own SO without defining it as such in the development environment.
BTW
in
response to your item number 1. This should be the case there as
well.
If
your "mobile" object is in the same partition where the serviceobject
he is
calling resides, you should get a handle to the local instance ofthe
service object.
Here is the catch, if you make a bind object call and there is no
local
copy
you will get a handle to a remote copy but you can not be sure which
one!
It end ups as more or less a random selection. Off the top of myhead
and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href=
"mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There aretwo
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value
to
remote objects), cannot safely reference a Service Object unless it
has
environment visibility, but this forces the overhead of a remote
method
call when it might not otherwise be necessary. If it were possibleto
place a copy of the same Service Object (with user visibility) ineach
partition, the overhead of a remote method call could be avoided.
This
would only be useful for a service object whose state could besafely
replicated.
2) My second scenario also involves mobile objects referencing a
Service
Object, but this time I would like the behavior of the calledService
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same
name
and the same interface in each partition, but varying the
implementation
with the partition.
Does anyone have any thoughts about why this would be a good thingor
a
bad thing?
David N. Foote
Consultant
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:<a href="http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
>
>
>
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>Albert,
In my case I was using a named anchored object to get a handle to an actual
service object. My named object that I registered in the name service was
an intermediary to which I did not maintain a connection. So I have not
explicitly tested what you are asking.
However, I too was not using a hard coded reference to the SO, and fail over
and load balancing worked fine. The functions of fail over and load
balancing are not done by the service object but by the name service, proxy
and router. Since you are getting a proxy back any time you do a lookup in
the name service I would think that fail over should work with any anchored
object that is registered in the name service. When you do a RegisterObject
call you will notice that one of the arguments is the session duration,
which implies to me that fail over will be handled the same as for service
objects.
Load balancing adds another wrinkle. Load balancing is handled by a router.
You must get a proxy to the router and not a proxy to an instance of the
object that the router is doing the load balancing for. In the latter
scenario you will be bypassing the router. If you are creating, anchoring
and registering your objects dynamically you will not have a router so you
will not be able to load balance! This applies even if the objects are
instantiated within partitions that are load balanced because you will still
be getting proxies back to a particular instance of the anchored objects.
There are ways to accomplish load balancing between objects that you
register yourself. However, the best solution will vary depending on the
actual problem trying to be solved. If you would like to discuss this
further, include a little more detail about the scenario you need to
implement and I will give you what I know.
BTY what I have outlined above also applies to getting references via a
system agent.
Sean
Cornice Consulting, Inc.
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]">mailto:[email protected]]On</a> Behalf Of Albert Dijk
Sent: Friday, July 03, 1998 11:01 AM
To: [email protected]
Subject:
Alex, David, Jez, Sean,...
My question about both solutions (using Nameservice and agents) is:
If I reach a remote service object using either a BindObject or an agent, do
fail-over and load-balancing work the same way as they normally do when
using a hard coded reference to the SO.
Albert Dijk
From: Sean Brown[SMTP:[email protected]]
Reply To: [email protected]
Sent: Thursday, June 25, 1998 6:55 AM
To: Ananiev, Alex; [email protected]
Subject: RE: multiple named objects with the same name and
interface
Alexander,
I can not comment on the speed difference because I never tested it.
But, I
will say that we looked at the agent solution at a client sight
before. I
will give the same warning I gave them. If you go the agent direction
you
are now using agents for a purpose that they were not intended. Even
though
it technically works, as soon as you start using a piece of
functionality in
a way the developer did not intend it to be used you run the risk of
forward
compatibility problems. By this I mean, since agents were not
originally
intended to be used to look up service / anchored object references,
it may
not work in the future because it is not likely to be given
consideration in
any future design.
As we all know, programmers are always stretching the bounds of the
tools
they use and you may have a good reason (i.e. performance). I just
wanted to
let you know the possible risk.
One final note on a limitation of using system agents to obtain
references
to anchored objects. You can not access agents across environments.
So, if
you have connected environments and need to get references to services
in
another environment for fail-over or whatever, you will not be able to
do it
with agents.
Just some thoughts!
Sean
-----Original Message-----
From: [email protected]
[<a href="mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of Ananiev, Alex
Sent: Wednesday, June 24, 1998 12:14 PM
To: '[email protected]'
Subject: RE: multiple named objects with the same name and interface
David,
The problem with dynamic binding is that in this case you have to keep
the reference to the service object somewhere. You don't want to call
"bindObject" every time you need to use this service object, "bind" is
a
time-consuming operation, even on the same partition. Keeping
reference
could be undesirable if your object could be moved across partitions
(e.g. business object).
The alternative solution is to use agents. You can create custom
agent,
make it a subagent of an active partition agent and use it as a
placeholder for whatever service you need. "FindSubAgent" works much
faster than "bindObject", we verified that and agent is "user-visible"
by its nature.
Alexander
From: "Sean Brown" <[email protected]>
Date: Wed, 24 Jun 1998 09:12:55 -0500
Subject: RE: multiple named objects with the same name and interface
David,
I actually determined it through testing. In my case I did not want
this to
happen and was trying to determine why it was happing. It makes sense
if
you think about it. Forte is trying to avoid making a remote method
invocation if it can.
Now, for anything more complex than looking locally first and if none
is
found give me any remote instance you can find, you will need to do
more
work. Using a naming scheme like Jez suggests below works well.
Sean
- -----Original Message-----
From: Jez Sygrove [<a href="mailto:[email protected]">mailto:[email protected]</a>]
Sent: Wednesday, June 24, 1998 4:34 AM
To: [email protected]; 'David Foote'
Cc: [email protected]
Subject: RE: multiple named objects with the same name and interface
David,
there's a mechanism used within SCAFFOLDS that allows the
location of the 'nearest' SO when more than one is available.
It involves registering each duplicated SO under three dynamically
built
names. The names include the partition, the node or the environment
name.
When wishing to locate the nearest SO the BO builds a SO name using
its
own partition and asks the name service for that.
If there is an SO registered under that name then it must be in the
same
partition and all is well. No cross partition calls.
If not, then the BO builds the name using its node and asks the name
service for that.
This means that if there is an SO outside the BO partition but still
on
the same node then this can be used. Again, relatively 'local'.
If neither of these work then the BO has to resort to an environment
wide search.
It may be that this approach could be adapted / adopted; I like it's
ingenuity.
Cheers,
Jez
From: David Foote[SMTP:[email protected]]
Reply To: David Foote
Sent: 24 June 1998 03:17
To: [email protected]
Cc: [email protected]
Subject: RE: multiple named objects with the same name and
interface
Sean,
First, thank you for your response. I have wondered about this fora
long time.
I looked at the documentation for ObjectLocationManager and on page
327
of the Framework Library and AppletSupport Library Guide indescribing
the BindObject method Forte says:
"The name service allows more than one anchored object (from
different
partitions) to be registered in the name service under the same
registration name. When you invoke the BindObject method with a
request
for a name that has duplicate registration entries, the BindObject
method finds an entry corresponding to an active partition, skipping
any
entries that do not. If no such active partition is found, or if the
requested name is not found in the name service registry, a
RemoteAccessException will be raised when the BindObject method is
invoked."
My question is: How did you discover that in the case of duplicate
registrations the naming service will return the local object if one
exists? This is not apparent from the documentation I have quoted.
Is
it documented elsewhere? Or did you determine it empirically?
David N. Foote,
Consultant
----Original Message Follows----
David,
First I will start by saying that this can be done by using named
anchored
objects and registering them yourself in the name service. There is
documentation on how to do this. And by default you will get mostof
the
behavior you desire. When you do a lookup in the name service
(BindObject
method) it will first look in the local partition and see if thereis
a
local copy and give you that copy. By anchoring the object and
manually
registering it in the name service you are programmatically creating
your
own SO without defining it as such in the development environment.
BTW
in
response to your item number 1. This should be the case there as
well.
If
your "mobile" object is in the same partition where the serviceobject
he is
calling resides, you should get a handle to the local instance ofthe
service object.
Here is the catch, if you make a bind object call and there is no
local
copy
you will get a handle to a remote copy but you can not be sure which
one!
It end ups as more or less a random selection. Off the top of myhead
and
without going to the doc, I am pretty sure that when you register an
anchored object you can not limit it's visibility to "User".
Sean
-----Original Message-----
From: [email protected]
[<a href=
"mailto:[email protected]]On">mailto:[email protected]]On</a> Behalf Of David Foote
Sent: Monday, June 22, 1998 4:51 PM
To: [email protected]
Subject: multiple named objects with the same name and interface
All,
More than once, I have wished that Forte allowed you to place named
objects with the same name in more than one partition. There aretwo
situations in which this seems desirable:
1) Objects that are not distributed, but are mobile (passed by value
to
remote objects), cannot safely reference a Service Object unless it
has
environment visibility, but this forces the overhead of a remote
method
call when it might not otherwise be necessary. If it were possibleto
place a copy of the same Service Object (with user visibility) ineach
partition, the overhead of a remote method call could be avoided.
This
would only be useful for a service object whose state could besafely
replicated.
2) My second scenario also involves mobile objects referencing a
Service
Object, but this time I would like the behavior of the calledService
Object to differ with the partition from which it is called.
This could be accomplished by placing Service Objects with the same
name
and the same interface in each partition, but varying the
implementation
with the partition.
Does anyone have any thoughts about why this would be a good thingor
a
bad thing?
David N. Foote
Consultant
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:<a href="http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
>
>
>
Alexander Ananiev
Claremont Technology Group
916-558-4127
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:<a href=
"http://pinehurst.sageit.com/listarchive/">http://pinehurst.sageit.com/listarchive/</a>> -
RE: forte-users-digest V1 #322
Re: "We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated." from Van Vuong
<[email protected]>
This was in regards to copying a set of object from a server to client.
An implicit clone is being done. This also copyies objects they want to
remain on the server.
I believe the normal method of doing this is to anchor the server side
objects. Then when the deep clone occurs, it stops at the anchored
objects generating a proxy. That can also have other affects you do not
want but will at least stop the copying.
From: owner-forte-users-digest
Sent: Tuesday, April 15, 1997 8:09 AM
To: forte-users-digest
Subject: forte-users-digest V1 #322
forte-users-digest Tuesday, 15 April 1997 Volume 01 :
Number 322
How does deep copy apply to arrays?
Re: Global Variables
Re: Global Variables
Using the Edit commands in a menu
Re: Global Variables
Re: How does deep copy apply to arrays?
From: Van Vuong <[email protected]>
Date: Mon, 14 Apr 1997 17:16:46 -0500
Subject: How does deep copy apply to arrays?
I have a service object that has a method that returns an array of
objects. The return type for the method is defined with the copy option.
I found documentation that states that the copy option creates a deep
copy of the return variable on the partition that called the method.
My question is: If the return type for the method is an array of
objects, will the copy option create copies of all objects/elements in
the array?
We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated.
Thanks in advance,
Van Vuong
Phone: 972.985.5289
Pager: 972.320.2232
VoiceNow Pager: 972.330.0822
E-mail: [email protected]
PAGE NET
From: David Bell <[email protected]>
Date: Mon, 14 Apr 1997 22:44:19 +0000
Subject: Re: Global Variables
I got so much mail about and the object location manager, so
I'll continue ...
To make the thing truly portable, regardless of partition,
you need to register the object with a name that is made
up on the fly.
The easisest way to do this is to make up a name composed of
nodename (hopefully unique) plus the process ID. This should
guarantee that you get to the correct object even if there are
several instances around.
Get the nodename from the operating system, then use the partition
agent to ask for the PID. Form a unique name by concatenating these
two piecies of information.
// set up this app's subdirectory namespace
ObjName : TextData = new(Value = '/MyApp/');
// add nodename
ObjName.Concat(task.part.operatingsystem.nodename);
// get PID
Partition : ActivePartitionAgent
= ActivePartitionAgent(task.part.ActPartAgent);
Instrument : ConfigValueInst
= ConfigValueInst(Partition.FindInstrument('ProcessID'));
// add PID to name
Objname.Concat(Instrument.GetData.TextValue);
Now register an anchored object with the object location
manager
// get the object location manager
olm : ObjectLocationMgr;
olm = task.Part.ObjectLocationMgr;
// register my object with the name
olm.RegisterObject(name = Objname, object = MyObj);
Once it's registered, ask the object location manager for a handle
so we can use it. Build the name, get hold of the object
location manager, as above, then invoke BindObject on it.
theObj =
(ClassOfMyObj)(olm.BindObject(name=Objname, classType=ClassOfMyObj));
If the names are formed in the same way, this call should return
a handle to the object of message duration - you can set up
session or transaction duration if required in the RegisterObject
call.
In some versions of Forte, before V.2.F.0, this call not work for
objects located in the same partition.
To get at the instruments, you will need to include the SystemMonitor
Library.
To come back to some other points, as Tom Wynant points out, you can
have a user visible service object in a server partition.
The problem comes when what you really want is the same user visible
service object in lots of different partitions so that you can offer
the same service - but locally.
Today there is no way to do this oustide of client partitions without
resorting to something similar to that presented above.
- David
David Bell Tel : +44 1344 482100
Voice mail : +44 1344 353716
Forte Software Limited Mobile : +44 378 300613
Apex House
London Road Email : mailto: [email protected]
Bracknell Web : http://www.forte.com
Berkshire
RG12 2XH
UK
From: Pierre Gelli <[email protected]>
Date: Tue, 15 Apr 1997 09:09:39 +0200
Subject: Re: Global Variables
Hello folks,
Here is my idea on the topic.
Although one normally doesn't need global variables in a OO system, there
are cases when it's useful : a read cache of data available in the local
active partition. This saves the overhead of accessing the data on a
remote=
SO.
I read the solutions described by David Bell (location manager) and David
Krieger (hack of the partition.appTitle).
There is another way I think is a bit cleaner.
It takes benefit of the fact that a custom system agent can be attached
an
object (in our case the local cache containing the global variables).
Any active partition of the application then contains one such custom
agent.
Any class needing a global variable instantiates a small object, which is
a
manager of the custom agent. Its purpose is to ask the active partition
for
the custom agent, and then for the cache. If the agent doesn't exist it
creates it as well has the local cache; if the agent exists, it returns
the
cache.
There is a cache class.
It is derived into one class to be the "cache server" broadcasting an
event
when some cache data changes. This class is used to create a cache
server=
SO.
The cache class is also derived into a "local cache" class. It knows how
to
initialize it from the cache server. It listens to the event for updating
its local data from the cache server SO when needed.
Enough for the machinery.
Then, for any instance of a class that needs a global variable,
only two lines of code are needed, at initialization time, to get a
reference to the local cache of the partition, then a global variable
isaccessed as if part of a local object. This is quite affordable.
This design guaranties that there is automatically one and only one
up-to-date cache object in any active partition (running on a client or
on a
server). The local cache is seen as a local object by all objects that
use
it (no SO there). This design makes no assumption on the partitioning
that
will take place later. Which is I think one key strength of Fort=E9.
If one is interested I can ship some code that illustrates these ideas.
Hope this helps.
Pierre Gelli
ADP GSI
Payroll and Human Resources Management
72-78, Grande Rue, F-92310 SEVRES
phone : +33 1 41 14 86 42 (direct) +33 1 41 14 85 00 (reception desk)
fax : +33 1 41 14 85 99
From: Bryan Gentile <[email protected]>
Date: Tue, 15 Apr 1997 09:01:35 -0400
Subject: Using the Edit commands in a menu
I was wondering if anyone knows how to code for the edit menu submenu
items
like cut, copy, and paste. I am trying to use these in my menu, but I
cannot find anything about how to code for them. Is there anything in
the
help or any examples to look at. I have been unsuccessful in finding
anything about this.
Thanks
From: [email protected]
Date: Tue, 15 Apr 1997 9:08:01 -0400 (EDT)
Subject: Re: Global Variables
[email protected] writes:
<Snip!>
Unfortunately all Forte Service Objects share a single name
space. I thought from the documentation that User Visible
Service Objects would work for me. However, when I tried User
Visible Service Objects, they didn't quite do the trick because
what I wanted was identically named service objects that resolve
to a different local instance for each partition.You're right. You can put the user-visible service object in any
partition you like, but it must go in one and only one
partition. Rats. I can see why it's this way (based on the
minimal implementation of the name server), but I can think of
some good reasons why it shouldn't be. In fact, I may need to
move some methods around based on this discussion. Again, rats!
Tom Wyant
"The greatest danger of communication is the illusion that it has
occurred." (wish I knew who said that!).
From: [email protected]
Date: Tue, 15 Apr 1997 09:54:10 -0500
Subject: Re: How does deep copy apply to arrays?
Copy option always copies deep. Remember, also if you pass the array
accross partitions, whether you specify copy or not, it is going to copy
and copy deep.
In an array, I am not sure if have the problem, because unless the array
in-turn holds a huge tree, the array object may be wide, but not deep.
Some thing to think about??
Venkat
End of forte-users-digest V1 #322
*********************************Re: "We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated." from Van Vuong
<[email protected]>
This was in regards to copying a set of object from a server to client.
An implicit clone is being done. This also copyies objects they want to
remain on the server.
I believe the normal method of doing this is to anchor the server side
objects. Then when the deep clone occurs, it stops at the anchored
objects generating a proxy. That can also have other affects you do not
want but will at least stop the copying.
From: owner-forte-users-digest
Sent: Tuesday, April 15, 1997 8:09 AM
To: forte-users-digest
Subject: forte-users-digest V1 #322
forte-users-digest Tuesday, 15 April 1997 Volume 01 :
Number 322
How does deep copy apply to arrays?
Re: Global Variables
Re: Global Variables
Using the Edit commands in a menu
Re: Global Variables
Re: How does deep copy apply to arrays?
From: Van Vuong <[email protected]>
Date: Mon, 14 Apr 1997 17:16:46 -0500
Subject: How does deep copy apply to arrays?
I have a service object that has a method that returns an array of
objects. The return type for the method is defined with the copy option.
I found documentation that states that the copy option creates a deep
copy of the return variable on the partition that called the method.
My question is: If the return type for the method is an array of
objects, will the copy option create copies of all objects/elements in
the array?
We wish to eliminate any object references to the service object's
partition. Any insight would be greatly appreciated.
Thanks in advance,
Van Vuong
Phone: 972.985.5289
Pager: 972.320.2232
VoiceNow Pager: 972.330.0822
E-mail: [email protected]
PAGE NET
From: David Bell <[email protected]>
Date: Mon, 14 Apr 1997 22:44:19 +0000
Subject: Re: Global Variables
I got so much mail about and the object location manager, so
I'll continue ...
To make the thing truly portable, regardless of partition,
you need to register the object with a name that is made
up on the fly.
The easisest way to do this is to make up a name composed of
nodename (hopefully unique) plus the process ID. This should
guarantee that you get to the correct object even if there are
several instances around.
Get the nodename from the operating system, then use the partition
agent to ask for the PID. Form a unique name by concatenating these
two piecies of information.
// set up this app's subdirectory namespace
ObjName : TextData = new(Value = '/MyApp/');
// add nodename
ObjName.Concat(task.part.operatingsystem.nodename);
// get PID
Partition : ActivePartitionAgent
= ActivePartitionAgent(task.part.ActPartAgent);
Instrument : ConfigValueInst
= ConfigValueInst(Partition.FindInstrument('ProcessID'));
// add PID to name
Objname.Concat(Instrument.GetData.TextValue);
Now register an anchored object with the object location
manager
// get the object location manager
olm : ObjectLocationMgr;
olm = task.Part.ObjectLocationMgr;
// register my object with the name
olm.RegisterObject(name = Objname, object = MyObj);
Once it's registered, ask the object location manager for a handle
so we can use it. Build the name, get hold of the object
location manager, as above, then invoke BindObject on it.
theObj =
(ClassOfMyObj)(olm.BindObject(name=Objname, classType=ClassOfMyObj));
If the names are formed in the same way, this call should return
a handle to the object of message duration - you can set up
session or transaction duration if required in the RegisterObject
call.
In some versions of Forte, before V.2.F.0, this call not work for
objects located in the same partition.
To get at the instruments, you will need to include the SystemMonitor
Library.
To come back to some other points, as Tom Wynant points out, you can
have a user visible service object in a server partition.
The problem comes when what you really want is the same user visible
service object in lots of different partitions so that you can offer
the same service - but locally.
Today there is no way to do this oustide of client partitions without
resorting to something similar to that presented above.
- David
David Bell Tel : +44 1344 482100
Voice mail : +44 1344 353716
Forte Software Limited Mobile : +44 378 300613
Apex House
London Road Email : mailto: [email protected]
Bracknell Web : http://www.forte.com
Berkshire
RG12 2XH
UK
From: Pierre Gelli <[email protected]>
Date: Tue, 15 Apr 1997 09:09:39 +0200
Subject: Re: Global Variables
Hello folks,
Here is my idea on the topic.
Although one normally doesn't need global variables in a OO system, there
are cases when it's useful : a read cache of data available in the local
active partition. This saves the overhead of accessing the data on a
remote=
SO.
I read the solutions described by David Bell (location manager) and David
Krieger (hack of the partition.appTitle).
There is another way I think is a bit cleaner.
It takes benefit of the fact that a custom system agent can be attached
an
object (in our case the local cache containing the global variables).
Any active partition of the application then contains one such custom
agent.
Any class needing a global variable instantiates a small object, which is
a
manager of the custom agent. Its purpose is to ask the active partition
for
the custom agent, and then for the cache. If the agent doesn't exist it
creates it as well has the local cache; if the agent exists, it returns
the
cache.
There is a cache class.
It is derived into one class to be the "cache server" broadcasting an
event
when some cache data changes. This class is used to create a cache
server=
SO.
The cache class is also derived into a "local cache" class. It knows how
to
initialize it from the cache server. It listens to the event for updating
its local data from the cache server SO when needed.
Enough for the machinery.
Then, for any instance of a class that needs a global variable,
only two lines of code are needed, at initialization time, to get a
reference to the local cache of the partition, then a global variable
isaccessed as if part of a local object. This is quite affordable.
This design guaranties that there is automatically one and only one
up-to-date cache object in any active partition (running on a client or
on a
server). The local cache is seen as a local object by all objects that
use
it (no SO there). This design makes no assumption on the partitioning
that
will take place later. Which is I think one key strength of Fort=E9.
If one is interested I can ship some code that illustrates these ideas.
Hope this helps.
Pierre Gelli
ADP GSI
Payroll and Human Resources Management
72-78, Grande Rue, F-92310 SEVRES
phone : +33 1 41 14 86 42 (direct) +33 1 41 14 85 00 (reception desk)
fax : +33 1 41 14 85 99
From: Bryan Gentile <[email protected]>
Date: Tue, 15 Apr 1997 09:01:35 -0400
Subject: Using the Edit commands in a menu
I was wondering if anyone knows how to code for the edit menu submenu
items
like cut, copy, and paste. I am trying to use these in my menu, but I
cannot find anything about how to code for them. Is there anything in
the
help or any examples to look at. I have been unsuccessful in finding
anything about this.
Thanks
From: [email protected]
Date: Tue, 15 Apr 1997 9:08:01 -0400 (EDT)
Subject: Re: Global Variables
[email protected] writes:
<Snip!>
Unfortunately all Forte Service Objects share a single name
space. I thought from the documentation that User Visible
Service Objects would work for me. However, when I tried User
Visible Service Objects, they didn't quite do the trick because
what I wanted was identically named service objects that resolve
to a different local instance for each partition.You're right. You can put the user-visible service object in any
partition you like, but it must go in one and only one
partition. Rats. I can see why it's this way (based on the
minimal implementation of the name server), but I can think of
some good reasons why it shouldn't be. In fact, I may need to
move some methods around based on this discussion. Again, rats!
Tom Wyant
"The greatest danger of communication is the illusion that it has
occurred." (wish I knew who said that!).
From: [email protected]
Date: Tue, 15 Apr 1997 09:54:10 -0500
Subject: Re: How does deep copy apply to arrays?
Copy option always copies deep. Remember, also if you pass the array
accross partitions, whether you specify copy or not, it is going to copy
and copy deep.
In an array, I am not sure if have the problem, because unless the array
in-turn holds a huge tree, the array object may be wide, but not deep.
Some thing to think about??
Venkat
End of forte-users-digest V1 #322
********************************* -
RE: (forte-users) FW: (forte-users)
Hi there
Thanks very much for the solution - just wanted to let you know . We
implemented the design that technote 11378 suggested .
It worked .
Thanks very much
Cheers
Jen
-----Original Message-----
From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
Sent: Tuesday, 20 March, 2001 9:21 PM
To: 'forte-userslists.xpedior.com'
Subject: (forte-users) FW: (forte-users)
Hi David,
The problem is that the SO uses an attribute of its class ACBAccount as
the ObjectReference pointer. SO is not a stateless object. The possible
scenario before crash can be that client A and B calls SO at the same
time. A's thread creates ACBAccount gets the ObjectReference. At this
point B's thread is activated, does the same as A creates new
ObjectReference. Probably the next switch between A and B will be in the
Connect() (B should wait for OLE server). If A is reactivated it doesn't
get the original own reference but the B's reference. It can cause the
crash and means that a thread can use reference created in some other
thread.
Regards,
Zenon
-----Original Message-----
From: David McPaul [SMTP:dmcpaullumley.com.au]
Sent: Monday, March 19, 2001 11:52 PM
To: 'forte-userslists.xpedior.com'
Subject: RE: (forte-users)
Jenni,
As Zenon has pointed out, technote 11378 talks about problems that
can occur if the calls made to an OLE object are not from within the same
thread the OLE object was created in. It goes on to show a design to
avoid
this.
However, the code you have given DOES communicate to the OLE object
in the same thread as it was created. So the problem as I see it is more
likely to be that the OLE object is not being garbage collected. Although
you do explicitly NIL out the ACBAccount object there is a technote 12453
that deals with the need to set the ObjectReference of CDispatch objects
to
NIL to allow the OLE object to be completely reclaimed by the garbage
collector. Failure to do so when using code that creates a new OLE object
every time you ask for an account validation will eventually run the
partition out of memory.
As pointed out in a previous post you can also increase
FORTE_STACK_SIZE but this will delay the problem not correct it.
Rather than create the connection each time you may want to think
about redesigning the method as shown in tech note 11378.
Cheers
David
-----Original Message-----
From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
Sent: Tuesday, March 20, 2001 5:05 AM
To: 'Els, Jenni'
Cc: 'forte-userslists.xpedior.com'
Subject: RE: (forte-users)
Hi Jenni,
The most important issue by designing an OLE connection between a Forte
server partition and an OLE component is taking into account that an OLE
object can be referenced from the NT thread in Forte partition that it was
created in. It is the reason that you have no problems with your mini-app
in
single-threaded version.
This problem is discussed in the Technote 11378. You can find a workaround
for your problem there, too.
Regards,
Zenon
-----Original Message-----
From: Els, Jenni [SMTP:JElsnbs.co.za]
Sent: Monday, March 19, 2001 2:28 AM
To: 'forte-userslists.xpedior.com'
Subject: (forte-users)
Hi there
We have this situation
We are calling a Service Object (in the server partition) from ourclient
partition.This service object calls a method which calls a DLLregistered
on our server (VB code) . This VB code access a database on anotherserver
.(DSN set up on our server ).The database is sql server .
We are having the problem where for about 3 hours in the morning , the
system works perfectly. We then get a segmentation violation on this
partition . When we run interpreted we can see that this is an OLEinvoked
exception. The partition does not always show as offline in econsole
and
because it does not , we cannot 'online' another . We cannot take the
entire app down as everything hangs . Eventually our technical depthas
to
down the server
We set up a mini-app looping through and calling the DLL to simulate
the
problem . It worked fine. When we put another asynchronous task in the
method to call the service object , it erred quite soon. We thencreate
an
attribute of type mutex and locked using that. The mini-app worked.
However our app in development eventually hanged (without the
partition
coming though) .
The service Object is an environment visible service object in asingle
(non-replicated partition) . It has a dialog duration = session .
In the project is
ACB : ACBObject
ACBObject : CDispatch (shared = disallowed , distributed =
disallowed, transactional = disallowed, monitored = allowed)
ACBValidator : Object (shared = allowed , distributed =allowed,
transactional = disallowed, monitored = disallowed)
ACBVaidatorSO : ACBValidator
In this method we have this code to call the DLL
self.ACBAccount = new;
self.ACBAccount.CreateUsingCLSID(classID='{2EFD3084-7B05-11D3-857F-00105A4
8CEA0}');
pErrorMessage = new;
acbaccount.BankCode = pBankCode.value;
acbaccount.BranchCode = pBranchCode.value;
at : VariantI2 = new;
at.Value = pAccountType.Value;
acbaccount.AccountType = at.Value;
acbaccount.AccountNo = pAccountNo.value;
begin
acbaccount.Connect();
exception
when e : GenericException do
ex : GenericException = new;
ex.SetWithParams(severity = SP_ER_ERROR,
message = 'There was an error connecting to the database');
raise ex;
end;
begin
err : i2 = acbaccount.ValidateAccount();
if err != 0 then
pErrorMessage.SetValue(acbaccount.ErrDescriptionStr(iErrorCode= err));
acbaccount.Disconnect();
return false;
else
pErrorMessage.SetValue('The account is
valid!!');
acbaccount.Disconnect();
self.ACBAccount = NIL ;
return true;
end if;
exception
when e : GenericException do
acbaccount.Disconnect();
ex : GenericException = new;
ex.SetWithParams(severity = SP_ER_ERROR,
message = 'There was an error Validating the account');
Task.ErrorMgr.AddError(ex);
task.errormgr.ShowErrors();
raise e;
end;
exception
when e : GenericException do
acbaccount.Disconnect();
Task.ErrorMgr.ShowErrors();
raise e;
If anybody has any suggestions , they would be most welcome
Thanks very much
Cheers
Jenni Els************************************************************************Th
is e-mail is intended for the use of the individual or entity named above
and may contain information that is confidential and privileged. If you
are not the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this e-mail is strictly
prohibited. If you have received this e-mail in error, please notify us
immediately at helpdesklumley.com.au and destroy the original message.
While this mail and any attachments have been scanned for common computer
viruses and found to be virus free, we recommend you also perform your own
virus checking processes before opening any attachments.
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--
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
WARNING:
Any unauthorised use or interception of this email is illegal. If this email
is not intended for you, you may not copy, distribute nor disclose the
contents to anyone. Save for bona fide company matters, the BoE Group does
not accept any responsibility for the opinions expressed in this email.
For further details please see: http://www.nbs.co.za/emaildisclaim.htmHi there
Thanks very much for the solution - just wanted to let you know . We
implemented the design that technote 11378 suggested .
It worked .
Thanks very much
Cheers
Jen
-----Original Message-----
From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
Sent: Tuesday, 20 March, 2001 9:21 PM
To: 'forte-userslists.xpedior.com'
Subject: (forte-users) FW: (forte-users)
Hi David,
The problem is that the SO uses an attribute of its class ACBAccount as
the ObjectReference pointer. SO is not a stateless object. The possible
scenario before crash can be that client A and B calls SO at the same
time. A's thread creates ACBAccount gets the ObjectReference. At this
point B's thread is activated, does the same as A creates new
ObjectReference. Probably the next switch between A and B will be in the
Connect() (B should wait for OLE server). If A is reactivated it doesn't
get the original own reference but the B's reference. It can cause the
crash and means that a thread can use reference created in some other
thread.
Regards,
Zenon
-----Original Message-----
From: David McPaul [SMTP:dmcpaullumley.com.au]
Sent: Monday, March 19, 2001 11:52 PM
To: 'forte-userslists.xpedior.com'
Subject: RE: (forte-users)
Jenni,
As Zenon has pointed out, technote 11378 talks about problems that
can occur if the calls made to an OLE object are not from within the same
thread the OLE object was created in. It goes on to show a design to
avoid
this.
However, the code you have given DOES communicate to the OLE object
in the same thread as it was created. So the problem as I see it is more
likely to be that the OLE object is not being garbage collected. Although
you do explicitly NIL out the ACBAccount object there is a technote 12453
that deals with the need to set the ObjectReference of CDispatch objects
to
NIL to allow the OLE object to be completely reclaimed by the garbage
collector. Failure to do so when using code that creates a new OLE object
every time you ask for an account validation will eventually run the
partition out of memory.
As pointed out in a previous post you can also increase
FORTE_STACK_SIZE but this will delay the problem not correct it.
Rather than create the connection each time you may want to think
about redesigning the method as shown in tech note 11378.
Cheers
David
-----Original Message-----
From: Adamek, Zenon [mailto:ZAdamekpurolator.com]
Sent: Tuesday, March 20, 2001 5:05 AM
To: 'Els, Jenni'
Cc: 'forte-userslists.xpedior.com'
Subject: RE: (forte-users)
Hi Jenni,
The most important issue by designing an OLE connection between a Forte
server partition and an OLE component is taking into account that an OLE
object can be referenced from the NT thread in Forte partition that it was
created in. It is the reason that you have no problems with your mini-app
in
single-threaded version.
This problem is discussed in the Technote 11378. You can find a workaround
for your problem there, too.
Regards,
Zenon
-----Original Message-----
From: Els, Jenni [SMTP:JElsnbs.co.za]
Sent: Monday, March 19, 2001 2:28 AM
To: 'forte-userslists.xpedior.com'
Subject: (forte-users)
Hi there
We have this situation
We are calling a Service Object (in the server partition) from ourclient
partition.This service object calls a method which calls a DLLregistered
on our server (VB code) . This VB code access a database on anotherserver
.(DSN set up on our server ).The database is sql server .
We are having the problem where for about 3 hours in the morning , the
system works perfectly. We then get a segmentation violation on this
partition . When we run interpreted we can see that this is an OLEinvoked
exception. The partition does not always show as offline in econsole
and
because it does not , we cannot 'online' another . We cannot take the
entire app down as everything hangs . Eventually our technical depthas
to
down the server
We set up a mini-app looping through and calling the DLL to simulate
the
problem . It worked fine. When we put another asynchronous task in the
method to call the service object , it erred quite soon. We thencreate
an
attribute of type mutex and locked using that. The mini-app worked.
However our app in development eventually hanged (without the
partition
coming though) .
The service Object is an environment visible service object in asingle
(non-replicated partition) . It has a dialog duration = session .
In the project is
ACB : ACBObject
ACBObject : CDispatch (shared = disallowed , distributed =
disallowed, transactional = disallowed, monitored = allowed)
ACBValidator : Object (shared = allowed , distributed =allowed,
transactional = disallowed, monitored = disallowed)
ACBVaidatorSO : ACBValidator
In this method we have this code to call the DLL
self.ACBAccount = new;
self.ACBAccount.CreateUsingCLSID(classID='{2EFD3084-7B05-11D3-857F-00105A4
8CEA0}');
pErrorMessage = new;
acbaccount.BankCode = pBankCode.value;
acbaccount.BranchCode = pBranchCode.value;
at : VariantI2 = new;
at.Value = pAccountType.Value;
acbaccount.AccountType = at.Value;
acbaccount.AccountNo = pAccountNo.value;
begin
acbaccount.Connect();
exception
when e : GenericException do
ex : GenericException = new;
ex.SetWithParams(severity = SP_ER_ERROR,
message = 'There was an error connecting to the database');
raise ex;
end;
begin
err : i2 = acbaccount.ValidateAccount();
if err != 0 then
pErrorMessage.SetValue(acbaccount.ErrDescriptionStr(iErrorCode= err));
acbaccount.Disconnect();
return false;
else
pErrorMessage.SetValue('The account is
valid!!');
acbaccount.Disconnect();
self.ACBAccount = NIL ;
return true;
end if;
exception
when e : GenericException do
acbaccount.Disconnect();
ex : GenericException = new;
ex.SetWithParams(severity = SP_ER_ERROR,
message = 'There was an error Validating the account');
Task.ErrorMgr.AddError(ex);
task.errormgr.ShowErrors();
raise e;
end;
exception
when e : GenericException do
acbaccount.Disconnect();
Task.ErrorMgr.ShowErrors();
raise e;
If anybody has any suggestions , they would be most welcome
Thanks very much
Cheers
Jenni Els************************************************************************Th
is e-mail is intended for the use of the individual or entity named above
and may contain information that is confidential and privileged. If you
are not the intended recipient, you are hereby notified that any
dissemination, distribution or copying of this e-mail is strictly
prohibited. If you have received this e-mail in error, please notify us
immediately at helpdesklumley.com.au and destroy the original message.
While this mail and any attachments have been scanned for common computer
viruses and found to be virus free, we recommend you also perform your own
virus checking processes before opening any attachments.
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--
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
WARNING:
Any unauthorised use or interception of this email is illegal. If this email
is not intended for you, you may not copy, distribute nor disclose the
contents to anyone. Save for bona fide company matters, the BoE Group does
not accept any responsibility for the opinions expressed in this email.
For further details please see: http://www.nbs.co.za/emaildisclaim.htm -
How to close one browser window and return to a named anchor on a page in another window
I'm working on a website that has several book images at the bottom of each page. I have set it up so when the user clicks on a book another smaller browser window opens up with a description of the book. At the bottom of book description window, I have a close button which I added the window.close() behavior to. But I'd like to not just have the window close but return the user to the bottom of the original page where I have the books, an area that I have applied a named anchor to. Any ideas on how I can get this done.
I'd appreciate any and all help.I haven't tried to customize this lightbox extension much. But I'm pretty sure the size of the box is pre-determined by image size. Bigger image, bigger box. And that is coded into one of the Lightbox javascript libraries.
As to placing a link in the caption, sure. Just paste your html link code into the Lightbox Caption Panel like so.
<a href="http://amazon.com"> Buy now from Amazon</a>
There is much more detailed information about Lightbox and how it works at the huddled together website.
http://www.huddletogether.com/projects/lightbox/
Nancy O.
Alt-Web Design & Publishing
Web | Graphics | Print | Media Specialists
www.alt-web.com/
www.twitter.com/altweb -
Named Anchors not working in Apple Mail
Hi... we have an HTML Email Newsletter. About 2 months ago the named anchors (links) from the top to different parts of the email stopped working right. For years, named anchors would simply go to the section of the email that you desired. The location of the anchor would appear at the top of the email window. Recently, the links have still worked, but Apple Mail would put the location at the bottom of the email, requiring the user to scroll down to see the content. And even more recently, now we have to double-click the link at the top to get it to work, and still incorrectly.
At first, this seemed to only not work in system 10.6. But now it's working the same way in 10.5. I am surprised a web search hasn't found anyone else with this problem. It affects not only our emails, but any email that has a link from the top of the email to any other part of the email.
Is this just a bug in Apple Mail or is there a fix? Thanks in advance!I have exactly this same problem - anchors now move the cursor so that the desired text is just off the bottom of the message window, and one has to scroll to see it.
This is obviously an error - it is inconsistent with all web / anchor behavior I am familiar with.
What's going on????? -
Re: forte-users-digest V1 #89
forte-users-digest Tuesday, 8 October 1996 Volume 01 : Number 089
From: Alexander Ananiev <[email protected]>
Date: Tue, 08 Oct 1996 16:36:14 -0500
Subject: "Single DBSession" approach
The standard Forte approach for the database access assumes
that one DBSession handles requests from several users
(clients), so the database connection is not associated with
the particular user. This significantly impacts the
architecture of the Forte application. Some of the problems
caused by this approach are:
1) An application-level security system should be developed
instead of using the DBMS security system. Suffice it to say
that application-level security system cannot provide the
protection from back-door access to the database.
2) The application cannot utilize the DBMS locking mechanism
for the case when the record is retrieved to the client for
editing purposes ("long" transaction).
It means that SecurityManager and LockManager should be
developed to resolve these problems. This does not seem to be
very good solution because these objects are intended to repeat
the functionality of the DBMS. And these parts of the
application may become pretty complicated. For example, my
project's experience shows that the development of the lock
manager is not a trivial task and most likely this lock manager
will be worse than the DBMS locking mechanism in terms of
reliability and performance just because it acts as an outside
program to the database. Besides, this approach could cause
serious problems if the database can be updated by non-Forte
applications (e.g., by some legacy system or batch process).
"One DBSession per several users" approach makes sense if each
user connection to the database is implemented as one
server process.(Another good argument in favor of single
DBsession is a heterogeneous environment where there is no
stable connection to one database, but here I'm talking about a
"regular" application that uses only one DBMS.) Since most of
the time this process is idle, then, of course, decreasing the
number of processes leads to better server utilization and
performance. But by its sense, database connection is just the
current transaction ID (with the user id, of course). So the
connection could be just a number that should be passed to the
DBMS along with each request and then DBMS can create a thread
to handle the request or forward it to the next available
process if it does not support multithreading.
DBMS vendors realize this and some of them already implemented
this approach (I know that Oracle and Informix did that and
Sybase was mentioned in the recent "one-threaded DBSession"
discussion). And one-threaded DBSession that lives on the
server doesn't fit well to that. The better approach would be
to make DBSession the attribute of the TransactionHandle
object, so the current connection will always be passed from
the client to the service and this service can work through
this connection.
So, my point is that the application should let DBMS do its
work and use as much of the functionality of the DBMS as
possible and the "single DBsession" approach doesn't help it to
do that.
I would be glad to hear any other opinion on this topic. I
think that the "DBsession" problem is extremely important for
any multi-tier application (for example, all Web applications
are facing this problem). I'm also interested in how people
are dealing with this problem on other projects, for example if
there are some projects where the alternative approach (one
DBSession per each user) was implemented and what problems were
encountered during that.
Alexander Ananyev
Price Waterhouse
End of forte-users-digest V1 #89
One of the first issues that needs to be addressed is that passing
DBSessions from partition to partition is a huge performance hit. When
Forte executes a SQL SELECT or FETCH statement on a DBSession that exists
outside the current partition (DBSessions are "anchored" objects that are
accessed via proxies.) Forte fetches the result set into the partition
containing the DBSession and then passes proxies or creates copies into
the partition where the SQL code is located. These are some of the
largest performance hits you can take in Forte.forte-users-digest Tuesday, 8 October 1996 Volume 01 : Number 089
From: Alexander Ananiev <[email protected]>
Date: Tue, 08 Oct 1996 16:36:14 -0500
Subject: "Single DBSession" approach
The standard Forte approach for the database access assumes
that one DBSession handles requests from several users
(clients), so the database connection is not associated with
the particular user. This significantly impacts the
architecture of the Forte application. Some of the problems
caused by this approach are:
1) An application-level security system should be developed
instead of using the DBMS security system. Suffice it to say
that application-level security system cannot provide the
protection from back-door access to the database.
2) The application cannot utilize the DBMS locking mechanism
for the case when the record is retrieved to the client for
editing purposes ("long" transaction).
It means that SecurityManager and LockManager should be
developed to resolve these problems. This does not seem to be
very good solution because these objects are intended to repeat
the functionality of the DBMS. And these parts of the
application may become pretty complicated. For example, my
project's experience shows that the development of the lock
manager is not a trivial task and most likely this lock manager
will be worse than the DBMS locking mechanism in terms of
reliability and performance just because it acts as an outside
program to the database. Besides, this approach could cause
serious problems if the database can be updated by non-Forte
applications (e.g., by some legacy system or batch process).
"One DBSession per several users" approach makes sense if each
user connection to the database is implemented as one
server process.(Another good argument in favor of single
DBsession is a heterogeneous environment where there is no
stable connection to one database, but here I'm talking about a
"regular" application that uses only one DBMS.) Since most of
the time this process is idle, then, of course, decreasing the
number of processes leads to better server utilization and
performance. But by its sense, database connection is just the
current transaction ID (with the user id, of course). So the
connection could be just a number that should be passed to the
DBMS along with each request and then DBMS can create a thread
to handle the request or forward it to the next available
process if it does not support multithreading.
DBMS vendors realize this and some of them already implemented
this approach (I know that Oracle and Informix did that and
Sybase was mentioned in the recent "one-threaded DBSession"
discussion). And one-threaded DBSession that lives on the
server doesn't fit well to that. The better approach would be
to make DBSession the attribute of the TransactionHandle
object, so the current connection will always be passed from
the client to the service and this service can work through
this connection.
So, my point is that the application should let DBMS do its
work and use as much of the functionality of the DBMS as
possible and the "single DBsession" approach doesn't help it to
do that.
I would be glad to hear any other opinion on this topic. I
think that the "DBsession" problem is extremely important for
any multi-tier application (for example, all Web applications
are facing this problem). I'm also interested in how people
are dealing with this problem on other projects, for example if
there are some projects where the alternative approach (one
DBSession per each user) was implemented and what problems were
encountered during that.
Alexander Ananyev
Price Waterhouse
End of forte-users-digest V1 #89
One of the first issues that needs to be addressed is that passing
DBSessions from partition to partition is a huge performance hit. When
Forte executes a SQL SELECT or FETCH statement on a DBSession that exists
outside the current partition (DBSessions are "anchored" objects that are
accessed via proxies.) Forte fetches the result set into the partition
containing the DBSession and then passes proxies or creates copies into
the partition where the SQL code is located. These are some of the
largest performance hits you can take in Forte. -
Re: (forte-users) No response from Router partition
Sounds like what we have been experiencing here, on Unix.
According to Forté, upgrading to 3M should resolve it. Unfortunately, we
can't
confirm it yet, as we are in the process of upgrading and testing.
I believe this is documented as an "internal" Forté bug report.
Hope this hels.
Daniel Désy
BORN
----- Original Message -----
From: "Pabbaraju, Ramarao (EXP N-IONIDEA)" <ramarao.pabbarajulmco.com>
To: "Forte-Users (E-mail)" <forte-userslists.xpedior.com>
Sent: Tuesday, November 14, 2000 10:46 AM
Subject: (forte-users) No response from Router partition
Hi All,
One of the router partitions on NT server stops responding once in awhile. We can not get to it through escript or econsole and the only
solution we have is to shutdown the ftexec using task manager and start
the partition again. We don't see any error messages in the log except
this line "LbRouter::AttachToRouter - Ignoring DOM version: -1 obj
version: 0". Does anyone have any idea what this means? Is there any way
to figure out the problem? We are using Forte 3L3. Thanks in advance.
Thanks
Ramarao--
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.comMy guess is, your third service object is not referenced.
-----Original Message-----
From: Forte App [mailto:forteapphotmail.com]
Sent: Wednesday, May 17, 2000 3:08 PM
To: kamranaminyahoo.com
Subject: (forte-users) Partition problem
Hello Everyone,
I have three (3) service objects in my project and when i went into
partition workshop i can only see two service objects instead of three and
all the three service objects properties settings are same
iam using Forte 3.0L2.
Thanks in Advance
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 -
RE: (forte-users) (Fwd) ODBC & Dynamically Choosing aDatabase Ve ndor
The error you are getting is saying that the data source is not correctly
specified. Make sure the data source(or the name of the ODBC driver you
created) is correctly specified in your code.
ka
-----Original Message-----
From: Duncan Kinnear [mailto:[email protected]]
Sent: Sunday, December 19, 1999 6:26 PM
To: [email protected]
Subject: (forte-users) (Fwd) ODBC & Dynamically Choosing a Database
Vendor
I am trying to dynamically create a DBSession to connect to the
Microsft SQL Server ODBC Driver on a Forte Server Node.
I have tested the ODBC connection on the Local Machine and it works fine.
I have connected to the SQL Server on that machine with a Static
DBSession Object and that works fine.
I have used the same code to create a DBSession to Informix on Unix
and that worked fine.
The error I get is a converted ODBC one:
SYSTEM ERROR: Attempt to load partition named TestWinProject_cl0_Part1
failed.
Class: qqsp_ResourceException
Error #: [1001, 4]
Detected at: qqrt_ForteExecAgent::LoadPartition at 2
Error Time: Mon Dec 20 12:05:37
Distributed method called: qqrt_ForteExecAgentProxy.LoadPartition!7
(object name Unnamed) from partition "Node Manager", (partitionId =
40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11c, taskId =
[40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11c.38]) in application
"System
Manager", pid 250 on node ALLY in environment testenv
Exception occurred (remotely) on partition "Forte_Executor",
(partitionId
= 40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e, taskId =
[40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e.22]) in application
"TestWinProject_cl0", pid 235 on node ALLY in environment TestEnv.
SYSTEM ERROR: Failed to create service object TestDataProject.TestService.
Class: qqsp_ResourceException
Last TOOL statement: method TestServiceMgr.
Error Time: Mon Dec 20 12:05:37
Exception occurred (remotely) on partition "Forte_Executor",
(partitionId
= 40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e, taskId =
[40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e.22]) in application
"TestWinProject_cl0", pid 235 on node ALLY in environment TestEnv.
USER ERROR: (This error was converted)
Failed to connect to database: ForteSQLServer , username: justin .
[Microsoft][ODBC Driver Manager] Data source name not found and no
default
driver specified
Class: qqdb_RemoteAccessException with ReasonCode:
DB_ER_DBMSCONNECTION
DBMS SQLSTATE: IM002
Class: qqsp_ErrorDescriptor
Detected at: qqdb_OdbcVendorInfo::DoSQLConnect at 10
Last TOOL statement: method ServiceMgr.SetDBSession
Error Time: Mon Dec 20 12:05:37
Exception occurred (remotely) on partition "Forte_Executor",
(partitionId
= 40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e, taskId =
[40114BC0-B0FC-11D3-B4D6-E87D6941AA77:0x11e.22]) in application
"TestWinProject_cl0", pid 235 on node ALLY in environment TestEnv.
Versions:
SQL SERVER 6.5
ODBC Driver SQL Server 2.65.0240
ODBC Manager 3.0.28.22
NT 4 sp4
Forte 3.0.J.1
The code I'm using is almost identical to that given in the "Dynamically
Choosing a Database Vendor" section of the "Making a Database
Connection" chapter of the "Accessing Databases" manual.
Any suggestions would be greatly appreciated
Thanks in advance.
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
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected] -
FW: (forte-users) Copy Input parameter
Peter,
That is the behaviour that I have experienced also, so I do not have such
(anchored service object) attributes in my classes anymore but instead add
that service object attribute as an input parameter to all methods in that
class that require access via that service object attribute.
Alternatively, if access to that anchored service object is only required
in the partition that it was created then overriding the Clone method of
the class to return a NIL value in the service object attribute should
work for you.
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 05:33
To: Forte User Group
Subject: (forte-users) Copy Input parameter
Hi folks,
I have this problem where a "copy input" seems to copy
the service object too.
The case is that I have a service object, say
batchmgrso, for batch processing and an object, say
batchproc, as the process. The batchproc has an
attribute for referencing the batchmgrso as it will
create some other process and submit it to the
batchmgrso.
The problem is whenever a batchproc fails and the
batchmgrso tries to re-submit the object from the
queue, and I use a copy input as the mechanism for
passing in the batchproc to the service object, I can
find that not only does the batchproc get cloned, but
also the batchmgrso. It caused a lot of problem and
bombed the method.
When I changes the mechanism to just input in the
method signature, everything works fine.
So is it a forte feature/bug that a copy input would
clone something so "deeply" that even a SO or archored
object would get clone too. Is there any way to avoid
it?
Regards,
Peter Sham.
=====
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]Peter,
That is the behaviour that I have experienced also, so I do not have such
(anchored service object) attributes in my classes anymore but instead add
that service object attribute as an input parameter to all methods in that
class that require access via that service object attribute.
Alternatively, if access to that anchored service object is only required
in the partition that it was created then overriding the Clone method of
the class to return a NIL value in the service object attribute should
work for you.
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 05:33
To: Forte User Group
Subject: (forte-users) Copy Input parameter
Hi folks,
I have this problem where a "copy input" seems to copy
the service object too.
The case is that I have a service object, say
batchmgrso, for batch processing and an object, say
batchproc, as the process. The batchproc has an
attribute for referencing the batchmgrso as it will
create some other process and submit it to the
batchmgrso.
The problem is whenever a batchproc fails and the
batchmgrso tries to re-submit the object from the
queue, and I use a copy input as the mechanism for
passing in the batchproc to the service object, I can
find that not only does the batchproc get cloned, but
also the batchmgrso. It caused a lot of problem and
bombed the method.
When I changes the mechanism to just input in the
method signature, everything works fine.
So is it a forte feature/bug that a copy input would
clone something so "deeply" that even a SO or archored
object would get clone too. Is there any way to avoid
it?
Regards,
Peter Sham.
=====
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected] -
Re: (forte-users) SCM Hooks
I am still having trouble using the SCM hook. I have set everything up but
when I integrate I get the following error message.
Forte_cl0: SYSTEM ERROR: Cannot resolve the distributed reference for an
object
of class
(qqrp_SCMServerProxy) named
(site/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so) for the
reasons below.
Class: qqsp_DistAccessException
Error #: [601, 144]
Detected at: qqdo_ProxyMgr::ResolveOutGoingProxy at 10
Last TOOL statement: method
abSurrogateRepositoryClient.IntegrateWorkspace
Error Time: Tue Dec 19 15:55:16
Distributed method called: qqrp_SCMServerProxy.BeforeIntegration (object
name site/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so)
from
partition "Forte_cl0_Client",
SYSTEM ERROR: No objects with the name
(site/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so) were
found or are reachable.
Class: qqsp_DistAccessException
Error #: [601, 91]
Detected at: qqdo_OlsNameInfo::GetNextObjectName at 2
Error Time: Tue Dec 19 15:55:16
Exception occurred (locally) on partition "Forte_cl0_Client",
(partitionId = 419029E0-D5A6-11D4-BE67-78683332AA77:0x148:0x2,
taskId
= [419029E0-D5A6-11D4-BE67-78683332AA77:0x148:0x2.14]) in
application
"FTLaunch_cl0", pid 143 on node DTMAPGWYND02 in environment
centrale.
The value I have given to my FORTE_RP_SCMSERVER environment variable is
SCMTestService2/SCMTestService2/SCMTestService2SO. Is this correct?
According to the Environment Console, the application is
SCMTestService2_cl0, I have a partiotion - SCMTestService2_cl0_Part1 and an
installed partition SCMTestService2_cl0_Part1_DTMAPGWYND02 and the name of
the SO in the SCMTestService2 class which was used to create everything is
SCMTestService2SO.
Should the applicaiton be online all the time or just online when it is
necessary to use it because it is not online after everything else has
started.Hi Alexandra
I have been going through the mails regarding SCM and SCM hooks. I donot
have any knowledge on hooks, Could you pls explain me about hooks or pls let
me know where can i find the documentation on hooks.
Thanks in advance
Vasundhara
----- Original Message -----
From: Alexandra Macedo <ammeasysoft.pt>
To: Maredudd ap Gwyndaf <maredudd.apgwyndafs1.com>
Cc: forte-users <forte-userslists.xpedior.com>
Sent: Tuesday, December 19, 2000 10:48 PM
Subject: Re: (forte-users) SCM Hooks
>
>
You should launch the SCM hook service before launching the RepositoryServer
you could use a script like:
SCM.bat
rem env vars used inside the SCM hook code
set FORTE_SCM_DIR=%FORTE_ROOT%\scm
set FORTE_SCM_BEFORE_EXPORT=beforeExport.bat
set FORTE_SCM_AFTER_EXPORT=afterExport.bat
rem where the SCM hook is deployed
set SCM_PROG=bt:c:\forte\userapp\scmtestservice2\Cl0\scmtestservice2_cl1
%FORTE_ROOT%\install\bin\ftexec -fi %SCM_PROG% -ftsvr 0
Remember, you cannot configure as Server your SCM hooks if they are on arepository
where
the SCM hooks are already running, this means you must have a Repositorywithout the
SCM hooks
when you deploy the SCM hook service.
Hope this helps
Alexandra Macedo
Date: Tue, 19 Dec 2000 16:03:36 -0000
From: "Maredudd ap Gwyndaf" <maredudd.apgwyndafs1.com>
To: "Forte Mailing List" <forte-userslists.xpedior.com>
Subject: Re: (forte-users) SCM Hooks
Message-ID: <011f01c069d5$3e88b0f0$405810acman.s1.com>
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
I am still having trouble using the SCM hook. I have set everything up
but
when I integrate I get the following error message.
Forte_cl0: SYSTEM ERROR: Cannot resolve the distributed reference for an
object
of class
(qqrp_SCMServerProxy) named
(site/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so) forthe
reasons below.
Class: qqsp_DistAccessException
Error #: [601, 144]
Detected at: qqdo_ProxyMgr::ResolveOutGoingProxy at 10
Last TOOL statement: method
abSurrogateRepositoryClient.IntegrateWorkspace
Error Time: Tue Dec 19 15:55:16
Distributed method called: qqrp_SCMServerProxy.BeforeIntegration(object
namesite/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so)
from
partition "Forte_cl0_Client",
. . . SYSTEM ERROR: No objects with the name
(site/scmtestservice2_cl0/scmtestservice2_cl0-scmtestservice2so)were
found or are reachable.
Class: qqsp_DistAccessException
Error #: [601, 91]
Detected at: qqdo_OlsNameInfo::GetNextObjectName at 2
Error Time: Tue Dec 19 15:55:16
Exception occurred (locally) on partition "Forte_cl0_Client",
(partitionId = 419029E0-D5A6-11D4-BE67-78683332AA77:0x148:0x2,
taskId
= [419029E0-D5A6-11D4-BE67-78683332AA77:0x148:0x2.14]) in
application
"FTLaunch_cl0", pid 143 on node DTMAPGWYND02 in environment
centrale.
The value I have given to my FORTE_RP_SCMSERVER environment variable is
SCMTestService2/SCMTestService2/SCMTestService2SO. Is this correct?
According to the Environment Console, the application is
SCMTestService2_cl0, I have a partiotion - SCMTestService2_cl0_Part1 andan
installed partition SCMTestService2_cl0_Part1_DTMAPGWYND02 and the nameof
the SO in the SCMTestService2 class which was used to create everythingis
SCMTestService2SO.
Should the applicaiton be online all the time or just online when it is
necessary to use it because it is not online after everything else has
started.--
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 -
Re: (forte-users) How do you change the font color onwindow.StatusText
Hi Richard,
In the init method insert the line
<_StatusLine>.PenColor = C_BLUE ;
This sets the pen color for the widget.
StatusText is an attribute on the Window class that
holds the value of the text. This value is then
displayed in the specified data field that you assign.
Hope this helps,
Jairaj Rampershad
System Consultant
--- "Robinson, Richard"
<[email protected]> wrote:
I'm using Forte 3.0.G.2 and can't get the font color
to change.
I've followed the instructions in the help
documentation by creating a data
field widget (named it _StatusLine) and mapped it as
a TextData. In my Init
method I then have a chunk of code to set up the
Window.StatusText. It
looks like this:
_StatusLine = new;
Window.StatusText = _StatusLine;
Once that's done the code updates Window.StatusText
as needed. All this
works fine except I can't get the font color
changed. I've used the Window
workshop to specify a color for the data field
widget but it appears that
the underlying Forte libraries has a mind of it's
own. Any clues as what to
do? All I'm trying to do is set the color to the
default "information"
color - which is blue.
Thanks in advance
For the archives, go to:
http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To
unsubscribe, send in a new
email the word: 'Unsubscribe' to:
[email protected]It's not so simple to find it if you don't know what you're looking for... But it can be found via View - Show/Hide - Toolbar Items - Properties Bar.
-
RE: (forte-users) Accelerator keys under MS Windows95/98/NT
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_001_01BEF001.9C8C0B50
Content-Type: text/plain
Unfortunately, ALT key is not recognized as a validkey modifier on Windows
That isn't entirely true. The ALT key is recognized. I've used it
successfully
under Windows 95 and NT. The only annoying side-effect is that you get the
standard operating system beep when you perform the keypress.
-----Original Message-----
From: "Ajith Kallambella" [SMTP:[email protected]]
Sent: Thursday, August 26, 1999 1:43 PM
To: "[email protected]" [SMTP:[email protected]];
"[email protected]" [SMTP:[email protected]]
Subject: Re: (forte-users) Accelerator keys under MS Windows 95/98/NT
The Window class has a method named SetAsFunctionKey
and an event named FunctionKeyPress. When used
in combination, the former can be used to configure
various accelerator keys for the window widgets
and the latter can be used to trap them.
For more details, take a look at Forte online help.
Unfortunately, ALT key is not recognized as a valid
key modifier on Windows, but is only available on
Unix and VMS - for reasons beyond my comprehension :(
Hope this helps
Ajith Kallambella M.
Forte Systems Consultant.
From: "Burns, Troy" <[email protected]>
To: "'[email protected]'" <[email protected]>
Subject: (forte-users) Accelerator keys under MS Windows 95/98/NT
Date: Thu, 26 Aug 1999 13:56:07 -0400
Let's say I have a pushbutton on a window and I've given it
label text of "&Search". In past developer-lives, the ampersand
is what gives the button the ability to respond to ALT-S. This
doesn't appear to be the case in Forte. What do I need to do
to make this work?
Thanks in advance,
Troy Burns
E-mail: [email protected]
Marriott Vacation Club International
941-688-7700 ext. 4408
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]
For the archives, go to: http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: [email protected]
------_=_NextPart_001_01BEF001.9C8C0B50
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<DEFANGED-META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<DEFANGED-META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
5.5.2448.0">
<DEFANGED-TITLE>RE: (forte-users) Accelerator keys under MS Windows =
95/98/NT</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=3D2>> Unfortunately, ALT key is not recognized as a =
valid</FONT>
<BR><FONT SIZE=3D2>key modifier on Windows</FONT>
</P>
<P><FONT SIZE=3D2>That isn't entirely true. The ALT key is recognized. =
I've used it successfully</FONT>
<BR><FONT SIZE=3D2>under Windows 95 and NT. The only annoying =
side-effect is that you get the</FONT>
<BR><FONT SIZE=3D2>standard operating system beep when you perform the =
keypress.</FONT>
</P>
<P><FONT SIZE=3D2>-----Original Message-----</FONT>
<BR><FONT SIZE=3D2>From: "Ajith Kallambella" =
[SMTP:[email protected]] </FONT>
<BR><FONT SIZE=3D2>Sent: Thursday, August 26, 1999 1:43 PM</FONT>
<BR><FONT SIZE=3D2>To: "[email protected]" =
[SMTP:[email protected]];</FONT>
<BR><FONT SIZE=3D2>"[email protected]" =
[SMTP:[email protected]]</FONT>
<BR><FONT SIZE=3D2>Subject: Re: (forte-users) Accelerator keys under MS =
Windows 95/98/NT</FONT>
</P>
<BR>
<P><FONT SIZE=3D2>The Window class has a method named =
SetAsFunctionKey</FONT>
<BR><FONT SIZE=3D2>and an event named FunctionKeyPress. When =
used</FONT>
<BR><FONT SIZE=3D2>in combination, the former can be used to =
configure</FONT>
<BR><FONT SIZE=3D2>various accelerator keys for the window =
widgets</FONT>
<BR><FONT SIZE=3D2>and the latter can be used to trap them.</FONT>
</P>
<P><FONT SIZE=3D2>For more details, take a look at Forte online =
help.</FONT>
</P>
<P><FONT SIZE=3D2>Unfortunately, ALT key is not recognized as a =
valid</FONT>
<BR><FONT SIZE=3D2>key modifier on Windows, but is only available =
on</FONT>
<BR><FONT SIZE=3D2>Unix and VMS - for reasons beyond my comprehension =
:(</FONT>
</P>
<P><FONT SIZE=3D2>Hope this helps</FONT>
</P>
<P><FONT SIZE=3D2>Ajith Kallambella M.</FONT>
<BR><FONT SIZE=3D2>Forte Systems Consultant.</FONT>
</P>
<BR>
<P><FONT SIZE=3D2>>From: "Burns, Troy" =
<[email protected]></FONT>
<BR><FONT SIZE=3D2>>To: "'[email protected]'" =
<[email protected]></FONT>
<BR><FONT SIZE=3D2>>Subject: (forte-users) Accelerator keys under MS =
Windows 95/98/NT</FONT>
<BR><FONT SIZE=3D2>>Date: Thu, 26 Aug 1999 13:56:07 -0400</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>>Let's say I have a pushbutton on a window and =
I've given it</FONT>
<BR><FONT SIZE=3D2>>label text of "&Search". In =
past developer-lives, the ampersand</FONT>
<BR><FONT SIZE=3D2>>is what gives the button the ability to respond =
to ALT-S. This</FONT>
<BR><FONT SIZE=3D2>>doesn't appear to be the case in Forte. =
What do I need to do</FONT>
<BR><FONT SIZE=3D2>>to make this work?</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>>Thanks in advance,</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT =
SIZE=3D2>>---------------------------------------------</FONT>
<BR><FONT SIZE=3D2>>Troy Burns</FONT>
<BR><FONT SIZE=3D2>>E-mail: [email protected]</FONT>
<BR><FONT SIZE=3D2>>Marriott Vacation Club International</FONT>
<BR><FONT SIZE=3D2>>941-688-7700 ext. 4408</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>>--</FONT>
<BR><FONT SIZE=3D2>>For the archives, go to: <A =
HREF=3D"<a href=
"http://lists.sageit.com/forte-users">http://lists.sageit.com/forte-users</a>" =
TARGET=3D"_blank">http://lists.sageit.com/forte-users</A> and =
use</FONT>
<BR><FONT SIZE=3D2>>the login: forte and the password: archive. To =
unsubscribe, send in a new</FONT>
<BR><FONT SIZE=3D2>>email the word: 'Unsubscribe' to: =
[email protected]</FONT>
<BR><FONT SIZE=3D2>></FONT>
</P>
<BR>
<P><FONT =
SIZE=3D2>_______________________________________________________________=
</FONT>
<BR><FONT SIZE=3D2>Get Free Email and Do More On The Web. Visit <A =
HREF=3D"<a href="http://www.msn.com">http://www.msn.com</a>" =
TARGET=3D"_blank">http://www.msn.com</A></FONT>
</P>
<P><FONT SIZE=3D2>--</FONT>
<BR><FONT SIZE=3D2>For the archives, go to: <A =
HREF=3D"<a href=
"http://lists.sageit.com/forte-users">http://lists.sageit.com/forte-users</a>" =
TARGET=3D"_blank">http://lists.sageit.com/forte-users</A> and =
use</FONT>
<BR><FONT SIZE=3D2>the login: forte and the password: archive. To =
unsubscribe, send in a new</FONT>
<BR><FONT SIZE=3D2>email the word: 'Unsubscribe' to: =
[email protected]</FONT>
</P>
</BODY>
</HTML>
------_=_NextPart_001_01BEF001.9C8C0B50--Hi,Beau Leo, I am having problem installing Oracle9i Database Rel.2 on my pc.
I read the suggestion and solution you posted for fixing Oracle 8.1.x installation
probblem, and since my pc also hung at 48% while installing Oracle 9i software,
I wonder if the same problem in the Oracle8 Vs.Pentium4 also exists for Oracle9i.
I have Windows2000,256RAM, Pentium3 1Ghz, and 13.8 free diskspace. But the installation always
hangs at 48%, my computer will just shut down and restart automatically without
even showing an error message. I have tried installing the Enterprise edition for 3
times already but everytime encountered the same problem. I've also tried custom installation
by selecting not to create database, but it also hung.
Before I started each installation, I always made sure that my registry and environment
path are cleared and that all the partially-installed Oracle files are deleted.
I hope that you or anyone who has a solution for this problem could be so kindly to help me out.
Thank you in advance.
ailee -
RE: (forte-users) Copy Input parameter
Peter,
Just a quick response before I prepare a code sample for you.
Unfortunately, we pay for our sins as a true cloning operation has to take
into account the (potentially) recursive nature of an object graph and
effectively has to do the equivalent of serialising an object graph (as in
parameter passing to remote methods) without going into an infinite loop
when the object graph recurses back into itself.
The Forte runtime does this quite nicely but if you wish to change its
default behaviour, it's a bit of hard work but it's achievable.
So you need to decide. Is it worth it?
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 07:20
To: EMMI, Mario
Cc: '[email protected]'
Subject: RE: (forte-users) Copy Input parameter
Hi,
Interesting solution!
Just to clarify further. How exactly would you
over-write the clone method. New the object and then
clone all the attributes of the existing object to the
new object, excluding whatever attribute you think is
appropriate?
Regards,
Peter Sham.
--- "EMMI, Mario" <[email protected]> wrote:
Peter,
That is the behaviour that I have experienced also,
so I do not have such
(anchored service object) attributes in my classes
anymore but instead add
that service object attribute as an input parameter
to all methods in that
class that require access via that service object
attribute.
Alternatively, if access to that anchored service
object is only required in
the partition that it was created then overriding
the Clone method of the
class to return a NIL value in the service object
attribute should work for
you.
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 05:33
To: Forte User Group
Subject: (forte-users) Copy Input parameter
Hi folks,
I have this problem where a "copy input" seems tocopy
the service object too.
The case is that I have a service object, say
batchmgrso, for batch processing and an object,say
batchproc, as the process. The batchproc has an
attribute for referencing the batchmgrso as itwill
create some other process and submit it to the
batchmgrso.
The problem is whenever a batchproc fails and the
batchmgrso tries to re-submit the object from the
queue, and I use a copy input as the mechanism for
passing in the batchproc to the service object, Ican
find that not only does the batchproc get cloned,but
also the batchmgrso. It caused a lot of problemand
bombed the method.
When I changes the mechanism to just input in the
method signature, everything works fine.
So is it a forte feature/bug that a copy inputwould
clone something so "deeply" that even a SO orarchored
object would get clone too. Is there any way toavoid
it?
Regards,
Peter Sham.
=====
For the archives, go to:
http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. Tounsubscribe, send in a new
email the word: 'Unsubscribe' to:
[email protected]
=====
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.comMario,
Well. There're 2 ways that I can do it. Avoid copy
input as much as possible ( in fact, I hate copy input
) or code my own clone method.
Coding my own clone method should be a better
solution. So if you have time, please please descibe
it.
Thanks for all the troubles. Regards,
Peter Sham.
--- "EMMI, Mario" <[email protected]> wrote:
Peter,
Just a quick response before I prepare a code sample
for you.
Unfortunately, we pay for our sins as a true cloning
operation has to take
into account the (potentially) recursive nature of
an object graph and
effectively has to do the equivalent of serialising
an object graph (as in
parameter passing to remote methods) without going
into an infinite loop
when the object graph recurses back into itself.
The Forte runtime does this quite nicely but if you
wish to change its
default behaviour, it's a bit of hard work but it's
achievable.
So you need to decide. Is it worth it?
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 07:20
To: EMMI, Mario
Cc: '[email protected]'
Subject: RE: (forte-users) Copy Input parameter
Hi,
Interesting solution!
Just to clarify further. How exactly would you
over-write the clone method. New the object andthen
clone all the attributes of the existing object tothe
new object, excluding whatever attribute you thinkis
appropriate?
Regards,
Peter Sham.
--- "EMMI, Mario" <[email protected]> wrote:
Peter,
That is the behaviour that I have experienced
also,
so I do not have such
(anchored service object) attributes in myclasses
anymore but instead add
that service object attribute as an inputparameter
to all methods in that
class that require access via that serviceobject
attribute.
Alternatively, if access to that anchoredservice
object is only required in
the partition that it was created thenoverriding
the Clone method of the
class to return a NIL value in the serviceobject
attribute should work for
you.
Mario Emmi
British Aerospace Australia
-----Original Message-----
From: Peter Sham [SMTP:[email protected]]
Sent: Thursday, 28 October 1999 05:33
To: Forte User Group
Subject: (forte-users) Copy Input parameter
Hi folks,
I have this problem where a "copy input" seems
to
copy
the service object too.
The case is that I have a service object, say
batchmgrso, for batch processing and an
object,
say
batchproc, as the process. The batchproc has
an
attribute for referencing the batchmgrso as itwill
create some other process and submit it to the
batchmgrso.
The problem is whenever a batchproc fails and
the
batchmgrso tries to re-submit the object fromthe
queue, and I use a copy input as the mechanismfor
passing in the batchproc to the serviceobject, I
can
find that not only does the batchproc get
cloned,
but
also the batchmgrso. It caused a lot of
problem
and
bombed the method.
When I changes the mechanism to just input in
the
method signature, everything works fine.
So is it a forte feature/bug that a copy inputwould
clone something so "deeply" that even a SO orarchored
object would get clone too. Is there any way
to
avoid
it?
Regards,
Peter Sham.
=====
For the archives, go to:
http://lists.sageit.com/forte-users and use
the login: forte and the password: archive. Tounsubscribe, send in a new
email the word: 'Unsubscribe' to:
[email protected]
=====
=====
Maybe you are looking for
-
Idoc - Partner Function not getting captured.
Dear all, I am using IDOC (type - /NFM/ORDERS05) to send a Purchase Order. The Idoc is getting created but the only a few partner function is getting captured from the Partners tab in the ME22n transaction. The remaining partner functions that are no
-
How to do a sapevent with Redwood
Hi, i'm trying to simulate this command : "sapevt ZSTART699 -p START name=PBW nr=00" with Redwood. How can i do that ? i've try SAP_RaiseEvent but no result. thank you Cipriano
-
Redundant Transparant ASA between Redundant Routed Links
Aparently the Security/Compliance team didn't review my network design before it was submitted and built, and now I have to shoe horn a firewall somewhere there was never supposed to be one. I have my two current DC Cores (Nexus 5548UP), that current
-
Help with Dynamic Code not displaying only ASP Shields???
Started working with some .asp pages today and it is not showing me the record set in the brackets. Like this {Recordset.Field} Only giving me the little ASP shield. Looks like this. I have search on google and in dreamweave in the pref's thinking so
-
Help with making part of a picture transparent
I am very new to Indesign, and I am trying to teach myself how to use it. I was using Microsoft Publisher for my last project, in which I was able to use a transparency tool to click on part of a .gif image to make it transparent, whilst leaving the