中得到了改善。
我正在尝试创建一个包含单个WebSocket的战争文件。由于某种原因,Jetty想要HTTPClient,即使我只想拥有服务器端逻辑。httpclient在" Jetty-Client-9.4.0.v20161208.jar"文件中存在于Jetty下。但这未在状态转储(Jetty.server.dumpafterstart = true)中列出。
web.xml
<web-app>
<display-name>WebSocketApp</display-name>
<servlet>
<servlet-name>wsservlet</servlet-name>
<servlet-class>com.example.test.MyJettyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>wsservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
插座:
@ServerEndpoint("/control")
public class ControlSocket {
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket opened: " + session.getId());
}
@OnMessage
public void onMessage(String txt, Session session) throws IOException {
System.out.println("Message received: " + txt);
session.getBasicRemote().sendText(txt.toUpperCase());
}
@OnClose
public void onClose(CloseReason reason, Session session) {
System.out.println("Closing a WebSocket due to " + reason.getReasonPhrase());
}
}
gradle构建文件:
dependencies {
compile 'org.projectlombok:lombok:1.16.2'
compile group: 'javax.websocket', name: 'javax.websocket-api', version: '1.1'
compile group: 'org.yaml', name: 'snakeyaml', version: '1.16'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.21'
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
testCompile 'junit:junit:4.11'
}
我认为依赖关系有问题。但是到底是什么?我应该包括Websocket实施罐吗?如果是,那为什么?
如果使用Jetty-Distribution,请添加client
模块。
$ cd /path/to/mybase
$ java -jar /path/to/jetty-dist/start.jar --add-to-start=client
这在码头9.4.1 btw。