Specification Errata

Java Card™ 3 Platform
Version 3.0.1, Connected Edition

December 2009

 

 

Table of Contents

Introduction
Application Programming Interface
Sample
Sending Feedback

Introduction

This page contains contains a list of important reported errata for the specifications and other documents included in the specification bundle of the Java Card™ 3 Platform, Version 3.0.1, Connected Edition that was released May 2009.

Application Programming Interface

Location/Item Description Correction
javacardx.framework.JCSystem
Bug ID: 6841714
Class objects from application class loader should not be implicitly transferable. Only Class instances corresponding to classes loaded above the application group classloaders are implicitly transferable:
  • Class instances corresponding to system API and extension library classes are not bound to any context and can freely be passed across the firewall.
  • Class instances corresponding to application classes are bound to their respective group context and cannot be passed across the firewall.
com.sun.javacard.spi.cardmgmt.ApplicationGroup
Bug ID: 6850690
The semantics and handling of the runtimeConfig and initParams parameters of the newApplication method must be clarified and enhanced. The semantics and handling of the runtimeConfig parameter has been clarified as follows:
  • Runtime attributes already defined in the runtime descriptor can be mapped to new values.
  • New runtime attributes not defined in the runtime descriptor can be defined.
  • Runtime attributes already defined in the runtime descriptor can be removed by mapping the attribute names to the special String token "<<REMOVED>>".
  • New runtime attributes defined in the runtimeConfig parameter that correspond to application properties can be retrieved by the application using the JCSystem.getAppProperty method.
The semantics and handling of the initParams parameter has been clarified as follows:
  • The method signature has been modified so that initParams is of type Object instead of Object[]. The new method signature is as follows:
    Application newApplication(String moduleName,
                      
    
                               String declaredAppURI,
                      
    
                               String requestedAppURI,
                      
    
                               Hashtable<String,String> runtimeConfig,
                      
    
                               Object initParams)
                    
  • When the application being instantiated is an applet application, the initParams value must be of type byte[] and must be passed as applet data in the bArray parameter of the Applet.install method.
  • When the application being instantiated is a web application, the initParams value must be of type Hashtable<String,String>. The name/value pairs it contains must be set as ServletContext init parameters (retrievable by calling the ServletContext.getInitParameter). The new set of init parameters, if defined, overrides the complete set of init parameters defined in the web application descriptor.
Web descriptor schema
Bug ID: 6899497
Web descriptor schema wrongly excludes extension for servlet mapping The restriction on URL pattern for servlet mapping (in restricted-url-patternType ) is excluding extension mapping strings such as *.html or *.gif . The restriction that it must start with a / is for cases where it is not an extension mapping.
The following pattern has been added to the allowed patterns in the web descriptor schema:
<xsd:pattern value="\*\..*"/ >

The element restricted-url-patternType of the jcweb-app_3_0.xsd schema is therefore defined as follows:
<xsd:simpleType name="restricted-url-patternType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="/.*"/>
<xsd:pattern value="\*\..*"/>
</xsd:restriction>
</xsd:simpleType>
Web application static resource real path
Bug ID: 6891544
The hierarchy of static resources of a web app should be made accessible under the /docroot subdirectory The Web Application Environment chapter of the Java Card Runtime Environment Specification, Connected Edition is updated as follows:
  • Instance creation: A static resource served for the request URI <context path><resource path> MUST have a real path in the form of <context path>/docroot<resource path>.
  • Instance deletion: The content of the web application’s private file namespace, if any, MUST be removed, with the exception of the content of the docroot directory (<context path>/docroot) which remains part of the web application module’s structured hierarchy of directories.
The APDU-based Application Environment chapter of the Java Card Runtime Environment Specification, Connected Edition as follows:
  • Instance deletion: The content of the applet application’s private file namespace, if any, MUST be removed.
Classic transaction backward compatibility
Bug ID: 6899982

 

Constructors and static initializer methods of a classic application must support a classic transaction in progress for backward compatibility. All methods of a classic applet application or classic library MUST be annotated as "SUPPORTED". This includes all constructor methods as well as static initializer methods.
xml namespace of Java Card-defined schema elements
Bug ID: 6873954
The xml name space for the Java Card- defined elements is not stated in the Java Card Runtime Environment Specification. The Java Card Runtime Environment Specification, Connected Edition should explicitly mention that all the elements described for applet.xml and javacard.xml are in this xml name space.
javacardx.facilities.EventRegistry.register()
Bug ID: 6839492
Clarification of sourceURI in EventRegistry.register/unregister methods Clarifications in the register and unregister methods of javacardx.facilities.EventRegistry:
  • ///platform is a legal sourceURI parameter for platform events in both register() and unregister() methods
  • IllegalArgumentException is thrown on unregister() when event URI is absolute and rooted in an event namespace not legal for the source designated by sourceURI
  • unregister() method unregisters the specified listener previously registered by the current application for events of the specified type fired by the specified source(s)
  • unregister() must not unregister a listener when the explicit source at unregistration does not match the explicit source at registration
Restartable tasks
Bug ID: 6838340
Re-registration of Restartable tasks must be clarified Clarifications in the register methods of javacardx.facilities.TaskRegistry :
  • If the same task object is already registered, then the current execution state of the task may get affected depending on the value of the eager parameter:
  • if the  eager parameter equals false (the task  is only to be started after the next platform reset) and if the task is currently being executed, then the task's thread is interrupted (by a call to java.lang.Thread.interrupt()).
  • if the eager parameter equals true (the task is to be started immediately) and if the task is not currently being executed, then the task is started.
  • in all other cases, re-registration of the same task object will have no additional effect on the current execution state of the task.

 

javacardx.security.URIPermission.implies()
Bug ID: 6837992
URIPermission should explicitly state that query and fragment URI components are not used in implies() Clarifications in the implies method of javacardx.security.URIPermission :
  • The query and fragment components of both URIs are ignored for this test (meaning, the implication test)

Sample

Location/Item Description Correction

[ Top]

Sending Feedback

We greatly appreciate your feedback on the specifications.


Left Curve
Embedded Downloads
Right Curve
Java 8 banner (182)



Java One 2014 RHS Banner

Duke's Choice RHS Banner