Browse Source

穿透式检索放置网关controller

tags/1.1.0
zhaoguangwei 5 years ago
parent
commit
63349a6af8
10 changed files with 75 additions and 2 deletions
  1. +1
    -0
      source/deployment/deployment-gateway/src/main/resources/config/gateway.conf
  2. +13
    -0
      source/gateway/src/main/java/com/jd/blockchain/gateway/GatewayConfigProperties.java
  3. +1
    -0
      source/gateway/src/main/java/com/jd/blockchain/gateway/GatewayServerBooter.java
  4. +1
    -0
      source/gateway/src/main/java/com/jd/blockchain/gateway/service/DataRetrievalService.java
  5. +6
    -0
      source/gateway/src/main/java/com/jd/blockchain/gateway/service/DataRetrievalServiceHandler.java
  6. +33
    -0
      source/gateway/src/main/java/com/jd/blockchain/gateway/web/BlockBrowserController.java
  7. +1
    -0
      source/gateway/src/main/resources/gateway.conf
  8. +1
    -1
      source/pom.xml
  9. +1
    -1
      source/test/test-integration/src/main/resources/ledger_init_test_web2.init
  10. +17
    -0
      source/utils/utils-http/src/main/java/com/jd/blockchain/utils/http/agent/HttpClientPool.java

+ 1
- 0
source/deployment/deployment-gateway/src/main/resources/config/gateway.conf View File

@@ -20,6 +20,7 @@ peer.providers=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider
#若该值不配置或配置不正确,则浏览器模糊查询部分无法正常显示
#数据检索服务模块(Argus)需单独部署,若不部署其他功能仍可正常使用
data.retrieval.url=http://127.0.0.1:10001
schema.retrieval.url=http://192.168.151.39:8082

#默认公钥的内容(Base58编码数据);
keys.default.pubkey=


+ 13
- 0
source/gateway/src/main/java/com/jd/blockchain/gateway/GatewayConfigProperties.java View File

@@ -32,6 +32,7 @@ public class GatewayConfigProperties {

// 数据检索服务URL地址
public static final String DATA_RETRIEVAL_URL="data.retrieval.url";
public static final String SCHEMA_RETRIEVAL_URL="schema.retrieval.url";

// 密钥相关配置项的键的前缀;
public static final String KEYS_PREFIX = "keys.";
@@ -54,6 +55,7 @@ public class GatewayConfigProperties {
private NetworkAddress masterPeerAddress;

private String dataRetrievalUrl;
private String schemaRetrievalUrl;

private KeysConfig keys = new KeysConfig();

@@ -73,6 +75,14 @@ public class GatewayConfigProperties {
this.dataRetrievalUrl = dataRetrievalUrl;
}

public String getSchemaRetrievalUrl() {
return schemaRetrievalUrl;
}

public void setSchemaRetrievalUrl(String schemaRetrievalUrl) {
this.schemaRetrievalUrl = schemaRetrievalUrl;
}

public ProviderConfig providerConfig() {
return providerConfig;
}
@@ -120,6 +130,9 @@ public class GatewayConfigProperties {
String dataRetrievalUrl = getProperty(props, DATA_RETRIEVAL_URL, true);
configProps.dataRetrievalUrl = dataRetrievalUrl;

String schemaRetrievalUrl = getProperty(props, SCHEMA_RETRIEVAL_URL, true);
configProps.schemaRetrievalUrl = schemaRetrievalUrl;

String providers = getProperty(props, PEER_PROVIDERS, true);
if (providers == null || providers.length() <= 0) {
throw new IllegalArgumentException("Miss peer providers!");


+ 1
- 0
source/gateway/src/main/java/com/jd/blockchain/gateway/GatewayServerBooter.java View File

@@ -115,6 +115,7 @@ public class GatewayServerBooter {
ConsoleUtils.info("\r\n\r\nStart connecting to peer ....");
BlockBrowserController blockBrowserController = appCtx.getBean(BlockBrowserController.class);
blockBrowserController.setDataRetrievalUrl(config.dataRetrievalUrl());
blockBrowserController.setSchemaRetrievalUrl(config.getSchemaRetrievalUrl());
PeerConnector peerConnector = appCtx.getBean(PeerConnector.class);
peerConnector.connect(config.masterPeerAddress(), defaultKeyPair, config.providerConfig().getProviders());
ConsoleUtils.info("Peer[%s] is connected success!", config.masterPeerAddress().toString());


+ 1
- 0
source/gateway/src/main/java/com/jd/blockchain/gateway/service/DataRetrievalService.java View File

@@ -18,4 +18,5 @@ package com.jd.blockchain.gateway.service;
public interface DataRetrievalService {

String retrieval(String url) throws Exception;
String retrievalPost(String url, String queryString) throws Exception;
}

+ 6
- 0
source/gateway/src/main/java/com/jd/blockchain/gateway/service/DataRetrievalServiceHandler.java View File

@@ -8,6 +8,7 @@
*/
package com.jd.blockchain.gateway.service;

import com.alibaba.fastjson.JSONObject;
import com.jd.blockchain.utils.http.agent.HttpClientPool;
import org.springframework.stereotype.Component;

@@ -24,4 +25,9 @@ public class DataRetrievalServiceHandler implements DataRetrievalService {
public String retrieval(String url) throws Exception {
return HttpClientPool.get(url);
}

@Override
public String retrievalPost(String url, String queryString) throws Exception {
return HttpClientPool.jsonPost(url,queryString);
}
}

+ 33
- 0
source/gateway/src/main/java/com/jd/blockchain/gateway/web/BlockBrowserController.java View File

@@ -1,5 +1,6 @@
package com.jd.blockchain.gateway.web;

import com.alibaba.fastjson.JSONObject;
import com.jd.blockchain.crypto.AddressEncoding;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PubKey;
@@ -37,6 +38,7 @@ public class BlockBrowserController implements BlockchainExtendQueryService {
private GatewayQueryService gatewayQueryService;

private String dataRetrievalUrl;
private String schemaRetrievalUrl;

private static final long BLOCK_MAX_DISPLAY = 3L;

@@ -479,10 +481,41 @@ public class BlockBrowserController implements BlockchainExtendQueryService {
return result;
}

/**
* querysql;
* @param request
* @return
*/
@RequestMapping(method = RequestMethod.POST, value = "schema/querysql")
public Object queryBySql(HttpServletRequest request,@RequestBody String queryString) {
String result;
if (schemaRetrievalUrl == null || schemaRetrievalUrl.length() <= 0) {
result = "{'message':'OK','data':'" + "schema.retrieval.url is empty" + "'}";
} else {
String queryParams = request.getQueryString() == null ? "": request.getQueryString();
String fullQueryUrl = new StringBuffer(schemaRetrievalUrl)
.append(request.getRequestURI())
.append(BaseConstant.DELIMETER_QUESTION)
.append(queryParams)
.toString();
try {
result = dataRetrievalService.retrievalPost(fullQueryUrl,queryString);
ConsoleUtils.info("request = {%s} \r\n result = {%s} \r\n", fullQueryUrl, result);
} catch (Exception e) {
result = "{'message':'error','data':'" + e.getMessage() + "'}";
}
}
return result;
}

public void setDataRetrievalUrl(String dataRetrievalUrl) {
this.dataRetrievalUrl = dataRetrievalUrl;
}

public void setSchemaRetrievalUrl(String schemaRetrievalUrl) {
this.schemaRetrievalUrl = schemaRetrievalUrl;
}

/**
* get all ledgers count;
*/


+ 1
- 0
source/gateway/src/main/resources/gateway.conf View File

@@ -19,6 +19,7 @@ peer.providers=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider
#数据检索服务对应URL,格式:http://{ip}:{port},例如:http://127.0.0.1:10001
#若该值不配置或配置不正确,则浏览器模糊查询部分无法正常显示
data.retrieval.url=http://127.0.0.1:10001
schema.retrieval.url=http://192.168.151.39:8082
#默认公钥的内容(Base58编码数据);
keys.default.pubkey=3snPdw7i7PjVKiTH2VnXZu5H8QmNaSXpnk4ei533jFpuifyjS5zzH9


+ 1
- 1
source/pom.xml View File

@@ -42,7 +42,7 @@
<properties>
<my.utils.version>0.8.1-SNAPSHOT</my.utils.version>
<bft-smart.version>0.0.8.RELEASE</bft-smart.version>
<explorer.version>0.7.0.RELEASE</explorer.version>
<explorer.version>0.8.0-SNAPSHOT</explorer.version>
<ump-explorer.version>1.0.0-SNAPSHOT</ump-explorer.version>
<commons-io.version>2.4</commons-io.version>
<!-- <spring.framework.version>4.3.4.RELEASE</spring.framework.version> -->


+ 1
- 1
source/test/test-integration/src/main/resources/ledger_init_test_web2.init View File

@@ -2,7 +2,7 @@
ledger.seed=932dfe23-fe23232f-283f32fa-dd32aa76-8322ca2f-56236cda-7136b322-cb323ffe

#账本的描述名称;此属性不参与共识,仅仅在当前参与方的本地节点用于描述用途;
#ledger.name=
ledger.name=

#共识服务提供者;必须;
consensus.service-provider=com.jd.blockchain.consensus.bftsmart.BftsmartConsensusProvider


+ 17
- 0
source/utils/utils-http/src/main/java/com/jd/blockchain/utils/http/agent/HttpClientPool.java View File

@@ -25,6 +25,7 @@ import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
@@ -37,6 +38,7 @@ import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.UnsupportedEncodingException;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -267,4 +269,19 @@ public class HttpClientPool {
EntityUtils.consume(entity);
return result;
}

public static String jsonPost(String url, String json) throws IOException {
HttpPost httpPost = new HttpPost(url);
config(httpPost);
setJsonPostParams(httpPost, json);
try (CloseableHttpResponse response = httpPost(url, httpPost)) {
return parseResponse(response);
}
}

private static void setJsonPostParams(HttpPost httpPost, String json) {
httpPost.addHeader("Content-type","application/json; charset=utf-8");
httpPost.setHeader("Accept", "application/json");
httpPost.setEntity(new StringEntity(json, Charset.forName("UTF-8")));
}
}

Loading…
Cancel
Save