Text Processing Architecture

Open Search Text Server
http://www.opentext.com/what-we-do/industries/legal/legal-content-management-edocs/opentext-search-server-edocs-edition

Noggle
https://www.noggle.online/knowledgebase/cognitive-search-engine/

http://blogs.forrester.com/mike_gualtieri/17-06-12-cognitive_search_is_the_ai_version_of_enterprise_search
Cognitive Search Is The AI Version Of Enterprise Search

https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html

Java – selenium – Read Web Page Content

Reading HTTP Client is causing problems. Firewalls are detecting and closing connections.
The best route is mimic like browser.
Tested with Mac 10.12.4

package com.bible;

import java.io.BufferedWriter;
import java.io.File;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

//Chrome Driver: https://chromedriver.storage.googleapis.com/index.html?path=2.29/

/**
 * 
 */
public class ReadPassage {

	private static BufferedWriter writer;

	public static void main(String[] args) {
		WebDriver driver;

		File file = new File("resources/chromedriver");
		String absolutePath = file.getAbsolutePath();
		System.out.println("Chrome Driver Path==>" + absolutePath);
		System.setProperty("webdriver.chrome.driver", absolutePath);

		String BROWSER_URL = "http://usccb.org/bible/readings/061017.cfm";

		driver = new ChromeDriver();
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
		driver.get(BROWSER_URL);

		WebElement myDynamicElement = (new WebDriverWait(driver, 30))
				.until(ExpectedConditions.presenceOfElementLocated(By.id("readingssignup")));

		String source = driver.getPageSource();
		System.out.println(source);
		driver.close();

		try {
			Thread.sleep(10 * 1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

	}

}

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.bible</groupId>
	<artifactId>my-bible</artifactId>
	<packaging>jar</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>my-bible</name>
	<url>http://maven.apache.org</url>
	<dependencies>

		<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5.3</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>3.3.1</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver -->
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-chrome-driver</artifactId>
			<version>3.3.1</version>
		</dependency>



		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

MicroServices

Micro Services is a quick way to serve UI needs.

https://jaxenter.com/microservices-trends-2017-survey-133265.html
Micro Services Comparison

Python and Flask
https://stackoverflow.com/questions/10938360/how-many-concurrent-requests-does-a-single-flask-process-receive

Micro Services – Performance Comparison
https://cdelmas.github.io/2016/06/20/Performance-of-Microservices-frameworks.html

References:
http://microservices.io/
https://apigee.com/about/blog/cto-musings/api-best-practices-microservices
https://www.mulesoft.com/webinars/api/microservices-architecture

Address following while choosing Micro Services

Domain Driven Design

Performance
Security
Concurrency
Availability of Engineers
Easy to install/maintain/monitor (Dev Ops)
Easy to develop (Developers)
Session handling
Testing
Debugging
Logging

Commercial Support when needed
Future of Project
License
Support in Amazon AWS and Microsoft Azure