El uso del nuevo espacio de nombres xmlns.jcp.org en materiales compuestos causa java.lang.NullPointerException en java.util.concurrent.ConcurrentHashMap.putIfAbsent

Estoy leyendo el tutorial de Java EE 7 dehttp://docs.oracle.com/javaee/7/tutorial/doc/jsf-facelets005.htm#GIQZR

Después de escribir el código de ejemplo en el capítulo 8.5 Componentes compuestos en mi IDE y ejecutar el ejemplo en GlassFish4.0, recibí un error

java.lang.NullPointerException
    at java.util.concurrent.ConcurrentHashMap.putIfAbsent(ConcurrentHashMap.java:1078)
    at com.sun.faces.util.Cache.get(Cache.java:116)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.getComponentMetadata(FaceletViewHandlingStrategy.java:237)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:951)
    at javax.faces.application.ApplicationWrapper.createComponent(ApplicationWrapper.java:648)

Luego reviso la versión anterior de este tutorial, encontré una diferencia.

En la versión Java EE 7, el código email.xhtml es como sigue:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:composite="http://xmlns.jcp.org/jsf/composite"
  xmlns:h="http://xmlns.jcp.org/jsf/html">

<h:head>
    <title>This content will not be displayed</title>
</h:head>
<h:body>
    <composite:interface>
        <composite:attribute name="value" required="false"/>
    </composite:interface>

    <composite:implementation>
        <h:outputLabel value="Email id: "></h:outputLabel>
        <h:inputText value="#{cc.attrs.value}"></h:inputText>
    </composite:implementation>
</h:body>
</html>

Pero en la versión Java EE 6

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:composite="http://java.sun.com/jsf/composite"
  xmlns:h="http://java.sun.com/jsf/html">

<h:head>
    <title>This content will not be displayed</title>
</h:head>
<h:body>
    <composite:interface>
        <composite:attribute name="value" required="false"/>
    </composite:interface>

    <composite:implementation>
        <h:outputLabel value="Email id: "></h:outputLabel>
        <h:inputText value="#{cc.attrs.value}"></h:inputText>
    </composite:implementation>
</h:body>
</html>

Después de cambiar el código a la versión Java EE 6, el error desaparece. La diferencia es el espacio de nombres. No sé si este es un tema de este tutorial. ¿Hay alguno que sepa?

Respuestas a la pregunta(1)

Su respuesta a la pregunta