【问题标题】:Duplicate Local variable session (javax.jms.Session)重复的局部变量会话 (javax.jms.Session)
【发布时间】: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


    【解决方案1】:

    因为你定义了对象session 两次:

    <%-- <%!
        private ConnectionFactory factory = null;
        private Connection connection = null;
        private Session session = null; //<-- HERE
    

    这里

    <theme:defineObjects />
     <%
         final ConnectionFactory factory = null;
         final Connection connection = null;
         final Session session = null; // <-- HERE
    

    至少删除其中一个或重命名局部变量的会话之一。

    我认为在你的 servlet 中你有一个成员和一个绝对有效的局部变量。

    【讨论】:

    • 我已经注释了全局变量。私人会话会话 = null;在注释代码中。
    • 当评论中有另一个jsp标签时不起作用。
    • 我尝试删除局部变量。我收到(类型不匹配:无法将会话转换为 httpsession)错误。如果我使用本地变量并删除他的全局变量,我会遇到(重复的本地会话变量会话)问题。
    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多