Динамическое добавление новых ресурсов - CoAP
После запуска CoAP-сервера мне нужно динамически добавлять новые ресурсы. Но я должен остановить и запустить сервер снова, чтобы получить доступ к новым ресурсам. Я предполагаю, что добавление новых ресурсов аналогично добавлению нового HTTP-сервлета на уже запущенный HTTP-сервер.
Здесь я добавил исходный код, который используется для добавления динамических ресурсов. Если я что-то здесь упустил, дайте мне знать.
private static CoapServer server;
public CoAPEventAdapter(InputEventAdapterConfiguration eventAdapterConfiguration,
Map<String, String> globalProperties) {
this.eventAdapterConfiguration = eventAdapterConfiguration;
this.globalProperties = globalProperties;
if(server == null){
server = new CoapServer();
server.start();
}
}
@Override
public void connect() {
registerDynamicEndpoint(eventAdapterConfiguration.getName());
isConnected = true;
}
private void registerDynamicEndpoint(String adapterName) {
server.stop();
server.add(new HelloWorldResource(adapterName));
server.start();
}
class HelloWorldResource extends CoapResource {
public HelloWorldResource(String resourceName) {
// set resource identifier
super(resourceName);
// set display name
getAttributes().setTitle("Hello-World Resource");
}
@Override
public void handleGET(CoapExchange exchange) {
// respond to the request
exchange.respond("Hello World!");
}
}
1 ответ
Я только что попытался добавить CoapResource динамически:
@Override
public void handleGET(CoapExchange exchange) {
server.getRoot().add(new CoapResource("dynstatus") {
@Override
public void handleGET(CoapExchange exchange) {
System.err.println("dynstatus!!!");
}
});
И смог это назвать.