¿Puede el atributo de modelo ser primitivo?

Tengo un problema extraño con ModelAttribute en Spring MVC 3.0. Cuando implemento la aplicación en localhost, funciona bien. Pero cuando implemento la aplicación en un servidor remoto, falla cada vez que el usuario accede a una acción específica, con los errores:

ERROR: my.package.application.web.filter.ExceptionFilter - long.<init>()
java.lang.NoSuchMethodException: long.<init>()
        at java.lang.Class.getConstructor0(Class.java:2706)
        at java.lang.Class.getDeclaredConstructor(Class.java:1985)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:762)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:356)
        at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:153)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426)
        at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

El código que utilizo para iniciar el ModelAttribute en ese controlador es:

    @ModelAttribute("id")
    public long getUserId(HttpSession session) {
        UserInfoHolder userHolder = (UserInfoHolder) session
                .getAttribute("userHolder");
        long userId = userHolder.getUserId();
        return userId;
    }

Por lo que puedo decir, el error no se puede reproducir en mi estación de trabajo local. Y sucede antes de que se llame la acción.

Mirando en HandlerMethodInvoker.java (línea 762), vemos esta línea:

bindObject = BeanUtils.instantiateClass(paramType);

Un compañero mío experimentado cree que esta línea causa problemas, porque un ModelAttribute de tipo primitivo (largo) no tiene un constructor. Creo que esa razón puede ser correcta, pero ¿cómo puede explicar que la aplicación web funciona bien en mi servidor local?

Intenté buscar para saber si ModelAttribute admite el tipo de datos primitivo, pero sin buenos resultados. ¿Alguien tiene experiencia sobre este tema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta