0

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

1 に答える 1