瀏覽代碼

Merge branch 'master' of luofaqiang/esb into master

luofaqiang 8 年之前
父節點
當前提交
a719c9fd27

+ 15 - 39
hos-broker/hos-broker.iml

@ -12,16 +12,6 @@
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="module" module-name="hos-web-framework" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.0.9.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jta_1.1_spec:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.jboss:jandex:2.0.0.Final" level="project" />
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.4.0.RELEASE" level="project" />
@ -31,11 +21,6 @@
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.7" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.7" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.21" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.4" level="project" />
@ -43,6 +28,7 @@
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.4" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.4.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.1" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.1" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.1" level="project" />
@ -57,10 +43,19 @@
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.4" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.0.9.Final" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
    <orderEntry type="library" name="Maven: org.jboss:jandex:2.0.0.Final" level="project" />
    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-entitymanager:5.0.9.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:1.10.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.12.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.21" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aspects:4.3.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-mongodb:1.4.0.RELEASE" level="project" />
@ -69,11 +64,11 @@
    <orderEntry type="library" name="Maven: org.mongodb:bson:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-mongodb:1.9.2.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mongodb:mongo-java-driver:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring-boot:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-core:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring-boot:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-spring:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-http4:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-http-common:2.17.1" level="project" />
    <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
@ -136,7 +131,8 @@
    <orderEntry type="library" name="Maven: commons-net:commons-net:3.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.0" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.14" level="project" />
    <orderEntry type="library" name="Maven: log4j:log4j:1.2.17" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.6.2" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.6" level="project" />
@ -150,29 +146,9 @@
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-core:5.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jms_1.1_spec:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:kahadb:5.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq.protobuf:activemq-protobuf:1.1" level="project" />
    <orderEntry type="library" name="Maven: org.fusesource.mqtt-client:mqtt-client:1.3" level="project" />
    <orderEntry type="library" name="Maven: org.fusesource.hawtdispatch:hawtdispatch-transport:1.11" level="project" />
    <orderEntry type="library" name="Maven: org.fusesource.hawtdispatch:hawtdispatch:1.11" level="project" />
    <orderEntry type="library" name="Maven: org.fusesource.hawtbuf:hawtbuf:1.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.jasypt:jasypt:1.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-pool:5.13.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-jms-pool:5.13.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-client:5.13.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-camel:5.13.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-spring:5.13.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xbean:xbean-spring:3.18" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-broker:5.13.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-openwire-legacy:5.13.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.activemq:activemq-all:5.13.3" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.6.2" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.4.0.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.4.0.RELEASE" level="project" />

+ 1 - 0
hos-broker/src/main/java/com/yihu/hos/controllers/EndPointController.java

@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.*;
 */
@RestController
@RequestMapping("/service")
@Deprecated //直接由Arbiter来提供相关接串口,这样可以避免循环依赖
public class EndPointController {
    @RequestMapping(value = "/", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ResponseBody

+ 5 - 5
hos-broker/src/main/java/com/yihu/hos/controllers/GatewayController.java

@ -2,7 +2,7 @@ package com.yihu.hos.controllers;
import com.yihu.hos.core.constants.ExceptionConstant;
import com.yihu.hos.core.exception.ESBException;
import com.yihu.hos.models.GatewayRequsetResult;
import com.yihu.hos.models.GatewayRequestResult;
import com.yihu.hos.models.GatewayResponseResult;
import com.yihu.hos.services.GatewayService;
import net.sf.json.JSONObject;
@ -33,12 +33,12 @@ public class GatewayController {
        String returnString;
        String resultData;
        GatewayRequsetResult gatewayRequsetResult = new GatewayRequsetResult();
        GatewayRequestResult gatewayRequestResult = new GatewayRequestResult();
        try {
            BeanUtils.populate(gatewayRequsetResult, request.getParameterMap());
            BeanUtils.populate(gatewayRequestResult, request.getParameterMap());
            //---end
            gatewayService.paramsIsNotNull(gatewayRequsetResult.getApi());
            resultData = gatewayService.getResultData(gatewayRequsetResult);
            gatewayService.paramsIsNotNull(gatewayRequestResult.getApi());
            resultData = gatewayService.getResultData(gatewayRequestResult);
            returnString = resultData;
        } catch (Exception e) {
            e.printStackTrace();

+ 1 - 1
hos-broker/src/main/java/com/yihu/hos/models/GatewayRequsetResult.java

@ -5,7 +5,7 @@ import java.io.Serializable;
/**
 * Created by chenweida on 2016/1/27.
 */
public class GatewayRequsetResult implements Serializable {
public class GatewayRequestResult implements Serializable {
    private String api;
    private String param;
    //---end

+ 3 - 0
hos-broker/src/main/java/com/yihu/hos/services/BusinessLogService.java

@ -1,6 +1,7 @@
package com.yihu.hos.services;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.models.BusinessLog;
@ -23,6 +24,8 @@ public class BusinessLogService {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            BusinessLog businessLog = objectMapper.readValue(msg, BusinessLog.class);
            String fireTimeSource = businessLog.getFireTimeSource();
            businessLog.setFireTime(DateUtil.toTimestamp(fireTimeSource));
            mongoOperations.save(businessLog);
        } catch (IOException e) {
            e.printStackTrace();

+ 4 - 3
hos-broker/src/main/java/com/yihu/hos/services/GatewayService.java

@ -5,7 +5,7 @@ import com.yihu.hos.common.constants.BrokerConstant;
import com.yihu.hos.core.constants.ExceptionConstant;
import com.yihu.hos.core.exception.ESBException;
import com.yihu.hos.core.http.HttpClientUtil;
import com.yihu.hos.models.GatewayRequsetResult;
import com.yihu.hos.models.GatewayRequestResult;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -21,12 +21,13 @@ public class GatewayService {
    @Autowired
    private GatewayConfiguration gatewayConfiguration;
    public String getResultData(GatewayRequsetResult gatewayRequsetResult) throws ESBException {
    public String getResultData(GatewayRequestResult gatewayRequestResult) throws ESBException {
        String returnData;
        //拼凑出URL
        String url =  HttpClientUtil.getUrl(gatewayConfiguration.getIp(), gatewayConfiguration.getPort(), gatewayRequsetResult.getApi());
        String url =  HttpClientUtil.getUrl(gatewayConfiguration.getIp(), gatewayConfiguration.getPort(), gatewayRequestResult.getApi());
        try {
            returnData = HttpClientUtil.doPost(url, JSONObject.fromObject(gatewayRequestResult.getParam()), null, null);
            System.out.print(JSONObject.fromObject(gatewayRequsetResult.getParam()));
            returnData = HttpClientUtil.doGet(url, JSONObject.fromObject(gatewayRequsetResult.getParam()), null, null);
        } catch (Exception e) {

+ 51 - 0
hos-http/pom.xml

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-http</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--httpclient start-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--httpclient end-->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

+ 15 - 0
hos-http/src/main/java/com/yihu/hos/http/AllowAllHostnameVerifier.java

@ -0,0 +1,15 @@
package com.yihu.hos.http;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
/**
 * @author Air
 * @version 1.0
 * @created 2015.07.02 15:48
 */
public class AllowAllHostnameVerifier implements HostnameVerifier {
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
}

+ 46 - 0
hos-http/src/main/java/com/yihu/hos/http/HTTPClient.java

@ -0,0 +1,46 @@
package com.yihu.hos.http;
import java.util.Map;
/**
 * @created Airhead 2016/8/24.
 */
public interface HTTPClient {
    //主要的几种方法,其他的暂时未使用
    String GET = "GET";
    String POST = "POST";
    String PUT = "PUT";
    String DELETE = "DELETE";
    HTTPResponse get(String url);
    HTTPResponse get(String url, Map<String, String> params);
    HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse post(String url);
    HTTPResponse post(String url, Map<String, String> params);
    HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse postFile(String url, String path);
    HTTPResponse postFile(String url, String path, Map<String, String> params);
    HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers);
    HTTPResponse put(String url);
    HTTPResponse put(String url, Map<String, String> params);
    HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse delete(String url);
    HTTPResponse delete(String url, Map<String, String> params);
    HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers);
    HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers);
}

+ 299 - 0
hos-http/src/main/java/com/yihu/hos/http/HTTPClientDefaultImpl.java

@ -0,0 +1,299 @@
package com.yihu.hos.http;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.auth.AuthScope;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @created Airhead 2016/8/24.
 */
public class HTTPClientDefaultImpl implements HTTPClient {
    private static final Log log = LogFactory.getLog(HTTPClientDefaultImpl.class);
    protected CloseableHttpClient httpClient;
    protected HttpClientContext httpClientContext;
    HTTPClientDefaultImpl(CloseableHttpClient httpClient, CredentialsProvider credentialsProvider) {
        this.httpClient = httpClient;
        if (credentialsProvider != null) {
            this.httpClientContext = HttpClientContext.create();
            httpClientContext.setCredentialsProvider(credentialsProvider);
        }
    }
    public HTTPResponse get(String url) {
        return get(url, null);
    }
    public HTTPResponse get(String url, Map<String, String> params) {
        return get(url, params, null);
    }
    public HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers) {
        CloseableHttpResponse response;
        HttpEntity entity = null;
        try {
            HttpGet httpGet = new HttpGet(formatURL(url, params));
            authenticate(url, httpClientContext);
            addHeads(httpGet, headers);
            response = httpClient.execute(httpGet, httpClientContext);
            entity = response.getEntity();
            return new HTTPResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
        } catch (IOException ex) {
            log.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                log.error(ex.getMessage());
            }
        }
        return new HTTPResponse(500, "");
    }
    public HTTPResponse post(String url) {
        return post(url, null);
    }
    public HTTPResponse post(String url, Map<String, String> params) {
        return post(url, params, null);
    }
    public HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers) {
        CloseableHttpResponse response;
        HttpEntity entity = null;
        try {
            HttpPost httpPost = new HttpPost(url);
            authenticate(url, httpClientContext);
            addHeads(httpPost, headers);
            setEntity(httpPost, params);
            response = httpClient.execute(httpPost, httpClientContext);
            entity = response.getEntity();
            return new HTTPResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
        } catch (IOException ex) {
            log.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                log.error(ex.getMessage());
            }
        }
        return new HTTPResponse(500, "");
    }
    public HTTPResponse postFile(String url, String path) {
        return postFile(url, path, null);
    }
    public HTTPResponse postFile(String url, String path, Map<String, String> params) {
        return postFile(url, path, params, null);
    }
    public HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers) {
        CloseableHttpResponse response;
        HttpEntity entity = null;
        try {
            HttpPost httpPost = new HttpPost(url);
            authenticate(url, httpClientContext);
            addHeads(httpPost, headers);
            File file = new File(path);
            FileEntity fileEntity = new FileEntity(file, ContentType.create("text/plain", "UTF-8"));
            httpPost.setEntity(fileEntity);
            response = httpClient.execute(httpPost, httpClientContext);
            entity = response.getEntity();
            return new HTTPResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
        } catch (IOException ex) {
            log.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                log.error(ex.getMessage());
            }
        }
        return new HTTPResponse(500, "");
    }
    public HTTPResponse put(String url) {
        return put(url, null);
    }
    public HTTPResponse put(String url, Map<String, String> params) {
        return put(url, params, null);
    }
    public HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers) {
        CloseableHttpResponse response;
        HttpEntity entity = null;
        try {
            HttpPut httpPut = new HttpPut(url);
            authenticate(url, httpClientContext);
            addHeads(httpPut, headers);
            setEntity(httpPut, params);
            response = httpClient.execute(httpPut, httpClientContext);
            entity = response.getEntity();
            return new HTTPResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
        } catch (IOException ex) {
            log.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                log.error(ex.getMessage());
            }
        }
        return new HTTPResponse(500, "");
    }
    public HTTPResponse delete(String url) {
        return delete(url, null);
    }
    public HTTPResponse delete(String url, Map<String, String> params) {
        return delete(url, params, null);
    }
    public HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers) {
        CloseableHttpResponse response;
        HttpEntity entity = null;
        try {
            HttpDelete httpDelete = new HttpDelete(formatURL(url, params));
            authenticate(url, httpClientContext);
            addHeads(httpDelete, headers);
            response = httpClient.execute(httpDelete, httpClientContext);
            entity = response.getEntity();
            return new HTTPResponse(response.getStatusLine().getStatusCode(), EntityUtils.toString(entity));
        } catch (IOException ex) {
            log.error(ex.getMessage());
        } finally {
            try {
                EntityUtils.consume(entity);
            } catch (IOException ex) {
                log.error(ex.getMessage());
            }
        }
        return new HTTPResponse(500, "");
    }
    public HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers) {
        if (method.equals(POST)) {
            return post(url, params, headers);
        }
        if (method.equals(GET)) {
            return get(url, params, headers);
        }
        if (method.equals(PUT)) {
            return put(url, params, headers);
        }
        if (method.equals(DELETE)) {
            return delete(url, params, headers);
        }
        return get(url, params, headers);
    }
    private void addHeads(HttpRequestBase httpRequestBase, Map<String, String> headers) {
        if (headers == null) {
            return;
        }
        headers.forEach(httpRequestBase::addHeader);
    }
    private String formatURL(String url, Map<String, String> params) {
        if (params == null) {
            return url;
        }
        
        final String[] query = {""};
        params.forEach((name, value) -> {
            try {
                query[0] += "&" + name + URLEncoder.encode(value, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException("encode url ");
            }
        });
        if (url.contains("?")) {
            return url + query[0];
        }
        return url + "?" + query[0].substring(1);
    }
    private void authenticate(String url, HttpClientContext httpClientContext) throws MalformedURLException {
        URL r = new URL(url);
        String userInfo = r.getUserInfo();
        if (userInfo == null) {
            return;
        }
        String[] user = userInfo.split(":");
        String host = r.getHost();
        int port = r.getPort();
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(new AuthScope(host, port),
                new org.apache.http.auth.UsernamePasswordCredentials(user[0], user[1]));
        if (httpClientContext == null) {
            httpClientContext = HttpClientContext.create();
        }
        httpClientContext.setCredentialsProvider(credentialsProvider);
    }
    private void setEntity(HttpEntityEnclosingRequestBase httpEntityEnclosingRequestBase, Map<String, String> params) {
        if (params == null) {
            return;
        }
        List<NameValuePair> nameValuePairs = new ArrayList<>();
        params.forEach((name, value) -> nameValuePairs.add(new BasicNameValuePair(name, value)));
        UrlEncodedFormEntity postEntity = new UrlEncodedFormEntity(nameValuePairs, Consts.UTF_8);
        httpEntityEnclosingRequestBase.setEntity(postEntity);
    }
}

+ 17 - 0
hos-http/src/main/java/com/yihu/hos/http/HTTPClientImpl.java

@ -0,0 +1,17 @@
package com.yihu.hos.http;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.HttpClients;
/**
 * @created Airhead 2016/8/24.
 */
public class HTTPClientImpl extends HTTPClientDefaultImpl {
    HTTPClientImpl() {
        super(HttpClients.createDefault(), null);
    }
    HTTPClientImpl(CredentialsProvider credentialsProvider){
        super(HttpClients.createDefault(), credentialsProvider);
    }
}

+ 19 - 0
hos-http/src/main/java/com/yihu/hos/http/HTTPResponse.java

@ -0,0 +1,19 @@
package com.yihu.hos.http;
/**
 * @created Airhead 2016/8/24.
 */
public class HTTPResponse {
    public final int statusCode;// e.g. 200
    public final String body;
    public HTTPResponse(int statusCode, String body) {
        this.statusCode = statusCode;
        this.body = body;
    }
//    public final String status; // e.g. "200 OK"
//    public final String proto; // e.g. "HTTP/1.0"
//    public final int protoMajor;     // e.g. 1
//    public final int protoMinor;    // e.g. 0
}

+ 22 - 0
hos-http/src/main/java/com/yihu/hos/http/HTTPSClientImpl.java

@ -0,0 +1,22 @@
package com.yihu.hos.http;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClients;
/**
 * @created Airhead 2016/8/24.
 */
public class HTTPSClientImpl extends HTTPClientDefaultImpl {
    HTTPSClientImpl(SSLConnectionSocketFactory sslConnectionSocketFactory) {
        super(HttpClients.custom()
                .setSSLSocketFactory(sslConnectionSocketFactory)
                .build(), null);
    }
    HTTPSClientImpl(SSLConnectionSocketFactory sslConnectionSocketFactory, CredentialsProvider credentialsProvider) {
        super(HttpClients.custom()
                .setSSLSocketFactory(sslConnectionSocketFactory)
                .build(), credentialsProvider);
    }
}

+ 173 - 0
hos-http/src/main/java/com/yihu/hos/http/HttpClientKit.java

@ -0,0 +1,173 @@
package com.yihu.hos.http;
import org.apache.http.auth.AuthScope;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.ssl.SSLContexts;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
 * @created Airhead 2016/8/24.
 */
public class HttpClientKit {
    private static final String HTTP = "http";
    private static final String HTTPS = "https";
    private static Map<String, SSLConnectionSocketFactory> sslConnectionSocketFactoryMap = new HashMap<>();
    private static Map<String, CredentialsProvider> credentialsProviderMap = new HashMap<>();
    public static HTTPClient use(String url) {
        try {
            URL urlUse = new URL(url);
            String protocol = urlUse.getProtocol();
            String host = urlUse.getHost();
            int port = urlUse.getPort();
            if (protocol.equals(HTTPS)) {
                return getHttpsClient(host, port);
            } else if (protocol.equals(HTTP)) {
                return getHttpClient(host, port);
            }
        } catch (MalformedURLException ignored) {
        }
        return new HTTPClientImpl();
    }
    private static HTTPClient getHttpClient(String host, Integer port) {
        String key = host + ":" + port;
        CredentialsProvider credentialsProvider = credentialsProviderMap.get(key);
        if (credentialsProvider == null) {
            return new HTTPClientImpl();
        }
        return new HTTPClientImpl(credentialsProvider);
    }
    private static HTTPClient getHttpsClient(String host, Integer port) {
        String key = host + ":" + port;
        SSLConnectionSocketFactory sslConnectionSocketFactory = sslConnectionSocketFactoryMap.get(key);
        if (sslConnectionSocketFactory == null) {
            throw new IllegalArgumentException("must add trust store first.");
        }
        CredentialsProvider credentialsProvider = credentialsProviderMap.get(key);
        if (credentialsProvider == null) {
            return new HTTPSClientImpl(sslConnectionSocketFactory);
        }
        return new HTTPSClientImpl(sslConnectionSocketFactory, credentialsProvider);
    }
    public static void addTrustStore(String host, Integer port, String trustStorePath, String password) throws Exception {
        if (host == null || port == null || trustStorePath == null || password == null) {
            throw new IllegalArgumentException("must init basic credential first.");
        }
        SSLConnectionSocketFactory sslConnectionSocketFactory = sslConnectionSocketFactoryMap.get(host);
        if (sslConnectionSocketFactory != null) {
            return;
        }
        SSLContext sslcontext = SSLContexts.custom()
                .loadTrustMaterial(new File(trustStorePath), password.toCharArray(),
                        new TrustSelfSignedStrategy())
                .build();
        // Allow TLSv1 protocol only
        sslConnectionSocketFactory = new SSLConnectionSocketFactory(
                sslcontext,
                new String[]{"TLSv1"},
                null,
                new AllowAllHostnameVerifier());
        sslConnectionSocketFactoryMap.put(host, sslConnectionSocketFactory);
    }
    public static void addBasicCredentials(String host, Integer port, String user, String password) {
        if (host == null || port == null || user == null || password == null) {
            throw new IllegalArgumentException("must init trust store first.");
        }
        String key = host + ":" + port;
        if (credentialsProviderMap.containsKey(key)) {
            return;
        }
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(new AuthScope(host, port),
                new org.apache.http.auth.UsernamePasswordCredentials(user, password));
        credentialsProviderMap.put(key, credentialsProvider);
    }
    public static HTTPResponse get(String url) {
        return use(url).get(url);
    }
    public static HTTPResponse get(String url, Map<String, String> params) {
        return use(url).get(url, params);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> headers) {
        return use(url).get(url, params, headers);
    }
    public static HTTPResponse post(String url) {
        return use(url).post(url);
    }
    public static HTTPResponse post(String url, Map<String, String> params) {
        return use(url).post(url, params);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> headers) {
        return use(url).post(url, params, headers);
    }
    public static HTTPResponse postFile(String url, String path) {
        return use(url).postFile(url, path);
    }
    public static HTTPResponse postFile(String url, String path, Map<String, String> params) {
        return use(url).postFile(url, path, params);
    }
    public static HTTPResponse postFile(String url, String path, Map<String, String> params, Map<String, String> headers) {
        return use(url).postFile(url, path, params, headers);
    }
    public static HTTPResponse put(String url) {
        return use(url).put(url);
    }
    public static HTTPResponse put(String url, Map<String, String> params) {
        return use(url).put(url, params);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> headers) {
        return use(url).put(url, params, headers);
    }
    public static HTTPResponse delete(String url) {
        return use(url).delete(url);
    }
    public static HTTPResponse delete(String url, Map<String, String> params) {
        return use(url).delete(url, params);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> headers) {
        return use(url).delete(url, params, headers);
    }
    public static HTTPResponse request(String method, String url, Map<String, String> params, Map<String, String> headers) {
        return use(url).request(method, url, params, headers);
    }
}

+ 104 - 0
hos-http/src/test/java/com/yihu/hos/http/HttpClientKitTest.java

@ -0,0 +1,104 @@
package com.yihu.hos.http;
import org.junit.Test;
/**
 * @created Airhead 2016/8/25.
 */
public class HttpClientKitTest {
    @Test
    public void use() throws Exception {
    }
    @Test
    public void addTrustStore() throws Exception {
    }
    @Test
    public void addBasicCredentials() throws Exception {
    }
    @Test
    public void get() throws Exception {
    }
    @Test
    public void get1() throws Exception {
    }
    @Test
    public void get2() throws Exception {
    }
    @Test
    public void post() throws Exception {
    }
    @Test
    public void post1() throws Exception {
    }
    @Test
    public void post2() throws Exception {
    }
    @Test
    public void postFile() throws Exception {
    }
    @Test
    public void postFile1() throws Exception {
    }
    @Test
    public void postFile2() throws Exception {
    }
    @Test
    public void put() throws Exception {
    }
    @Test
    public void put1() throws Exception {
    }
    @Test
    public void put2() throws Exception {
    }
    @Test
    public void delete() throws Exception {
    }
    @Test
    public void delete1() throws Exception {
    }
    @Test
    public void delete2() throws Exception {
    }
    @Test
    public void request() throws Exception {
    }
}

+ 64 - 19
sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServer.java

@ -1,55 +1,100 @@
package com.yihu.hos.client;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.Arrays;
/**
 * @created Airhead 2016/8/16.
 */
public class BrokerServer {
    private String host;
    private String ip;
class BrokerServer {
    private String hostName;
    private String hostAddress;
    private String port;
    private Boolean enable;
    public String getHost() {
        return host;
    public String getHostName() {
        return hostName;
    }
    public void setHost(String host) {
        this.host = host;
    void setHostName(String hostName) {
        this.hostName = hostName;
    }
    public String getIp() {
        return ip;
    public String getHostAddress() {
        return hostAddress;
    }
    public void setIp(String ip) {
        this.ip = ip;
    void setHostAddress(String hostAddress) {
        this.hostAddress = hostAddress;
    }
    public String getPort() {
        return port;
    }
    public void setPort(String port) {
    void setPort(String port) {
        this.port = port;
    }
    public Boolean getEnable() {
    Boolean getEnable() {
        return enable;
    }
    public void setEnable(Boolean enable) {
    void setEnable(Boolean enable) {
        this.enable = enable;
    }
    public String getIdentity() {
        return this.ip + ":" + this.port;
    String getIdentity() {
        return this.hostAddress + ":" + this.port;
    }
    public Response invokeSync(Request request) {
        return null;
    Response invokeSync(Request request) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        String method = request.getMethod();
        if (request.getMethod().startsWith("/")) {
            method = request.getMethod().substring(1);
        }
        HttpPost httpPost = new HttpPost(hostAddress + ":" + port + method);
        CloseableHttpResponse response = null;
        Response result = new Response();
        try {
            response = httpclient.execute(httpPost);
            if (response.getStatusLine().getStatusCode() != 200) {
                EsbException esbException = new EsbException("Can not connect the server.");
                result.setError(esbException);
                result.setStackTrace(Arrays.toString(esbException.getStackTrace()));
                return result;
            }
            HttpEntity entity = response.getEntity();
            String body = EntityUtils.toString(entity, "UTF-8");
            result.setResult(body);
        } catch (IOException e) {
            e.printStackTrace();
            result.setError(e);
            result.setStackTrace(Arrays.toString(e.getStackTrace()));
        } finally {
            assert response != null;
            try {
                response.close();
                httpclient.close();
            } catch (IOException ignored) {
            }
        }
        return result;
    }
    public void invokeAsync(Request request, final ResultCallback<Response> callback) {
    void invokeAsync(Request request, final ResultCallback<Response> callback) {
    }
}

+ 3 - 1
sdk/java/hos-client/src/main/java/com/yihu/hos/client/BrokerServerClient.java

@ -72,10 +72,12 @@ public class BrokerServerClient {
            ObjectMapper objectMapper = new ObjectMapper();
            JsonNode node = objectMapper.readTree(body);
            String hostAddress = node.path("hostAddress").asText();
            String hostName = node.path("hostName").asText();
            String port = node.path("port").asText();
            BrokerServer brokerServer = new BrokerServer();
            brokerServer.setIp(hostAddress);
            brokerServer.setHostName(hostName);
            brokerServer.setHostAddress(hostAddress);
            brokerServer.setPort(port);
            brokerServer.setEnable(true);
            BrokerServerClient.addBrokerServer(brokerServer);