github.com/docker/compose-on-kubernetes@v0.5.0/samples/words/src/main/java/Main.java (about) 1 import com.google.common.base.Charsets; 2 import com.google.common.base.Supplier; 3 import com.google.common.base.Suppliers; 4 import com.sun.net.httpserver.HttpHandler; 5 import com.sun.net.httpserver.HttpServer; 6 7 import java.io.OutputStream; 8 import java.net.InetSocketAddress; 9 import java.sql.*; 10 import java.util.NoSuchElementException; 11 12 public class Main { 13 public static void main(String[] args) throws Exception { 14 Class.forName("org.postgresql.Driver"); 15 16 HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); 17 server.createContext("/noun", handler(Suppliers.memoize(() -> randomWord("nouns")))); 18 server.createContext("/verb", handler(Suppliers.memoize(() -> randomWord("verbs")))); 19 server.createContext("/adjective", handler(Suppliers.memoize(() -> randomWord("adjectives")))); 20 server.start(); 21 } 22 23 private static String randomWord(String table) { 24 try (Connection connection = DriverManager.getConnection("jdbc:postgresql://db:5432/postgres", "postgres", "")) { 25 try (Statement statement = connection.createStatement()) { 26 try (ResultSet set = statement.executeQuery("SELECT word FROM " + table + " ORDER BY random() LIMIT 1")) { 27 while (set.next()) { 28 return set.getString(1); 29 } 30 } 31 } 32 } catch (SQLException e) { 33 e.printStackTrace(); 34 } 35 36 throw new NoSuchElementException(table); 37 } 38 39 private static HttpHandler handler(Supplier<String> word) { 40 return t -> { 41 String response = "{\"word\":\"" + word.get() + "\"}"; 42 byte[] bytes = response.getBytes(Charsets.UTF_8); 43 44 System.out.println(response); 45 t.getResponseHeaders().add("content-type", "application/json; charset=utf-8"); 46 t.sendResponseHeaders(200, bytes.length); 47 48 try (OutputStream os = t.getResponseBody()) { 49 os.write(bytes); 50 } 51 }; 52 } 53 }