Documentation

Documentation versions (currently viewingVaadin 23)
New Acceleration Kits: Observability Kit, SSO Kit, and Swing Kit. Read the blog post.

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 has been configured. See the Other Applications in production configuration documentation for details on how to configure Collaboration Kit.

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

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