2016-07-03 3 views
0

После запуска сервера CoAP мне нужно динамически добавлять новые ресурсы. Но я должен остановить и снова запустить сервер, чтобы получить доступ к новым ресурсам. Я полагаю, что добавлять новые ресурсы так же, как добавлять новый HTTP-сервлет в уже запущенный HTTP-сервер.Динамическое добавление новых ресурсов - CoAP

Здесь я добавил исходный код, который используется для добавления динамических ресурсов. Если мне что-то не хватает, дайте мне знать.

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!"); 
    } 
} 

ответ

0

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

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

И был в состоянии назвать.

Смежные вопросы