diff options
author | Zhaoxing <meng.zhaoxing1@zte.com.cn> | 2017-08-08 14:02:53 +0800 |
---|---|---|
committer | Zhaoxing <meng.zhaoxing1@zte.com.cn> | 2017-08-08 14:02:53 +0800 |
commit | c0604184b2aa8cff924ca783ec6b36f1f5988775 (patch) | |
tree | 1c70ffe1ad90c915b3382a37eb2fa80901519c7b /wso2/common-util/src/main/java/org/openo/baseservice/bus | |
parent | 706fc9fed496972968fde136c3e4e10f9578a5b3 (diff) |
init code
Change-Id: Icd0948118397b256da70dfbcbbec5520dc5eafd4
Signed-off-by: Zhaoxing <meng.zhaoxing1@zte.com.cn>
Diffstat (limited to 'wso2/common-util/src/main/java/org/openo/baseservice/bus')
3 files changed, 295 insertions, 0 deletions
diff --git a/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/BusConstant.java b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/BusConstant.java new file mode 100644 index 0000000..ab2bcd1 --- /dev/null +++ b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/BusConstant.java @@ -0,0 +1,48 @@ +/* + * Copyright 2016 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.openo.baseservice.bus.util; + +/** + * <p> + * An class which holds the all the constant values for the Bus register CBB. + * </p> + * <br/> + * + * @author + * @version + */ +public final class BusConstant { + + public static final String JSON = "json"; + + public static final String BUS_CONFIGURE_FILE = "/etc/microservice.ini"; + + public static final String BUS_SERVICE_URL = "/openoapi/microservices/v1/services"; + + public static final String BUS_ADDRESS_KEY = "msb.address"; + + public static final String APPLICATION_JSON_HEADER = "application/json"; + + public static final String CREATE_OR_UPDATE = "createOrUpdate"; + + public static final String MICROSERVICE_DEFAULT = "msb.openo.org:80"; + + public static final String MICROSERVICE_PATH = "/etc/microservice"; + + public static final String POST_METHOD = "POST"; + + public static final String HTTP_HEAD = "http://"; +} diff --git a/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterService.java b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterService.java new file mode 100644 index 0000000..d1926c7 --- /dev/null +++ b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterService.java @@ -0,0 +1,177 @@ +/* + * Copyright 2016 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openo.baseservice.bus.util; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import javax.ws.rs.core.Response; + +import org.apache.cxf.jaxrs.client.WebClient; +import org.codehaus.jackson.jaxrs.JacksonJsonProvider; +import org.openo.baseservice.util.impl.SystemEnvVariablesFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Provide the service register cbb for common use. <br/> + * <p> + * </p> + * + * @author + * @version + */ +public class RegisterService { + + private static final Logger LOGGER = LoggerFactory.getLogger(RegisterService.class); + + private static String busPath = null; + + /** + * Constructor<br/> + * <p> + * </p> + * + * @throws IOException + * + * @since + */ + private RegisterService() { + } + + /** + * register the micro service. <br/> + * + * @param jsonPath: + * the service json object to register to the bus. + * @param createOrUpdate: + * true, create and update the old ip port. false, create and + * delete the old one; + * @return + * @throws IOException + * @since + */ + public static Response registerService(String jsonPath, boolean createOrUpdate) throws IOException { + + String serviceInfo = getServiceModel(jsonPath); + + WebClient client = initializeClient(); + + client.type(BusConstant.APPLICATION_JSON_HEADER); + + client.accept(BusConstant.APPLICATION_JSON_HEADER); + + client.path(BusConstant.BUS_SERVICE_URL); + + client.query(BusConstant.CREATE_OR_UPDATE, createOrUpdate); + + LOGGER.info("Connecting bus address : " + busPath + BusConstant.BUS_SERVICE_URL); + + return client.invoke(BusConstant.POST_METHOD, serviceInfo); + + } + + /** + * get the service's model. and return it as a string ; <br/> + * + * @param jsonPath + * @return + * @since + */ + private static String getServiceModel(String jsonPath) { + + String serviceInfo = ""; + + try { + LOGGER.info("begin to read file micro service json " + jsonPath); + + FileInputStream busFile = new FileInputStream(jsonPath); + + int size = busFile.available(); + + byte[] buffer = new byte[size]; + + busFile.read(buffer); + + busFile.close(); + + serviceInfo = new String(buffer); + LOGGER.info("finished to read micro service json file. "); + } catch (Exception ex) { + LOGGER.error("Read the micro service json file error :", ex); + } + return serviceInfo; + } + + /** + * initialize the bus ip and port. <br/> + * + * @return + * @throws IOException + * @since + */ + private static String getBusAddress() throws IOException { + + LOGGER.info("begin to get the bus baseurl."); + FileInputStream busFile = null; + String url = BusConstant.MICROSERVICE_DEFAULT; + + String filePath = SystemEnvVariablesFactory.getInstance().getAppRoot() + BusConstant.BUS_CONFIGURE_FILE; + LOGGER.info("bus base url file:" + filePath); + + Properties properties = new Properties(); + + try { + busFile = new FileInputStream(filePath); + properties.load(busFile); + url = properties.getProperty(BusConstant.BUS_ADDRESS_KEY); + } catch (IOException e) { + if (busFile != null) { + busFile.close(); + } + LOGGER.error("Read the bus url failed: ", e); + } + + LOGGER.info("initialize the bus baseurl is: " + url); + return BusConstant.HTTP_HEAD + url; + } + + /** + * get the bus's client's address. and initialize the web client. <br/> + * + * @return + * @throws IOException + * @since + */ + private static WebClient initializeClient() throws IOException { + + final List<Object> providers = new ArrayList<Object>(); + + JacksonJsonProvider jacksonJsonProvider = new JacksonJsonProvider(); + + providers.add(jacksonJsonProvider); + + if (busPath == null) { + busPath = getBusAddress(); + } + + return WebClient.create(busPath, providers); + } +} diff --git a/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterServiceListener.java b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterServiceListener.java new file mode 100644 index 0000000..c4e1417 --- /dev/null +++ b/wso2/common-util/src/main/java/org/openo/baseservice/bus/util/RegisterServiceListener.java @@ -0,0 +1,70 @@ +/* + * Copyright 2016 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openo.baseservice.bus.util; + +import java.io.File; +import java.io.IOException; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import org.openo.baseservice.util.impl.SystemEnvVariablesFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Initialize the service register listener. <br/> + * <p> + * </p> + * + * @author + * @version + */ +public class RegisterServiceListener implements ServletContextListener { + + private static final Logger LOGGER = LoggerFactory.getLogger(RegisterServiceListener.class); + + @Override + public void contextInitialized(ServletContextEvent sce) { + + String servicePath = SystemEnvVariablesFactory.getInstance().getAppRoot() + BusConstant.MICROSERVICE_PATH; + LOGGER.info("microservices json file path is" + servicePath); + + File file = new File(servicePath); + + File[] fileList = file.listFiles(); + + for (File tempFile : fileList) { + String fileName = tempFile.getName(); + if (fileName.substring(fileName.lastIndexOf('.') + 1).equalsIgnoreCase(BusConstant.JSON)) { + LOGGER.info("begin to initialize the service file" + tempFile.getAbsolutePath()); + + try { + RegisterService.registerService(tempFile.getAbsolutePath(), true); + } catch (IOException e) { + LOGGER.error("Faile to register the service file :" + tempFile.getPath() + ", exception:" + e); + } + } + } + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + // TODO Auto-generated method stub + + } +} |