2016-07-03 57 views
0

一旦啓動了CoAP服務器,我需要動態添加新資源。但我必須再次停止並啓動服務器才能訪問新資源。我想添加新的資源,就像在已經啓動的HTTP服務器中添加一個新的HTTP servlet一樣。動態添加新資源 - 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!!!"); 
     } 
    }); 

,並能夠調用它。