#solace ClassCastException jms连接工厂

#solace ClassCastException jms连接工厂,jms,classcastexception,solace,Jms,Classcastexception,Solace,我正在尝试在solace设备上测试JMS消息传递。 正在尝试使JMS Hello World Publisher示例正常工作。 我在尝试分配ConnectionFactory时遇到强制转换异常 谢谢你的帮助 Hashtable<String, Object> env = new Hashtable<String, Object>(); env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.solacesy

我正在尝试在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");        
Hashtable env=new Hashtable();
env.put(InitialContext.INITIAL_CONTEXT_工厂,“com.solacesystems.jndi.SolJNDIInitialContextFactory”);
env.put(InitialContext.PROVIDER\u URL,“smf://xxx,xxx.com:55555”);
环境投入(SupportedProperty.SOLACE_JMS_VPN,“VPN”);
环境投入(Context.SECURITY_主体,“用户”);
环境投入(InitialContext.SECURITY_凭证,“Pwd”);
//InitialContext用于查找JMS管理的对象。
InitialContext InitialContext=新的InitialContext(env);
//查找连接工厂。
ConnectionFactory cf=(ConnectionFactory)initialContext.lookup(“JNDI/cf/TEST”);
线程“main”java.lang.ClassCastException中的异常:com.solacesystems.jms.impl.SolTopicImpl无法转换为javax.jms.ConnectionFactory
在com.solacesystems.jms.samples.intro.SolJMSHelloWorldPub.main(SolJMSHelloWorldPub.java:99)

上,我可以通过使用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);

JNDI/CF/TEST
很可能被配置为Solace路由器上的主题。 这会导致类强制转换异常,因为无法将主题强制转换为连接工厂

请确保
JNDI/CF/TEST
是JMS连接工厂,而不是路由器上的JMS主题

配置的JMS连接工厂列表可以通过SolAdmin进行验证,或者通过路由器上的CLI通过
show jndi connection factory*
的输出进行验证


类似地,配置的JMS主题列表可以通过SolAdmin进行验证,或者通过路由器上的CLI输出
show jndi topic*
进行验证。

是否可以使用包导入添加完整的类?