1

solace アプライアンスで JMS メッセージングをテストしようとしています。JMS Hello World Publisher サンプルを機能させようとしています。ConnectionFactory を割り当てようとすると、キャスト例外が発生します。

どんな助けでも感謝します。

    Hashtable<String, Object> env = new Hashtable<String, Object>();
    env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.solacesystems.jndi.SolJNDIInitialContextFactory");

    env.put(InitialContext.PROVIDER_URL, "smf://xxx,xxx.com:55555");
    env.put(SupportedProperty.SOLACE_JMS_VPN, "VPN");
    env.put(Context.SECURITY_PRINCIPAL, "User");
    env.put(InitialContext.SECURITY_CREDENTIALS, "Pwd");

    // InitialContext is used to lookup the JMS administered objects.
    InitialContext initialContext = new InitialContext(env);
    // Lookup ConnectionFactory.
    ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("JNDI/CF/TEST");        

スレッド「メイン」の xception java.lang.ClassCastException: com.solacesystems.jms.impl.SolTopicImpl は、com.solacesystems.jms.samples.intro.SolJMSHelloWorldPub.main(SolJMSHelloWorldPub.java:99 で javax.jms.ConnectionFactory にキャストできません)

4

2 に答える 2

1

SolJmsUtility.createConnectionFactory を使用して JNDI 名を検索することで、機能させることができました。

    SolConnectionFactory solCF = SolJmsUtility.createConnectionFactory(env);

    // Connection connection = cf.createConnection();
    Connection connection = solCF.createConnection();

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    Destination destination = (Destination)initialContext.lookup("JNDI/CF/TEST");

    MessageProducer producer = session.createProducer(destination);
于 2016-10-31T15:59:39.287 に答える
0

JNDI/CF/TESTSolaceルーターのトピックになるように構成されている可能性が最も高いです。トピックを接続ファクトリにキャストできないため、クラス キャスト例外が発生します。

JNDI/CF/TESTルーターの JMS トピックではなく、JMS 接続ファクトリーであることを確認してください。

設定された JMS 接続ファクトリのリストは、SolAdmin を介して、またはshow jndi connection-factory *ルーターの CLI を介して の出力を介して確認できます。

同様に、設定された JMS トピックのリストは、SolAdmin を介して、またはshow jndi topic *ルーターの CLI を介して の出力を介して確認できます。

于 2016-11-02T01:57:49.850 に答える