我有一个非常简单的 MDB,只要它读取消息的队列不受保护,它就可以正常工作
在我使用用户名保护队列后,它不能再阅读消息了
@MessageDriven(mappedName = "DistributedQueueTest")
public class MdbReceiver implements MessageListener {
@Resource
private MessageDrivenContext mdc;
@Override
public void onMessage(Message inMessage) {
TextMessage msg = null;
try {
msg = (TextMessage) inMessage;
System.out.println("Test MdbReceiver Message received : " + msg.getText());
} catch (JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
}
}
}
我尝试了所有类型的 @RunAs 注释
@weblogic.jws.security.RunAs(role="Joan",mapToPrincipal="ccc_user")
,其中 ccc_user 可以从队列中读取消息
导入 javax.annotation.security.RunAs;
@RunAs("SomeRole")
在部署时出现错误无法部署 EJB:来自 mdbReceiver.jar 的 MdbReceiver:映射中的预期角色
知道如何使用注释来做到这一点吗?即使没有注释,我也尝试过......同样的 weblogic 控制台中的例外是
weblogic.jms.common.JMSSecurityException: Access denied to resource: type=<jms>, application=UNIV_REC_Module, destinationType=queue, resource=DistributedQueueTest, action=receive
谢谢