Hello,

in the last few weeks there were some mails stating that OCF 1.2 would not
work with applets. I'd like to point out that this is not the case.

The error
java.lang.NoSuchMethodError: opencard.core.terminal.CardTerminalRegistry:
method
 setObserver(Lopencard/core/terminal/Observer;)V not found at
 opencard.core.event.EventGenerator.getGenerator(EventGenerator.java:101)

seems to indicate that the JVM executing the applet loads the class
CardTerminalRegistry was from OCF 1.1.1 instead of OCF 1.2 - the method
CardTerminalRegistry.setObserver() is new in OCF 1.2, it is not present in
the OCF 1.1.1 version of CardTerminalRegistry that is accidentially loaded.

Possible reasons for may be reminders of an OCF 1.1.1 installation in the
browser's java directory or in the classpath.

Best regards,

Thomas

Thomas Schaeck
Pervasive Computing Division - Extended e-business Solutions, EMEA
Phone: +49-(0)7031-16-3479   Mobile: +49-(0)171-6928407   e-mail:
[EMAIL PROTECTED]   Fax: +49-(0)7031-16-4888
Address: IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032
Boeblingen, Germany


"Ismael Blesa Part" <[EMAIL PROTECTED]> on 15.03.2000 09:15:06

Please respond to "Ismael Blesa Part" <[EMAIL PROTECTED]>

To:   "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
cc:    (bcc: Thomas Schaeck/Germany/IBM)
Subject:  [OCF]  OCF 1.2 DOES NOT WORK WITH APPLETS !!!!




 Hello,
 I am working with an applet that gets the smartcard via event
 notification (cardInserted and cardRemoved methods).
 When It runs  as application it works fine but when I try to run it as
 applet I get the following error in the Java Plug-In console:
                     java.lang.NoSuchMethodError:
 opencard.core.terminal.CardTerminalRegistry: method

 setObserver(Lopencard/core/terminal/Observer;)V not found
                     at
 opencard.core.event.EventGenerator.getGenerator(EventGenerator.java:101)

                     at ParkingApplet.register(ParkingApplet.java:540)
                     at ParkingApplet.init(ParkingApplet.java:120)
                     at sun.applet.AppletPanel.run(Compiled Code)
                     at java.lang.Thread.run(Thread.java:479)

  when doing the event registration.

 The code I am using is the proposed on the OCF 1.2 documentation.

This is the process we follow:

Source code:
Eventos.java

----------------------------
// Prueba de eventos

import javax.swing.*;
import java.applet.*;

import opencard.core.event.CTListener;
import opencard.core.event.CardTerminalEvent;
import opencard.core.event.EventGenerator;
import opencard.core.terminal.Slot;
import opencard.core.terminal.CardTerminal;
import opencard.core.service.SmartCard;

public class Eventos  extends JApplet implements CTListener {
 boolean isStandalone = false;
 private SmartCard smartcard = null;
 private CardTerminal terminal=null;
 private int slotID=0;

 //Construct the applet
   public Eventos() {
   }

 //Initialize the applet
   public void init() {
  try {
     System.out.println("Ejecutando init()");
     System.out.println("SmartCard.start()");
     SmartCard.start();
     register();
  } catch (Exception e) {
     e.printStackTrace(); }
   }

   public void start() {
  System.out.println("Ejecutando start()");
   }

 public void stop(){
  System.out.println("Ejecutando stop()");
 }

 public void destroy() {
  try {
   System.out.println("Ejecutando destroy()");
   unregister();
   SmartCard.shutdown();
  } catch (Exception eDestroy) {
   System.out.println(eDestroy.toString());}
 }

 public void register()
 {
  EventGenerator.getGenerator().addCTListener(this);
  /*try {
   EventGenerator.getGenerator().createEventsForPresentCards(this);
  } catch (Exception e) {
   e.printStackTrace(System.err);
  }*/
 }

 public void unregister()
 {
  EventGenerator.getGenerator().removeCTListener(this);
 }

 public void cardInserted(CardTerminalEvent event)
 {
  if (smartcard == null) {
   try {
    smartcard = SmartCard.getSmartCard(event);
    terminal = event.getCardTerminal();
    slotID = event.getSlotID();
    System.out.println("Tarjeta insertada");
   } catch (Exception eI) {
    eI.printStackTrace(System.err);
   }
  }
 }

 public void cardRemoved(CardTerminalEvent event)
 {
  if ((event.getSlotID() == slotID) &&
(event.getCardTerminal()==terminal)) {
   smartcard = null;
   terminal = null;
   slotID = 0;
   System.out.println("Tarjeta retirada");
  }
 }

 public static void main(String[] args)
 {
   Eventos applet = new Eventos();
   applet.isStandalone = true;
   applet.init();
      applet.start();
   }//del main

} //del applet
-------------------------------------
Compilation:
O:\Proyectos\OCF 1.1.1 to OCF 1.2>javac -deprecation -classpath
.;..\TODO_OCF1.2.jar Eventos.java
Eventos.java:70: Note: The method opencard.core.service.SmartCard
getSmartCard(opencard.core.event.CardTerminalEvent) in class
opencard.core.service.SmartCard has been deprecated.
                               smartcard =
SmartCard.getSmartCard(event);
                                                                  ^
Note: Eventos.java uses or overrides a deprecated API.  Please consult
the
documentation for a better alternative.
1 warning

Execution as application
O:\Proyectos\OCF 1.1.1 to OCF 1.2>java -classpath .;..\TODO_OCF1.2.jar
Eventos

Ejecutando init()
SmartCard.start()
Ejecutando start()
Tarjeta insertada
Tarjeta retirada
Tarjeta insertada
Tarjeta retirada


We make a jar that contains Eventos.class and we sign it. When we try to
run
it from an applet the messages from
the java console are:

Java(TM) Plug-in
Using JRE version 1.2.1
User home directory = C:\WINNT\Profiles\jmteruel
Proxy Configuration: no proxy

JAR cache enabled.
Opening http://smartserv.tissat.es/OCF1.2/pruebas/TODO_OCF1.2.jar no
proxy
No holding
CacheHandler trying caching.
http://smartserv.tissat.es/OCF1.2/pruebas/TODO_OCF1.2.jar
CacheHandler file name: null
No cache available, using remote copy
Opening http://smartserv.tissat.es/OCF1.2/pruebas/TODO_OCF1.2.jar no
proxy
Opening http://smartserv.tissat.es/OCF1.2/pruebas/Eventos.jar no proxy
No holding
CacheHandler trying caching.
http://smartserv.tissat.es/OCF1.2/pruebas/Eventos.jar
CacheHandler file name: C:\Archivos de
programa\Netscape\Users\jmteruel\cache\MURV2FA3.JAR
Got cached copy
Ejecutando init()
SmartCard.start()
java.lang.NoSuchMethodError:
opencard.core.terminal.CardTerminalRegistry:
method setObserver(Lopencard/core/terminal/Observer;)V not found
 at
opencard.core.event.EventGenerator.getGenerator(EventGenerator.java:101)

 at Eventos.register(Eventos.java:53)
 at Eventos.init(Eventos.java:29)
 at sun.applet.AppletPanel.run(Compiled Code)
 at java.lang.Thread.run(Thread.java:479)

Have you tested an applet accessing OCF using the 1.2 version?


 Does anybody know something about this error?
 Cheers,
 Ismael





---
> Visit the OpenCard web site at http://www.opencard.org/ for more
> information on OpenCard---binaries, source code, documents.
> This list is being archived at http://www.opencard.org/archive/opencard/

! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email
! to
!                           [EMAIL PROTECTED]
! containing the word
!                           unsubscribe
! in the body.






---
> Visit the OpenCard web site at http://www.opencard.org/ for more
> information on OpenCard---binaries, source code, documents.
> This list is being archived at http://www.opencard.org/archive/opencard/

! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email
! to
!                           [EMAIL PROTECTED]
! containing the word
!                           unsubscribe 
! in the body.

Reply via email to