2016-07-03 13 views
0

Sobald der CoAP-Server gestartet ist, muss ich dynamisch neue Ressourcen hinzufügen. Aber ich muss den Server anhalten und neu starten, um auf neue Ressourcen zugreifen zu können. Ich nehme an, dass neue Ressourcen wie das Hinzufügen eines neuen HTTP-Servlets zum bereits gestarteten HTTP-Server hinzugefügt werden.Neue Ressourcen dynamisch hinzufügen - CoAP

Hier habe ich Quellcode hinzugefügt, der zum Hinzufügen von dynamischen Ressourcen verwendet wird. Wenn ich etwas vermisse, lass es mich wissen.

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

Antwort

0

Ich habe gerade einen CoapResource dynamisch hinzuzufügen versucht:

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

Und konnte es nennen.

Verwandte Themen