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 :
I use EventListeners to notify my applet once waitForCardPresent() has finished.Code:cs = new CardStatus(); cardStatusThread = new Thread(cs); cardStatusThread.start();
The run() of my thread consists of (I have simplified the code) :
This applet is signed.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(); } }
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.


Reply With Quote

Bookmarks