Documentation

Documentation versions (currently viewingVaadin 24)

Obtaining a Collaboration Kit Instance in a Servlet

When a VaadinService instance isn’t available, it’s impossible to get a CollaborationEngine instance with the getInstance() method. In a servlet, you can get the instance with the getAttribute() method, as long as it’s been configured.

CollaborationEngine ce = (CollaborationEngine) getServletContext()
        .getAttribute(CollaborationEngine.class.getName());

See the Other Applications in the production configuration documentation for details on how to configure Collaboration Kit.

In the following example, a message posted through a form is added to a topic as a system message:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    CollaborationEngine ce = (CollaborationEngine) getServletContext()
            .getAttribute(CollaborationEngine.class.getName());
    if (ce == null) {
        resp.sendError(500,
                "Collaboration Kit has not yet been initialized");
        return;
    }
    // Retrieve message that was sent in this POST request
    String userMessage = req.getParameter("message");
    String message = "An anonymous user posted the following message: "
            + userMessage;
    sendMessageToTopic(ce, message);
    resp.setStatus(202);
}

public void sendMessageToTopic(CollaborationEngine ce, String message) {
    // Get SystemConnectionContext from Collaboration Kit
    SystemConnectionContext systemConnectionContext = ce.getSystemContext();

    MessageManager messageManager = new MessageManager(
            systemConnectionContext, systemUser, topicId, ce);

    messageManager.submit(message) // Send message to topic
            .whenComplete((a, t) -> {
                // Close the message manager when done
                messageManager.close();
            });
}

5E7060D6-DF74-4209-9DD4-663C7BC21A10