【发布时间】:2015-03-09 08:17:45
【问题描述】:
我正在尝试在我的 jsp 页面中向 ActiveMQ 发送一些消息。但是我遇到了 Session (javax.jms.Session) 变量声明的问题。如果我在本地声明会话变量,我会遇到 (Duplicate local session variable session) 问题。如果我全局声明我的变量,我会收到 (Type mismatch: cannot convert session to httpsession) 错误。
我的代码,
<%@page import="org.apache.activemq.ActiveMQConnection" %>
<%@page import="org.apache.activemq.ActiveMQConnectionFactory" %>
<%@page import="javax.jms.Connection" %>
<%@page import="javax.jms.ConnectionFactory" %>
<%@page import="javax.jms.Destination" %>
<%@page import="javax.jms.JMSException" %>
<%@page import="javax.jms.MessageProducer" %>
<%@page import="javax.jms.Session" %>
<%@page import="javax.jms.TextMessage" %>
<%-- <%!
private ConnectionFactory factory = null;
private Connection connection = null;
private Session session = null;
private Destination destination = null;
private MessageProducer producer = null;
%> --%>
<portlet:defineObjects />
<theme:defineObjects />
<%
final ConnectionFactory factory = null;
final Connection connection = null;
final Session session = null;
final Destination destination = null;
final MessageProducer producer = null;
try {
factory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("SAMPLEQUEUE");
producer = session.createProducer(destination);
TextMessage message = session.createTextMessage();
message.setText(formData);
producer.send(message);
System.out.println("Sent: " + message);
} catch (JMSException e) {
e.printStackTrace();
}
%>
但相同的代码在 servlet 中运行良好。有什么建议吗?
【问题讨论】:
标签: java jsp session servlets jms