Java tutorial
/******************************************************************************* * Copyright (c) 2013-2015 Sierra Wireless and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v1.0 which accompany this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.html. * * Contributors: * Sierra Wireless - initial API and implementation *******************************************************************************/ package org.eclipse.leshan.server.demo.servlet; import java.io.IOException; import java.util.Properties; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.leshan.core.node.LwM2mNode; import org.eclipse.leshan.core.request.exception.RequestFailedException; import org.eclipse.leshan.core.request.exception.ResourceAccessException; import org.eclipse.leshan.core.response.LwM2mResponse; import org.eclipse.leshan.server.LwM2mServer; import org.eclipse.leshan.server.client.Client; import org.eclipse.leshan.server.demo.servlet.json.ClientSerializer; import org.eclipse.leshan.server.demo.servlet.json.LwM2mNodeDeserializer; import org.eclipse.leshan.server.demo.servlet.json.LwM2mNodeSerializer; import org.eclipse.leshan.server.demo.servlet.json.ResponseSerializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.ProducerConfig; /** * Service HTTP REST API calls. */ public class CliServlet extends HttpServlet { private static final String FORMAT_PARAM = "format"; private static final Logger LOG = LoggerFactory.getLogger(CliServlet.class); private static final long TIMEOUT = 5000; // ms private static final long serialVersionUID = 1L; private final LwM2mServer server; private final Gson gson; public CliServlet(LwM2mServer server, int securePort) { this.server = server; GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeHierarchyAdapter(Client.class, new ClientSerializer(securePort)); gsonBuilder.registerTypeHierarchyAdapter(LwM2mResponse.class, new ResponseSerializer()); gsonBuilder.registerTypeHierarchyAdapter(LwM2mNode.class, new LwM2mNodeSerializer()); gsonBuilder.registerTypeHierarchyAdapter(LwM2mNode.class, new LwM2mNodeDeserializer()); gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); this.gson = gsonBuilder.create(); } /** * {@inheritDoc} */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { // all registered clients if (req.getPathInfo() == null) { String json = "{ep:\"myEndpoint\",ticket:\"8c90592249c74a9b8a2da5754145dcc0\"," + "req:{kind:\"read\",path:\"/3/0/1\",contentFormat:1541,}}"; sendToBroker("LESHAN_REQ", json); resp.setContentType("application/json"); resp.getOutputStream().write(json.getBytes("UTF-8")); resp.setStatus(HttpServletResponse.SC_OK); return; } } catch (IllegalArgumentException e) { LOG.warn("Invalid request or response", e); resp.setStatus(HttpServletResponse.SC_BAD_REQUEST); resp.getWriter().append(e.getMessage()).flush(); } catch (ResourceAccessException | RequestFailedException e) { LOG.warn(String.format("Error accessing resource %s%s.", req.getServletPath(), req.getPathInfo()), e); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); resp.getWriter().append(e.getMessage()).flush(); } } public void sendToBroker(String topic, String json) { try { Properties producerProps = new Properties(); producerProps.put("metadata.broker.list", "localhost:9092"); producerProps.put("serializer.class", "kafka.serializer.StringEncoder"); producerProps.put("request.required.acks", "1"); ProducerConfig producerConfig = new ProducerConfig(producerProps); Producer<Integer, String> producer; producer = new Producer<Integer, String>(producerConfig); // logh here // System.out.println("oh fine " + producer); KeyedMessage<Integer, String> keyedMsg = new KeyedMessage<Integer, String>(topic, json); producer.send(keyedMsg); // This publishes message on given top System.out.println("sending msg is: " + keyedMsg); producer.close(); } catch (Exception e) { System.out.println("Exception occurred while sending data to kafka" + e.getMessage()); } } }