按照 jBoss 7.4 文档,我可以使用所需的注释定义一个 websocket
@ServerEndpoint("/websocket/helloworld")
public class MyService {
@OnMessage
String sayHello(String name){ ... };
@OnOpen
void helloOnOpen(Session session){ ... };
@OnClose
void helloOnClose(CloseReason reason){ ... };
}
我希望在外部存储库的接口中拥有该 websocket 的合约,并将该依赖项添加到我有实现的项目中。
因此,在这种情况下,我将拥有 chat-api 依赖项,在其中实现接口
@ServerEndpoint("/websocket/helloworld")
public interface MyServiceInterface {
@OnMessage
String sayHello(String name);
@OnOpen
void helloOnOpen(Session session);
@OnClose
void helloOnClose(CloseReason reason);
}
我的实现将使用这个接口
public class MyServiceImpl implements MyServiceInterface {
@Override
String sayHello(String name){ ... };
@Override
void helloOnOpen(Session session){ ... };
@Override
void helloOnClose(CloseReason reason){ ... };
}
但是如果我这样做,Wildfly 不会处理 websocket,它也不起作用。 (你可以在这里看到我遇到的问题)
有什么办法可以设置吗?
https://docs.oracle.com/javaee/7/api/javax/websocket/server/ServerEndpoint.html:
带注释的类必须有一个公共的无参数构造函数。