ich Syntaxfehler auf einem Methodenaufruf, dass ich nicht verstehe:Warum stimmt diese Methode nicht mit der definierten Signatur überein?
The method connectToServer(Endpoint, ClientEndpointConfig, URI) in the type WebSocketContainer is not applicable for the arguments (WebsocketClientEndpoint, ClientEndpointConfig, URI)
Die Klasse WebsocketClientEndpoint
erstreckt Endpoint
und sollte die Unterschrift connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)
entsprechen. Aber das tut es nicht. Ich bekomme einen Syntaxfehler in Eclipse.
Was fehlt mir? Hier
ist der Code:
import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.websocket.ClientEndpoint;
import javax.websocket.ClientEndpointConfig;
import javax.websocket.CloseReason;
import javax.websocket.ContainerProvider;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import javax.xml.bind.DatatypeConverter;
import org.glassfish.tyrus.client.ClientProperties;
import org.glassfish.tyrus.client.auth.AuthConfig;
import org.glassfish.tyrus.client.auth.Credentials;
import org.glassfish.tyrus.core.wsadl.model.Endpoint;
/**
*/
@ClientEndpoint
public class WebsocketClientEndpoint extends Endpoint
{
Session userSession = null;
private MessageHandler messageHandler;
public WebsocketClientEndpoint(URI endpointURI)
{
try
{
ClientEndpointConfig.Configurator configurator = new ClientEndpointConfig.Configurator()
{
public void beforeRequest(Map<String, List<String>> headers)
{
headers.put("Authorization",
Arrays.asList("Basic " + DatatypeConverter.printBase64Binary("user:password".getBytes())));
}
};
ClientEndpointConfig clientConfig = ClientEndpointConfig.Builder.create().configurator(configurator)
.build();
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(this, clientConfig, endpointURI); //Signature mismatch here
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
... websocket callbacks
}
'Klasse extends Endpoint> 'und' Endpoint' sind zwei sehr unterschiedliche Dinge. – tkausl