-1
私は理解していないメソッド呼び出しの構文エラーを取得:このメソッドが定義済みのシグネチャと一致しないのはなぜですか?
The method connectToServer(Endpoint, ClientEndpointConfig, URI) in the type WebSocketContainer is not applicable for the arguments (WebsocketClientEndpoint, ClientEndpointConfig, URI)
クラスWebsocketClientEndpoint
がEndpoint
を拡張し、署名connectToServer(Class<? extends Endpoint> endpointClass, ClientEndpointConfig cec, URI path)
と一致する必要があります。しかし、それはしません。私は日食で構文エラーを取得します。
何が欠けていますか?ここで
コードです:
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
}
'Class <? extends Endpoint>と 'Endpoint'は2つの非常に異なるものです。 – tkausl