I am running JWNL 1.3 in an application that uses GATE for linguistic analysis. The application uses a queue to line up strings to be processed. Each string is popped off the queue and pulls an instance of ANNIE (Gate plugin that contains linguistic processing tools) out of a Pool. The JWNL itself is initialized once during server start up and then the Dictionary instance is used several times throughout the application.
The problem that I am having is at the line:
IndexWord iw = dictionary.lookupIndexWord(
It works fine through processing of each string when there is only a single thread running but as soon as I increase to 2 threads, this line will hang on random strings. It doesn't appear to be a problem with the data as in some runs, it is able to process a particular word fine and in others, it doesn't.
Could anyone tell me if there are issues with running JWNL in a multithreaded application? I did try initializing the JWNL in each thread separately but this produced the same results.
I can provide additional information if that would help as well.
Thank you in advance.
Yes, I believe this will cause problems, as JWNL was never original designed to be operated in enterprise environments. I don't think initializing JWNL in it's own thread would have any effect, as Dictionary is a singleton object.
It's on the list of 'things to do' for a future release, but requires some architecture changes.
I do have the same problem too.
I have tried to use locks while calling WordNet but it fails half of the times ..
Looking forward for the future release
In my fork at http://extjwnl.sourceforge.net/ you can use the dictionary in a normal way, instance per thread, as opposed to the only one singletone instance. This might help resolving threading problems.
Log in to post a comment.