how do I pass a parameter to the @OnOpen method with JEE7 Websockets,

jakarta-ee, java, websocket

Solution

Depends what do you mean by initialisation parameter. You can do something like this:

@ServerEndpoint(value = "/websocket/{clientId}")
public class Service {
    private volatile String clientId; 
    @OnOpen
    public void init(@PathParam("clientId") String clientId, Session session) throws IOException {
         this.clientId = clientId;
    }
}

Then you have do use following URL to access your endpoint: `ws://host/contextPath/websocket/[clientId]`.

if you use query parameters, please see `Session#getQueryString()`.

Problem

I have this code ``` @ServerEndpoint(value = "/websocket") public class Service { private String clientId; @OnOpen public void init(Session session) throws IOException { //opening a websocket // get clientId clientId = // Code here to get initialization parameter. } } ``` How do I get initialization parameters from the client opening the socket?.

Original source