Hiya
Thanks for your answers!
In terms of the Java class implementing my STAF service, does it have to be
thread safe / concurrent ?!
In step 7 you listed below, if my service is currently processing a request,
what happens?
Is the new requested handled on a new thread, or queued?
Thanks
________________________________
From: Sharon Lucas <luc...@us.ibm.com>
To: clayton neal <clayton_n...@yahoo.co.uk>
Cc: staf <staf-users@lists.sourceforge.net>
Sent: Thu, 18 February, 2010 17:47:18
Subject: Re: [staf-users] Writng Java Service : Questions
Hi, here are answers to your questions on
writing a STAF Java Service.
- Is there a difference between a service
request, and a message on the Queue for the service?
Yes, they are completely different. Read
on.
- Are requests to my service placed on the Queue for my service handle
by STAFProc ?
No, service requests are not placed on a
service's handle "queue". Read on.
- Does STAFProc run my service on multiple threads to handle multiple
requests?
Not exactly. STAFProc does not "run
your service on multiple threads". Read on for an example of
STAF service request flow. A service's acceptRequest() method is
invoked on a different thread simultaneously. Note that a STAF Java
service must implement the STAFServiceInterfaceLevel30 interface and provide
init(), cceptRequest(), and term() methods. Read section "3.0
Service Overview" in the "STAF Service Developer's Guide"
at http://staf.sourceforge.net/current/stafsdg.html#Header_Intro for more
information on the 5 phases in the life cycle of a STAF service. The STAF
service proxies do not externalize all of these phases (for example, for
Java services the construction and deconstruction phases are not externalized).
When creating a custom STAF Java service, you will be adding code to the
Initialization and Accepting Requests phases of the life cycle, and possibly
the termination phase.
- Is my service class instanciated at every request?
No. Here's an example of STAF service
request flow. Say on machine A running Windows, a STAF request "GENERATE
TYPE Build SUBTYPE MyProduct_V4" is initiated by a Perl program to
the Event Java service on machine B running Linux.
- Step 1: The Perl interpreter passes
the request to the Perl API layer of STAF.
- Step 2: The Perl API layer passes
the request to the C API layer of STAF.
- Step 3: The C API layer makes the
interprocess communication (IPC) request to the STAFProc daemon process.
At this point the STAFProc daemon determines that the request is destined
for another system, which initiates step 4.
- Step 4: A network IPC request to
the STAFProc daemon on machine B. The STAFProc daemon on machine B determines
that the request is bound for the Event Java service. This leads to step
5.
- Step 5: The request is passed to
the Java service proxy layer
- Step 6: The Java service proxy layer
communicates directly with the JVM and sends it the request.
- Step 7: The JVM invokes the corresponding
method on the Event Java service object (i.e. acceptRequest() method).
- Step 8: Upon receiving the request,
the Event Java service's acceptRequest() method determines which request
it is receiving and passes the request string to the STAF request parser
for validation. At this point the Event Java service would perform the
indicated request and steps 1 through 7 would be reversed as the result
was passed back to the Perl program on machine B. Note that this is the
only step of this service request flow that your Java service is responsible
for implementing.
- How does STAFProc internally handle 100's of requests say to my service?
- It handles each STAF service request as
described above.
Of course, it won't be the Perl interpreter/
Perl API layer passing the request to the C API layer of STAF if a Perl
program didn't initiate a STAF service request. A STAF service request
could be initiated instead from a Java, C/C++, Python, or Tcl program,
or from a shell script, or the command line, or a via a STAX job (e.g via
Java).
- Can a service request have a time-out?
Some existing STAF service requests have
implemented a time-out by implementing a TIMEOUT option (or a WAIT option),
so your Java service could implement a time-out for a request it handles.
For example:
- The SEM service's REQUEST MUTEX request
implements a TIMEOUT option. See the STAF User's Guide for more information.
REQUEST MUTEX <Name> [TIMEOUT <Number>[s|m|h|d|w]].
-The FSExt
service (an external Java service) implements a TIMEOUT for its WAITFORFILE
request. See the FSExt Service User's Guide at
http://staf.sourceforge.net/current/FSExt.html#Header_23 for more information.
--------------------------------------------------------------
Sharon Lucas
IBM Austin, luc...@us.ibm.com
(512) 286-7313 or Tieline 363-7313
clayton neal <clayton_n...@yahoo.co.uk>
02/18/2010 06:38 AM To Sharon Lucas/Austin/i...@ibmus
cc staf <staf-users@lists.sourceforge.net>
Subject [staf-users] Writng Java Service : Questions
Hiya STAF people!
Ive a few questions regarding writing my own Java service:
- Is there a difference between a service request, and a message on the
Queue for the service?
- Are requests to my service placed on the Queue for my service handle
by STAFProc ?
- Does STAFProc run my service on multiple threads to handle multiple requests?
- Is my service class instanciated at every request?
- How does STAFProc internally handle 100's of requests say to my service?
- Can a service request have a time-out?
Thanks
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users