Wildfly ContextService одновременная защитаIdentity является нулевым - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь отправить объект через очередь.Объект обернут в createContextualProxy ContextService.Но если я разверну объект, то securityIdentity будет нулевым.Объект является правильным прокси.

Отправитель:

@Resource(name = "DefaultContextService")
private ContextService cs;

public void sendMessage() {
    ObjectMessage objectMessage = context.createObjectMessage();
    objectMessage.setObject((Serializable) cs.createContextualProxy(<ObjectToSend>, 
            Runnable.class));            
    context.createProducer().send(queue, objectMessage);
}

Получатель:

ObjectMessage message = (ObjectMessage) msg;                
Runnable myObject = (Runnable) message.getObject();
myObject.run();

Доступный для выполнения объект myObject является прокси.Но securityIdentity = null.

Кто-нибудь имел эту проблему раньше?

1 Ответ

0 голосов
/ 25 января 2019

Единственный способ сделать это - включить идентификатор безопасности пользователя непосредственно в объект, который вы отправляете.

Информация о контексте безопасности не сохраняется в контекстном прокси, потому что WildFly (upдо 15.0.1) не работает.

JMS требует, чтобы полезные нагрузки ObjectMessage были сериализуемыми.Однако объект идентификатора безопасности, сохраненный в прокси (объект org.wildfly.security.auth.server.SecurityIdentity ), не является сериализуемым, поэтому он объявляется transient в org.jboss.as.ee.concurrent.IdentityAwareProxyInvocationHandler реализация прокси.

Следовательно, он не выдерживает последующего процесса сериализации / десериализации сообщений JMS.

Существует старая WildFly это было закрыто, но я знаю, что реализация безопасности была полностью заменена с тех пор ...

...