Несколько указателей / комментариев:
Если вы интегрируетесь с безопасностью сервера приложений, то имя пользователя будет доступно в любом компоненте. EJB могут получить его, вызвав getCallerPrincipal()
для внедренного варианта EJBContext
, здесь сервлеты javax.ejb.SessionContext
:
@Resource
private SessionContext sessionCtx;
могут получить принципал из HttpServletRequest.getUserPrincipal()
. Компоненты JAX-RS (ServiceEJB
) могут извлечь его из javax.ws.rs.core.SecurityContext.getUserPrincipal()
.
Есть ли какая-либо причина, по которой вы НЕ интегрируетесь с безопасностью сервера приложений?
Если у вас есть веская причина НЕ интегрироваться с безопасностью сервера приложений, я бы предложил вариант решение из предыдущего ответа . Вариант состоит в том, чтобы установить пользовательские данные из фильтра, применяемого ко всем ресурсам (либо фильтр сервлета, либо JAX-RS ContainerRequestFilter
), чтобы вам не приходилось беспокоиться об их установке в нескольких местах.
Если вам нужен только идентификатор пользователя для регистрации, я бы посоветовал вам взглянуть на концепцию сопоставленных диагностических контекстов (MDC) в slf4j. С его помощью вы можете установить идентификатор пользователя в начале запроса и сделать его доступным для всех операторов ведения журнала в дальнейшем.
Вы упоминаете, что никакое выделение не сделано в функции init, но это принимает во внимание вызовы, такие как register_chrdev (9), которые выделяют память внутренне для экземпляра устройства? Комментарий, что это - постоянное различие, заставляет меня задаться вопросом, могло ли это быть причиной.
Могут быть функции используются модулем, считаются в размер модуля? Попробовать
cat /proc/kallsyms | grep module_name
Различие между двумя размерами 404. Текст + данные + 404 = 1024. Это может быть, некоторая проблема гранулярности? Я не знаю, как размер вычисляется в ядре...
Однако код ядра и данные выделяются с помощью динамической памяти. И kmalloc использует предварительно выделенный блок памяти, таким образом, довольно вероятно, что существуют некоторые окружение, когда код и разделы данных выделяются.
Попытайтесь увеличить размер разделов данных и видеть, сообщил ли lsmod об изменении размера
Без большей информации я испытываю желание предположить что ее отладка наверху. Я говорю соблазненный, потому что у меня нет Вашей конфигурации ядра.