2017-09-06 7 views
-1

私は理解していないメソッド呼び出しの構文エラーを取得:このメソッドが定義済みのシグネチャと一致しないのはなぜですか?

The method connectToServer(Endpoint, ClientEndpointConfig, URI) in the type WebSocketContainer is not applicable for the arguments (WebsocketClientEndpoint, ClientEndpointConfig, URI) 

クラスWebsocketClientEndpointEndpointを拡張し、署名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 
} 
+0

'Class <? extends Endpoint>と 'Endpoint'は2つの非常に異なるものです。 – tkausl

答えて

0

connectToServerjavax.websocket.Endpointを取るが、あなたは完全に互換性のないクラスであり、javax.websocket.Endpointを拡張していないorg.glassfish.tyrus.core.wsadl.model.Endpointを拡張するオブジェクトを渡しています。

関連する問題