-
April 20th, 2010, 07:36 AM
#1
waitForCardPresent() within thread freezes applet under Ubuntu
Hello,
I am currently having some issues with the waitForCardPresent() function in an applet.
I am developping an applet that manages PC/SC communications.
In my applet I need to check card Status.
To do I use a Thread , I have created a CardStatus class that manages the work of the thread (this class extends Thread).
Here is how I start my thread :
Code:
cs = new CardStatus();
cardStatusThread = new Thread(cs);
cardStatusThread.start();
I use EventListeners to notify my applet once waitForCardPresent() has finished.
The run() of my thread consists of (I have simplified the code) :
Code:
while(true)
{
if(Reader != null)
{
try {
if(!Reader.isCardPresent()) // the reader is set by the applet using a SetReader() function defined in CardStatus class
{
Reader.waitForCardPresent(0);
this.NotifyPresentListeners(); // this function notifies the applet that a card has been found
}
} catch (CardException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
This applet is signed.
I successfully manage to run this applet using windows, but I can't when using Ubuntu : the applet freezes until I put a card in the reader.
I have tried to replace the Reader.waitForCardPresent(0); instruction with Thread.sleep(50000); to check if there was a mistake from the way I was using my thread, in that case my applet doesn't freeze under Ubuntu ; so I am guessing that it is the waitForCardPresent function that causes the trouble.
I know that it could not be a security issue, because I have created an un signed applet that uses WaitForCardPresent (not within a thread, within the main code of the applet, just to test this) and I had no problem with it.
Last edited by emilie.c@pro-active.fr; April 21st, 2010 at 02:00 AM.
Reason: code tags
-
April 20th, 2010, 09:12 AM
#2
Re: waitForCardPresent() within thread freezes applet under Ubuntu
The CardTerminal.waitForCardPresent method (you didn't say, but I guess this is the one you mean) blocks indefinitely (until you put a card in) if you give it an argument of zero.
The behaviour you describe matches the documented behaviour.
The outcome of any serious research can only be to make two questions grow where only one grew before...
T. Veblen
Please use [CODE]...your code here...[/CODE] tags when posting code. If you get an error, please post the full error message and stack trace, if present.
-
April 20th, 2010, 09:19 AM
#3
Re: waitForCardPresent() within thread freezes applet under Ubuntu
Thank you for your reply.
Indeed, I am using The CardTerminal.waitForCardPresent method with 0 to wait indefinitely.
But since I am using this function in a thread, it shouldn't freeze my whole application? (it doesn't freeze under Windows xp).
-
April 20th, 2010, 10:55 AM
#4
Re: waitForCardPresent() within thread freezes applet under Ubuntu
OK. Unfortunately I don't know how Ubuntu handles Java threading & blocking IO operations.
Perhaps someone with Ubuntu experience can help.
It's easy to cry "bug" when the truth is that you've got a complex system and sometimes it takes a while to get all the components to co-exist peacefully...
D. Vargas
Please use [CODE]...your code here...[/CODE] tags when posting code. If you get an error, please post the full error message and stack trace, if present.
-
April 20th, 2010, 11:41 AM
#5
Re: waitForCardPresent() within thread freezes applet under Ubuntu
You may want to check the CPU usage to check to see if the applet is freezing through the main thread being suspended/blocked or if it is because the background thread is using all the available CPU resources?
BTW you may want to put a short sleep in your while loop or better still call the waitForCardAbsent() method otherwise when the card is present your background thread is going to go around and around the loop chewing up CPU resources until the card is removed.
-
April 20th, 2010, 01:53 PM
#6
Re: waitForCardPresent() within thread freezes applet under Ubuntu
If you use code tags, more people would be willing to look at your code snippet.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|