Динамическое добавление новых ресурсов — 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!");
    }
}

person GPrathap    schedule 03.07.2016    source источник


Ответы (1)


Я только что попытался динамически добавить CoapResource:

@Override
public void handleGET(CoapExchange exchange) {
    server.getRoot().add(new CoapResource("dynstatus") {
        @Override
        public void handleGET(CoapExchange exchange) {
            System.err.println("dynstatus!!!");
        }
    });

И смог дозвониться.

person eugene-nikolaev    schedule 24.02.2017