> Markdown version of [External Servlets](https://vaadin.com/docs/v24/tools/collaboration/advanced/integrating-external-servlets). Section index: [llms.txt](https://vaadin.com/docs/v24/tools/llms.txt)

# <a id="ce.external"></a>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.

`MyServlet.java`

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

See the [Other Applications](https://vaadin.com/docs/v24/tools/collaboration/going-to-production.md#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:

`MyServlet.java`

```java
@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`
