2017-09-06 27 views
-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)。但事實並非如此。我在eclipse中出現語法錯誤。

我失蹤了什麼?

下面是代碼:

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 <?擴展端點>和端點是兩個完全不同的東西。 – tkausl

回答

0

connectToServer需要javax.websocket.Endpoint但你逝去的擴展org.glassfish.tyrus.core.wsadl.model.Endpoint這是完全不兼容的類,並且不延伸javax.websocket.Endpoint對象。

相關問題