簡體   English   中英

安全性:連接到JMS外部服務器Weblogic時主題無效

[英]Security: Invalid subject while connecting to JMS External Server Weblogic

我有一個應該在Weblogic 10.3.5上運行的EJB模塊

在Weblogic控制台上,我已將JMS模塊設置為指向另一個Weblogic實例的外部服務器。 在此模塊中,我有一個jms/myQueue和一個jms/myConnectionFactory

在EJB模塊中,我定義了帶有以下注釋的MDB,並且它起作用(當隊列中存在消息並對其進行處理時會得到通知)。

@MessageDriven(
    activationConfig = { @ActivationConfigProperty(
            propertyName = "destination", propertyValue = "jms/myQueue"), @ActivationConfigProperty(
            propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(
            propertyName = "connectionFactoryJndiName", propertyValue = "jms/myConnectionFactory")
    }

問題是,當我嘗試定義一個將消息放入同一隊列的客戶端時,使用EJB內部的以下代碼

@Stateless
public class messageSender implements messageSenderLocal {

    @Resource(mappedName="jms/myConnectionFactory")
    private ConnectionFactory connectionFactory;

    @Resource(mappedName="jms/myQueue")
    private Queue queue;

    @Override
    public void sendMessage(String msgString) {
        Connection connection = connectionFactory.createConnection();
        Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
        MessageProducer messageProducer = session.createProducer(queue);
        Message message = session.createTextMessage();
        message.setText(msgString);
        messageProducer.send(message);
        connection.close();
    }
}

我在語句connection.createSession(true, Session.AUTO_ACKNOWLEDGE)處收到以下錯誤:

java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]
       at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:234) ~[com.bea.core.weblogic.rmi.client_1.10.0.0.jar:1.10.0.0]
       at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348) ~[com.bea.core.weblogic.rmi.client_1.10.0.0.jar:1.10.0.0]
       at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) ~[com.bea.core.weblogic.rmi.client_1.10.0.0.jar:1.10.0.0]
       at weblogic.jms.frontend.FEConnectionFactoryImpl_1035_WLStub.connectionCreateRequest(Unknown Source) ~[weblogic.jar:10.3.5.0]
       at weblogic.jms.client.JMSConnectionFactory.setupJMSConnection(JMSConnectionFactory.java:224) ~[weblogic.jar:10.3.5.0]
       at weblogic.jms.client.JMSConnectionFactory.createConnectionInternal(JMSConnectionFactory.java:285) ~[weblogic.jar:10.3.5.0]
       at weblogic.jms.client.JMSConnectionFactory.createQueueConnection(JMSConnectionFactory.java:165) ~[weblogic.jar:10.3.5.0]
       at ...

該錯誤顯然與Weblogic上的受信任域有關,但是

  1. 為什么接收時連接正常?
  2. 有什么方法可以解決此問題而不必更改外部服務器中的配置?

謝謝。

問題是:外部JNDI服務器不需要憑據,但是我們的身份驗證器會自動設置當前登錄的用戶。

為避免此行為並在外部JNDI服務器上強制“無用戶”登錄,我將字符串java.naming.security.principal=放在Weblogic控制台上外部服務器配置的JNDI屬性字段中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM