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

И смог это назвать.

Другие вопросы по тегам