https://blog.csdn.net/csdnsjg/article/details/80152815
https://jingyan.baidu.com/article/219f4bf798e0cfde442d3831.html
类似spring 、 maven 这类插件,需要再eclipse中提前安装;
1、首先下载eclipse 对应的spring 的版本,查看eclipse 版本在 help-- about eclipse 中
2、找到打开eclipse,选择 "Help" --> "Install New Software" --> "add" -->"Archive" --> 选择刚才下载好的springsource-tool-suite “打开”--> "OK"
3、查看是否安装成功,点击“Window”--> "Preferences"查看是否安装成功
配置好后,新建spring 调用jsf 接口:
1、 file --- new -- spring starter project
2、maven 依赖配置添加,在pom.xml 中,可以依照官方的xml文档,只需要添加需要的依赖即可
3、在spring 项目下面,新建源文件,里面包含log4j.xml 和 jsf-consumer.xml 也是依据官方的文档进行修改,传入参数改称需要的即可
4、然后修改接口调用函数,导入相关的包,这里采用spring集成的方式调用接口
5、参考如下:
package com.example.demo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.jd.erqing.application.jsf.VenderInfoService; import com.jd.fastjson.JSONObject; public class DemoApplicationTests { /** * SLF4J logger */ private final static Logger LOGGER = LoggerFactory.getLogger(DemoApplicationTests.class); /** * Method Name main * * @param args Return Type void */ public static void main(String[] args) { ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("/jsf-consumer.xml"); VenderInfoService service = (VenderInfoService) appContext.getBean("venderInfoService"); while (true) { try { long start = System.currentTimeMillis(); String result = service.venderDownAmountList("10021"); long end = System.currentTimeMillis(); System.out.println("耗时:"+(end - start)); System.out.println(result); LOGGER.info("response msg from server :{}", result); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } try { Thread.sleep(2000); } catch (Exception e) { } } } }
还有使用API的方式(不依赖spring)调用JSF服务的方式。
实例如下:
package com.example.demo; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.jd.erqing.application.jsf.VenderInfoService; import com.jd.fastjson.JSONObject; import com.jd.jsf.gd.config.ConsumerConfig; import com.jd.jsf.gd.config.RegistryConfig; public class DemoApplication { /** * SLF4J logger */ private final static Logger LOGGER = LoggerFactory.getLogger(DemoApplication.class); /** * Method Name main * * @param args Return Type void */ public static void main(String[] args) { // // 引入杰夫接口 // ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("/jsf-consumer.xml"); // VenderInfoService service = (VenderInfoService) appContext.getBean("venderInfoService"); RegistryConfig jsfRegistry = new RegistryConfig(); jsfRegistry.setIndex("i.jsf.jd.com"); LOGGER.info("实例RegistryConfig"); // 服务提供者连接注册中心,设置属性 ConsumerConfig<VenderInfoService> consumerConfig = new ConsumerConfig<VenderInfoService>(); consumerConfig.setInterfaceId("XXXXXXXXXXXXXXXXXXXXXXXXX"); // consumerConfig.setAlias("XXXXXXXXXXXXXXXXX"); // 线下 consumerConfig.setAlias("XXXXXXXXXXXXXXXXXXXX"); //线上 consumerConfig.setProtocol("jsf"); Map<String,String> parameter = new HashMap(); parameter.put(".token", "XXXXXXXXXXXXXXXXXXXX"); // parameter.put("hide", "true"); consumerConfig.setParameters(parameter); // 如果外面已经有xml配的注册中心,使用consumerConfig.setRegistry(RegistryFactory.getRegistryConfigs()); consumerConfig.setRegistry(jsfRegistry); LOGGER.info("实例ConsumerConfig"); VenderInfoService service = consumerConfig.refer(); LOGGER.info("得到调用端代理:{}", service); // // 读入店铺id数据 // SparkSession spark = SparkSession.builder().appName("demo_spark").enableHiveSupport().getOrCreate(); // spark.sql("insert overwrite table dev.dev_spark_demo_temp partition (dt = '2019-08-08') select pop_vender_id, sale_ord_id from app.app_sjzt_payout_apply_with_order where dt = '2019-08-05'"); // Dataset<Row> vender_set = spark.sql("select pop_vender_id from app.app_sjzt_payout_apply_with_order where dt = '2019-08-05' limit 2000"); // // // 将数据去重,转换成 List<Row> 格式 // vender_set = vender_set.distinct(); // vender_set = vender_set.na().fill(0L); // JavaRDD<Row> vender= vender_set.toJavaRDD(); // List<Row> vender_list = vender.collect(); // // // 遍历商家id,调用jsf接口 // for(Row row:vender_list) { // String id = row.getString(0); // String result = service.venderDownAmountList(id); // System.out.print(id + " "+ result + " "); // } // // System.out.println( "Hello World!" ); while (true) { try { long start = System.currentTimeMillis(); String result = service.venderDownAmountList("10021"); long end = System.currentTimeMillis(); System.out.println("耗时:"+(end - start)); System.out.println(result); LOGGER.info("response msg from server :{}", result); } catch (Exception e) { LOGGER.error(e.getMessage(), e); } try { Thread.sleep(2000); } catch (Exception e) { } } } }