You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Marshall Schor <ms...@schor.com> on 2008/05/08 22:06:59 UTC
Re: Shutdown Vinci Server & Child AE
Hi Charles,
First, you can find the source code for all vinci things in the Apache
UIMA project - both in individual source releases, and in the SVN
itself. There are links on the incubator.apache.org/uima home page on
the left to the source.
There are two parts to Vinci. One part is the stand-alone vinci
name-server. The part you are talking about is the vinci service
wrapper - that is used to wrap a UIMA annotator and make it into a Vinci
service.
The code for this wrapper is in uimaj-adapter-vinci project in the SVN.
In there, you will find in class VinciAnalysisEngineService_impl, a
method, "eval". It's javadoc says:
/**
* Main method called by the Vinci Service Layer. All requests coming
in from clients go through
* this method. Each request comes in as a VinciFrame and is expected
to contain a valid
* VINCI:COMMAND. Currently, two such operations are supported: 1)
Annotate - triggers document
* analysis 2) GetData - triggers return of the AE meta data ( descriptor)
*
* @param {@link org.apache.vinci.transport.Transportable} -
* a VinciFrame containing client request
* @return {@link org.apache.vinci.transport.Transportable} - a
VinciFrame containg result of
* performing the service
*/
If you look at the implementation code itself, you will see that, in
addition to what the javadoc says, it looks for a
"Shutdown" command, and if received, terminates the JVM:
. . .
else if (Constants.SHUTDOWN.equals(op)) {
stop();
System.exit(1);
There is code to send this command in the Vinci Proxy at the client.
When the Collection Processing Complete method is called in the
framework, it actually calls the VinciTAP class's method to shutdown.
However, it currently passes a flag to bypass the sending of the
shutdown message for external remote services, on the presumption that
these services might be in use by other clients.
You might want to have a short method that you write that does something
like this:
1) from your CPE, get a list of the Cas Processors
2) For each Cas Processor, see if it is of the Vinci TAP kind (this
means it is implemented as a proxy to a remote vinci service, using the
class VinciTAP).
3) for all those, call its shutdown method, passing *true* as the first
argument. The second argument appears to allow sending a collection
processing complete message to the service, or not.
For example, once you have a valid reference to a cas processor, you
could write:
// warning: untested code - but you get the idea :-)
if ( casProcessor instanceof NetworkCasProcessorImpl ) {
VinciTAP vinciTextAnalysisProxy =
((NetworkCasProcessorImpl )casProcessor).getProxy();
vinciTextAnalysisProxy.shutdown(true, true-or-false);
// second argument controls sending
// collection processing complete or not
}
-Marshall
Charles Proefrock wrote:
> Still no luck finding anything useful on the web to address this question. The only hits I get are for a May 2001 paper on Vinci.
>
> Any help would be appreciated (especially regarding VinciServer.shutdown() ... or where to find the javadocs or source so I can look into it myself ...)
>
> Thanks,
>
> Charles
>
>
>
>
>> From: chas.pro@hotmail.com> To: uima-user@incubator.apache.org> Subject: Shutdown Vinci Server & Child AE> Date: Wed, 12 Mar 2008 17:15:19 -0400> > When I run an example UIMA Vinci Server I can use Ctrl-C to terminate the running process. When I use Ctrl-C the stdout indicates that VinciServer.shutdown() is called. Two questions:> > (1) Is there a graceful/programatic way to signal the shutdown of a [remote] Vinci Server?> (2) When VinciServer.shutdown() is called, does it call a method on the child AE (such as destroy() ) to gracefully perform cleanup operations? (Similar to the call to destroy() when run integrated in a CPM)> > Thanks,> > Charles> _________________________________________________________________> Shed those extra pounds with MSN and The Biggest Loser!> http://biggestloser.msn.com/
>>
> _________________________________________________________________
> In a rush? Get real-time answers with Windows Live Messenger.
> http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_Refresh_realtime_042008
>
RE: Shutdown Vinci Server & Child AE
Posted by Charles Proefrock <ch...@hotmail.com>.
Marshal,
Thanks for the info. I'll look into this as we enter phase 2 of our work. Maybe in combination with a look at UIMA-AS option for distributed scale-up.- Charles
> Date: Thu, 8 May 2008 16:06:59 -0400> From: msa@schor.com> To: uima-user@incubator.apache.org> Subject: Re: Shutdown Vinci Server & Child AE> > Hi Charles,> > First, you can find the source code for all vinci things in the Apache > UIMA project - both in individual source releases, and in the SVN > itself. There are links on the incubator.apache.org/uima home page on > the left to the source.> > There are two parts to Vinci. One part is the stand-alone vinci > name-server. The part you are talking about is the vinci service > wrapper - that is used to wrap a UIMA annotator and make it into a Vinci > service.> > The code for this wrapper is in uimaj-adapter-vinci project in the SVN.> > In there, you will find in class VinciAnalysisEngineService_impl, a > method, "eval". It's javadoc says:> /**> * Main method called by the Vinci Service Layer. All requests coming > in from clients go through> * this method. Each request comes in as a VinciFrame and is expected > to contain a valid> * VINCI:COMMAND. Currently, two such operations are supported: 1) > Annotate - triggers document> * analysis 2) GetData - triggers return of the AE meta data ( descriptor)> *> * @param {@link org.apache.vinci.transport.Transportable} -> * a VinciFrame containing client request> * @return {@link org.apache.vinci.transport.Transportable} - a > VinciFrame containg result of> * performing the service> */> > If you look at the implementation code itself, you will see that, in > addition to what the javadoc says, it looks for a> "Shutdown" command, and if received, terminates the JVM:> > . . .> else if (Constants.SHUTDOWN.equals(op)) {> stop();> System.exit(1);> > There is code to send this command in the Vinci Proxy at the client. > When the Collection Processing Complete method is called in the > framework, it actually calls the VinciTAP class's method to shutdown. > However, it currently passes a flag to bypass the sending of the > shutdown message for external remote services, on the presumption that > these services might be in use by other clients.> > You might want to have a short method that you write that does something > like this:> > 1) from your CPE, get a list of the Cas Processors> 2) For each Cas Processor, see if it is of the Vinci TAP kind (this > means it is implemented as a proxy to a remote vinci service, using the > class VinciTAP).> 3) for all those, call its shutdown method, passing *true* as the first > argument. The second argument appears to allow sending a collection > processing complete message to the service, or not.> > For example, once you have a valid reference to a cas processor, you > could write:> > // warning: untested code - but you get the idea :-)> > if ( casProcessor instanceof NetworkCasProcessorImpl ) {> VinciTAP vinciTextAnalysisProxy => ((NetworkCasProcessorImpl )casProcessor).getProxy();> vinciTextAnalysisProxy.shutdown(true, true-or-false); > // second argument controls sending> // collection processing complete or not> }> > -Marshall> > > Charles Proefrock wrote:> > Still no luck finding anything useful on the web to address this question. The only hits I get are for a May 2001 paper on Vinci.> > > > Any help would be appreciated (especially regarding VinciServer.shutdown() ... or where to find the javadocs or source so I can look into it myself ...)> > > > Thanks,> > > > Charles> >> >> >> > > >> From: chas.pro@hotmail.com> To: uima-user@incubator.apache.org> Subject: Shutdown Vinci Server & Child AE> Date: Wed, 12 Mar 2008 17:15:19 -0400> > When I run an example UIMA Vinci Server I can use Ctrl-C to terminate the running process. When I use Ctrl-C the stdout indicates that VinciServer.shutdown() is called. Two questions:> > (1) Is there a graceful/programatic way to signal the shutdown of a [remote] Vinci Server?> (2) When VinciServer.shutdown() is called, does it call a method on the child AE (such as destroy() ) to gracefully perform cleanup operations? (Similar to the call to destroy() when run integrated in a CPM)> > Thanks,> > Charles> _________________________________________________________________> Shed those extra pounds with MSN and The Biggest Loser!> http://biggestloser.msn.com/> >> > > _________________________________________________________________> > In a rush? Get real-time answers with Windows Live Messenger.> > http://www.windowslive.com/messenger/overview.html?ocid=TXT_TAGLM_WL_Refresh_realtime_042008> > >
_________________________________________________________________
Make Windows Vista more reliable and secure with Windows Vista Service Pack 1.
http://www.windowsvista.com/SP1?WT.mc_id=hotmailvistasp1banner