Servlets 我可以在RequestDispatcher之后编写代码吗?

Servlets 我可以在RequestDispatcher之后编写代码吗?,servlets,jakarta-ee,ibm-mq,requestdispatcher,Servlets,Jakarta Ee,Ibm Mq,Requestdispatcher,msg.read()具有从MQ读取消息的代码。在insertRequestTemplate方法中,我在ctx.getRequestDispatcher(responsePage).forward(req,resp)之后调用readMessage方法;这是正确的称呼吗? 但在insertRequestTemplate方法中,在执行readMessage()之前,页面不会被转发到下一个页面,因为页面会持续加载很长时间,直到从MQ读取消息为止。您能在这方面帮助我吗。我所看到的大多数servlet将请求

msg.read()具有从MQ读取消息的代码。在insertRequestTemplate方法中,我在ctx.getRequestDispatcher(responsePage).forward(req,resp)之后调用readMessage方法;这是正确的称呼吗?
但在insertRequestTemplate方法中,在执行readMessage()之前,页面不会被转发到下一个页面,因为页面会持续加载很长时间,直到从MQ读取消息为止。您能在这方面帮助我吗。

我所看到的大多数servlet将请求转发给另一个servlet的示例都在方法的末尾有dispatcher
forward
调用。也就是说,除了方法末尾的大括号外,没有其他代码了

我猜在调用方法完成之前,转发不会发生。因此,
msg.read()
将停止
insertRequestTemplate
方法的完成。这很可能是因为msg.read中的代码是同步执行的。导致http请求上的http超时

如何解决此问题将取决于您希望如何处理从
msg.read()

获取的消息。使用msg.read()我正在处理这些消息并更新请求状态。解决这个问题的办法是什么。
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

        //some code here
        
    }
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {

        //performTask(req, resp);
        //some code here
        }
    
private void insertRequestTemplate() {
HttpSession session = req.getSession();
responsePage = req.getParameter("ResponsePage");
ServletContext ctx = getServletConfig().getServletContext();
ctx.getRequestDispatcher(responsePage).forward(req,resp);
readMessage();

public void readMessage()
    {
        System.out.println("calling MessageTrigger_ABean");
        MessageTrigger_ABean msg = new MessageTrigger_ABean();
        msg.read();
    }