我正在尝试在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");
线程"main“java.lang.ClassCastException中出现异常:无法在com.solacesystems.jms.samples.intro.SolJMSHelloWorldPub.main(SolJMSHelloWorldPub.java:99)中将com.solacesystems.jms.impl.SolTopicImpl强制转换为javax.jms.ConnectionFactory
发布于 2016-10-31 23:59:39
我能够通过使用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-11-02 09:57:50
JNDI/CF/TEST
最有可能被配置为Solace路由器上的主题。这会导致类转换异常,因为主题不能转换到连接工厂中。
请确保JNDI/CF/TEST
是一个JMS连接工厂,而不是路由器上的JMS主题。
已配置的JMS连接工厂列表可以通过SolAdmin进行验证,也可以通过路由器上的命令行界面通过show jndi connection-factory *
的输出进行验证。
类似地,配置的JMS主题列表可以通过SolAdmin验证,也可以通过路由器上的命令行界面通过show jndi topic *
的输出验证。
https://stackoverflow.com/questions/40343791
复制相似问题