常用的网站推广装修公司起名

web/2025/10/2 17:38:20/文章来源:
常用的网站推广,装修公司起名,wordpress批量修改标签,wordpress dux1.4概述 基于Flume MongoDB#xff0c;对现有的多个应用系统进行日志采集。特点 采集范围每一次用户请求的请求信息。数据量大尽量减少现有系统的改动数据流图 说明#xff1a;首先考虑的结构体系#xff0c;是直接在应用系统中#xff0c;将日志数据写到Flume#xff1b;但…概述 基于Flume MongoDB对现有的多个应用系统进行日志采集。 特点 采集范围每一次用户请求的请求信息。数据量大尽量减少现有系统的改动数据流图 说明 首先考虑的结构体系是直接在应用系统中将日志数据写到Flume但是现有的应用系统都是非Maven的需要在每一个应用系统中添加20个jar包。为避免这种情况抽出了一层日志服务开放webservice服务给应用系统调用最终形成上述的体系。 日志存储 1.需要解决的问题 1.1 借助Flume写日志到MongoDB 参考Flume学习应用Java写日志数据到MongoDB - 外网参考Flume学习应用Java写日志数据到MongoDB 1.2 发布webservice服务 参考在web项目中发布jaxws - 外网参考在web项目中发布jaxws 2.日志服务实现 一个简单的web项目对外发布一个webservice服务实现写日志到Flume。 2.1 文件结构 src/main/java|---- cn.sinobest.asj.log|---- ISALog.java # 日志服务接口|---- SALogImpl.java # 日志服务实现类|---- cn.sinobest.asj.log.exception|---- InvalidGradeException.java # 表示无效的日志等级|---- InvalidFormatExceptioin.java # 表示无效的消息格式要求是JSON格式字符串|---- cn.sinobest.asj.log.util|---- ValidGrade.java # 枚举所有有效的日志等级DEBUG, INFO, WARN, ERROR|---- MessageTemplate.java # 消息模板 src/main/resources|---- log4j.properties src/main/webapp|---- WEB-INF|---- sun-jaxws.xml|---- web.xml|---- index.jsp # 这个可以忽略 pom.xml   2.2  文件内容 你可以直接从log-service拿到源代码并跳过这一节的内容。 pom.xml 1 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance2 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd3 modelVersion4.0.0/modelVersion4 groupIdcn.sinobest.asj/groupId5 artifactIdlog-service/artifactId6 packagingwar/packaging7 version0.0.1-SNAPSHOT/version8 namelog-service Maven Webapp/name9 urlhttp://maven.apache.org/url 10 dependencies 11 dependency 12 groupIdjunit/groupId 13 artifactIdjunit/artifactId 14 version3.8.1/version 15 scopetest/scope 16 /dependency 17 dependency 18 groupIdlog4j/groupId 19 artifactIdlog4j/artifactId 20 version1.2.16/version 21 /dependency 22 dependency 23 groupIdcommons-logging/groupId 24 artifactIdcommons-logging/artifactId 25 version1.1.1/version 26 /dependency 27 !-- for log to Flume -- 28 dependency 29 groupIdorg.apache.flume.flume-ng-clients/groupId 30 artifactIdflume-ng-log4jappender/artifactId 31 version1.6.0/version 32 /dependency 33 !-- for jax-ws -- 34 dependency 35 groupIdcom.sun.xml.ws/groupId 36 artifactIdjaxws-rt/artifactId 37 version2.2.10/version 38 /dependency 39 !-- for test the log content is a json-format or not -- 40 dependency 41 groupIdorg.mongodb/groupId 42 artifactIdmongo-java-driver/artifactId 43 version2.13.0/version 44 /dependency 45 /dependencies 46 build 47 finalNamelog-service/finalName 48 /build 49 /project pom.xml web.xml ?xml version1.0 encodingUTF-8? web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://java.sun.com/xml/ns/javaeexmlns:webhttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsdxsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsdidWebApp_ID version3.0 metadata-completefalsedisplay-nameArchetype Created Web Application/display-name /web-app 注意如果是servlet3.0以下的版本需要额外的配置。 log4j.properties # 配置Log4jAppender能写日志到Flume log4j.appender.flumeAvroorg.apache.flume.clients.log4jappender.Log4jAppender log4j.appender.flumeAvro.Hostnamelocalhost log4j.appender.flumeAvro.Port44444 log4j.appender.flumeAvro.UnsafeModetrue log4j.appender.flumeAvro.layoutorg.apache.log4j.PatternLayout log4j.appender.flumeAvro.layout.ConversionPattern%m # set root logger log4j.rootLoggerINFO, flumeAvro ISALog.java package cn.sinobest.asj.log; import javax.jws.WebParam; import javax.jws.WebService; import cn.sinobest.asj.log.exception.InvalidFormatExceptioin; import cn.sinobest.asj.log.exception.InvalidGradeException; /*** SINOBEST ASJ Log - 为实现日志的统一采集和管理.* * author lijinlong* */ WebService public interface ISALog {/*** 日志记录.* * param grade* 日志等级描述 - 忽略大小写.* param content* 日志内容 - 需要为JSON格式的字符串.*/public void log(WebParam(name grade) String grade,WebParam(name content) String content)throws InvalidGradeException, InvalidFormatExceptioin; } SALogImpl.java 1 package cn.sinobest.asj.log;2 import javax.jws.WebService;3 import org.apache.commons.logging.Log;4 import org.apache.commons.logging.LogFactory;5 import cn.sinobest.asj.log.exception.InvalidFormatExceptioin;6 import cn.sinobest.asj.log.exception.InvalidGradeException;7 import cn.sinobest.asj.log.util.MessageTemplate;8 import cn.sinobest.asj.log.util.ValidGrade;9 import com.mongodb.util.JSON;10 WebService(endpointInterface cn.sinobest.asj.log.ISALog)11 public class SALogImpl implements ISALog {12 static final Log log LogFactory.getLog(SALogImpl.class);13 public void log(String grade, String content) throws InvalidGradeException,14 InvalidFormatExceptioin {15 checkGrade(grade);16 checkContent(content);17 ValidGrade vg ValidGrade.valueOf(grade.toUpperCase());18 log(vg, content);19 }20 /**21 * 根据日志等级调用{link log}的不同方法记录日志.22 * 23 * param vg24 * 日志等级25 * param content26 * 日志内容27 */28 private void log(ValidGrade vg, String content) {29 switch (vg) {30 case DEBUG:31 log.debug(content);32 break;33 case INFO:34 log.info(content);35 break;36 case WARN:37 log.warn(content);38 break;39 case ERROR:40 log.error(content);41 break;42 default:43 break;44 }45 }46 /**47 * 检查日志等级的有效性.48 * 49 * param grade50 * 日志等级描述.51 * throws InvalidGradeException52 * 当日志等级无效时抛出此异常.53 */54 private void checkGrade(String grade) throws InvalidGradeException {55 boolean valid ValidGrade.isValid(grade);56 if (!valid) {57 String message String.format(MessageTemplate.INVALID_GRADE,58 grade, ValidGrade.getEnumContent());59 throw new InvalidGradeException(message);60 }61 }62 /**63 * 检查日志内容格式的有效性.br64 * 要求为JSON格式的字符串.65 * 66 * param content67 * 日志内容.68 * throws InvalidFormatExceptioin69 * 当日志内容格式无效时抛出此异常.70 */71 private void checkContent(String content) throws InvalidFormatExceptioin {72 boolean valid true;73 if (content null || content.isEmpty()) {74 valid false;75 } else {76 try {77 JSON.parse(content);78 valid true;79 } catch (com.mongodb.util.JSONParseException e) {80 valid false;81 }82 }83 if (!valid) {84 String message String.format(MessageTemplate.INVALID_FORMAT,85 content);86 throw new InvalidFormatExceptioin(message);87 }88 }89 /**90 * just for test.91 * 92 * param args93 */94 public static void main(String[] args) {95 String[][] data { { info, {name:ljl,age:26} },96 { INFO, trouble is a friend. },97 { JOKE, {message:I am feeling down.} } };98 ISALog ilog new SALogImpl();99 for (String[] dat : data) { 100 String grade dat[0]; 101 String content dat[1]; 102 try { 103 ilog.log(grade, content); 104 } catch (Exception e) { 105 e.printStackTrace(); 106 } 107 } 108 } 109 } SALogImpl.java InvalidGradeException.java package cn.sinobest.asj.log.exception; /*** 表示无效的日志等级.* author lijinlong**/ public class InvalidGradeException extends Exception {private static final long serialVersionUID 1341726127995938030L;public InvalidGradeException(String message) {super(message);} } InvalidFormatExceptioin.java package cn.sinobest.asj.log.exception; /*** 表示无效的日志等级.* author lijinlong**/ public class InvalidGradeException extends Exception {private static final long serialVersionUID 1341726127995938030L;public InvalidGradeException(String message) {super(message);} } ValidGrade.java 1 package cn.sinobest.asj.log.util;2 /**3 * 有效的日志等级.4 * 5 * author lijinlong6 * 7 */8 public enum ValidGrade {9 DEBUG, INFO, WARN, ERROR; 10 /** 有效日志等级的枚举内容 */ 11 private static String enumContent; 12 /** 13 * 获取所有有效的日志等级. 14 * 15 * return 16 */ 17 public static String getEnumContent() { 18 if (enumContent ! null !enumContent.isEmpty()) 19 return enumContent; 20 ValidGrade[] vgs ValidGrade.values(); 21 StringBuilder builder new StringBuilder(30); 22 for (ValidGrade vg : vgs) { 23 builder.append(vg).append(,); 24 } 25 builder.delete(builder.length() - 1, builder.length()); 26 enumContent builder.toString(); 27 return enumContent; 28 } 29 30 /** 31 * 判断日志等级是否有效. 32 * param grade 日志等级 - 忽略大小写. 33 * return 34 */ 35 public static boolean isValid(String grade) { 36 if (grade null || grade.isEmpty()) 37 return false; 38 39 boolean result false; 40 41 final String GRADE grade.toUpperCase(); 42 ValidGrade[] vgs ValidGrade.values(); 43 for (ValidGrade vg : vgs) { 44 if (vg.toString().equals(GRADE)) { 45 result true; 46 break; 47 } 48 } 49 50 return result; 51 } 52 53 /** 54 * just for test. 55 * param args 56 */ 57 public static void main(String[] args) { 58 String content getEnumContent(); 59 System.out.println(content); 60 61 String[] testGrade {DEBUG, INFO, WARN, ERROR, TEST}; 62 for (String tg : testGrade) { 63 if (!ValidGrade.isValid(tg)) { 64 String message String.format(%s is invalid., tg); 65 System.out.println(message); 66 } 67 } 68 } 69 } ValidGrade.java MessageTemplate.java package cn.sinobest.asj.log.util; /*** 消息模板.* author lijinlong**/ public class MessageTemplate {/** 无效的消息等级 */public static final String INVALID_GRADE 无效的日志等级[%s]。服务支持的日志等级有%s。;/** 无效的消息内容格式 */public static final String INVALID_FORMAT 无效的日志内容格式:\n%s\n请检查是否为JSON格式的字符串。; } sun-jaxws.xml ?xml version1.0 encodingUTF-8? endpoints xmlnshttp://java.sun.com/xml/ns/jax-ws/ri/runtimeversion2.0endpoint namedefaultLog implementationcn.sinobest.asj.log.SALogImplurl-pattern/log.action / /endpoints 应用系统群 1.需要考虑的问题 1.1 拦截 使用Filter可以实现拦截。 1.2 组织日志内容 视需求而定当前仅对request中的部分信息进行了采集。 1.3 格式化 日志信息需要格式化为JSON字符串才能正确的写到MongoDB。 1.4 请求webservice服务 参考基于wsimport生成代码的客户端 - 外网参考基于wsimport生成代码的客户端 2. demo 2.1 文件结构图 src|---- cn.sinobest.asj.log|---- LogFilter.java|---- cn.sinobest.asj.log.wsimport # 存放wsimport生成的代码# 省略 basic|---- WEB-INF|---- web.xml 2.2 文件内容 LogFilter.java 1 package cn.sinobest.asj.log;2 import java.io.IOException;3 import java.net.MalformedURLException;4 import java.net.URL;5 import java.util.Date;6 import java.util.HashMap;7 import java.util.Map;8 import javax.servlet.Filter;9 import javax.servlet.FilterChain; 10 import javax.servlet.FilterConfig; 11 import javax.servlet.ServletException; 12 import javax.servlet.ServletRequest; 13 import javax.servlet.ServletResponse; 14 import javax.servlet.http.HttpServletRequest; 15 import org.apache.commons.logging.Log; 16 import org.apache.commons.logging.LogFactory; 17 import org.json.JSONObject; 18 import cn.sinobest.asj.log.wsimport.ISALog; 19 import cn.sinobest.asj.log.wsimport.InvalidFormatExceptioin_Exception; 20 import cn.sinobest.asj.log.wsimport.InvalidGradeException_Exception; 21 import cn.sinobest.asj.log.wsimport.SALogImplService; 22 public class LogFilter implements Filter { 23 static final Log log LogFactory.getLog(LogFilter.class); 24 static final String WSDL_LOCATION http://localhost:8080/logserv/log.action?wsdl; 25 Override 26 public void destroy() { 27 } 28 Override 29 public void doFilter(ServletRequest request, ServletResponse response, 30 FilterChain chain) throws IOException, ServletException { 31 try { 32 log(request); 33 } catch (InvalidFormatExceptioin_Exception e) { 34 e.printStackTrace(); 35 } catch (InvalidGradeException_Exception e) { 36 e.printStackTrace(); 37 } finally { 38 chain.doFilter(request, response); 39 } 40 } 41 private void log(ServletRequest request) throws MalformedURLException, 42 InvalidFormatExceptioin_Exception, InvalidGradeException_Exception { 43 MapString, Object data new HashMapString, Object(); 44 data.put(appid, zfba); 45 data.put(time, new Date()); 46 data.put(localAddr, request.getLocalAddr()); 47 data.put(localName, request.getLocalName()); 48 data.put(localPort, request.getLocalPort()); 49 data.put(remoteAddr, request.getRemoteAddr()); 50 data.put(remoteHost, request.getRemoteHost()); 51 data.put(remotePort, request.getRemotePort()); 52 // data.put(serverName, request.getServerName()); 53 // data.put(serverPort, request.getServerPort()); 54 HttpServletRequest hrequest (HttpServletRequest) request; 55 data.put(pathInfo, hrequest.getPathInfo()); 56 data.put(pathTranslated, hrequest.getPathTranslated()); 57 data.put(remoteUser, hrequest.getRemoteUser()); 58 data.put(requestURI, hrequest.getRequestURI()); 59 data.put(requestURL, hrequest.getRequestURL()); 60 data.put(servletPath, hrequest.getServletPath()); 61 JSONObject cont new JSONObject(data); 62 URL url new URL(WSDL_LOCATION); 63 SALogImplService ss new SALogImplService(url); 64 ISALog service ss.getSALogImplPort(); 65 service.log(info, cont.toString()); 66 } 67 Override 68 public void init(FilterConfig arg0) throws ServletException { 69 } 70 } LogFilter.java web.xml这里仅贴出新增的内容 !-- 测试日志 --filterfilter-namelog-filter/filter-namefilter-classcn.sinobest.asj.log.LogFilter/filter-class/filter!-- 测试日志 --filter-mappingfilter-namelog-filter/filter-nameurl-pattern/*/url-pattern/filter-mapping 测试 启动MongoDB参考《Flume学习应用Java写日志数据到MongoDB》配置并启动Flume参考《Flume学习应用Java写日志数据到MongoDB》启动日志服务参考《在web项目中发布jaxws》启动应用系统并进行访问查看MongoDB数据库参考《Flume学习应用Java写日志数据到MongoDB》附录 相关文章 Flume学习应用Java写日志数据到MongoDB博客园Flume学习应用Java写日志数据到MongoDB在web项目中发布jaxws博客园在web项目中发布jaxws基于wsimport生成代码的客户端博客园基于wsimport生成代码的客户端  转载于:https://www.cnblogs.com/ywjy/p/5259291.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

群晖 做网站服务器营销网站建设哪里便宜

本文记录Windows环境下的MongoDB安装与使用总结。 【1】官网下载 官网下载地址:Download MongoDB Community Server | MongoDB 这里可以选择下载zip或者msi,zip是解压后自己配置,msi是傻瓜式一键安装。这里我们分别对比进行实践。 【2】ZI…

网站的盈利方式志愿服务网站开发

文章目录 前言 概念 算法 训练 性能 应用 参考资料 前言 见《初试人工智能》 概念 人工智能系统(artifieial intelligence system),针对人类定义的给定目标,产生诸如内容、预测、推荐或决策等输出的一类工程系统。该工程系…

备案期间 需要关闭网站吗seo每天一贴

Spring的IOC容器初始化流程 IOC容器初始化在SpringApplication对象创建完毕执行run方法时执行refreshContext()时开始。 准备BeanFactory,设置其类加载器和environment等 执行BeanFactory后置处理器,扫描要放入容器的Bean信息,得到对应的Bea…

网站关键词没排名怎么办领秀网站建设

保存token的最佳方式取决于具体的应用场景和需求。以下是几种常见的保存token的方式及其优缺点,以便您根据实际情况进行选择: HTTP Only Cookies: 优点:Cookies可以自动随HTTP请求发送,且HTTP Only属性可以防止JavaS…

用ps做美食网站母婴网站源码 带采集

C OJ基础 在学校学习C程序设计基础课程的OJ题目 缺少第二十题 这里写目录标题 C OJ基础习题练习(一)打印图形习题练习(二)数据的输入输出习题练习(三)函数重载习题练习(四)设计矩形类习题练习(五)定义Tree类习题练习(六)完善职工工资类Salary的设计习题练习(七)设计矩形类recta…

自建购物网站多少钱有没有做cad单的网站

目录 安装Docker 安装yum工具 更新本地镜像源 安装docker 启动docker 关闭防火墙 docker启动命令 配置镜像加速 docker的使用 拉取nginx 查看本地镜像 把镜像文件nginx导出成tar文件 查看是否导出成功 ​编辑 删除本地镜像nginx:latest 导入镜像文件nginx 拉取…

北京南站地铁线路图郑州市网络设计公司

科目编号:8663 座位号 2017-2018学年度第二学期期末考试 老年保健按摩试题 2018年7月 一、名词解释(本大题共5小题,每小题4分,共计20分) 1.骨度分寸法: 2.三叉神经痛: 3.间接标志法&#xff…

江苏省建设厅网站资质升级wordpress安装错误310

项目介绍 采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…

冀州建网站亚马逊海外网站

1.语言的根本属性 语言的根本属性,通常指的是那些使语言区别于其他任何形式的信息传递系统的本质特征,以下是一些关键的根本属性: 社会性:语言首先是人类社会的产物,是社会成员之间进行思想交流和信息传递的主要工具&…

南京高新区规划建设局网站江西sem

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道…

环境设计专业网站网站开发上线ftp怎么用

各位少年,大家好,我是博主那一脸阳光,今天分享结构体的使用,声明以及操作符的使用。 前言: 如果你想做一块月饼,你要学习它的制作方法,需要准备面粉,白砂糖,奶粉&…

北京厦门网站优化英文营销网站建设

目录: 【SSH进阶之路】Struts基本原理 实现简单登录(二) 【SSH进阶之路】一步步重构MVC实现Struts框架——从一个简单MVC开始(三) 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径&#xff08…

精品个人网站源码下载如何做好网站建设的关键重点

更多 CSP 认证考试题目题解可以前往:CSP-CCF 认证考试真题题解 原题链接: 202403-1 词频统计 时间限制: 1.0 秒 空间限制: 512 MiB 题目描述 在学习了文本处理后,小 P 对英语书中的 n n n 篇文章进行了初步整理。 …

如何联系网站wordpress 注册设置密码

磐石云PSCC系统是一款大型呼叫中心解决方案软件,基于fs做通讯层,经过无数次锤炼而得到目前的稳定性! 先来说说系统所使用的行业;呼出型呼叫中心、房产咨询、教育咨询、电信增值业务、行业应用,医疗保险、金融机构服务&…

淘客免费网站建设网站建设项目功能需求分析报告

数据科学、统计学、商业分析是在各方面有着不同的侧重和方向的领域。 1.专业技能 数据科学(Data Science):数据科学涉及从大量数据中提取有价值的信息、模式和洞察力的领域。它使用多种技术和领域知识,如统计学、机器学习、数据库…

vs2008如何新建网站福建建设厅官网

一、题目 1、题目描述 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示例1: 输入:n = 12 输出:3 解释:1…

房地产营销策划方案泉州seo外包平台

很少在Blog上写自己的生活,很少在Blog上写自己的琐事,觉得没什么好写的。来这座城市8年了,从毕业到工作,所有的这3000多个日子过得很充实但是也很艰辛,我经常笑,因为没有什么能比笑容更能释放压力。  不知…

资讯网站 整体uiseo短视频网页入口引流网站

目标:通过本文可以快速实现windows 网络问题定位。 ipconfig:查看本机网络配置情况 C:\Users\zzg>ipconfigWindows IP 配置以太网适配器 以太网:媒体状态 . . . . . . . . . . . . : 媒体已断开连接连接特定的 DNS 后缀 . . . . . . . :无线局域网适配器 本地…

购物类网站都有哪些模块网站托管要求

目录 一、认识MATLAB 二、认识工具箱 三、基本操作和函数 3.1 算术操作符 3.2 数学函数 3.3 矩阵操作 3.4 索引和切片 3.5 逻辑操作 3.6 控制流程 3.7 数据输入输出 四、变量和数据类型 4.1 数值类型 4.2 整型 4.3 复数 4.4 字符串 4.5 逻辑类型 4.6 结构体&a…

网站盈利模式有哪几种wordpress 数据库链接

转载自 分布式架构--基本思想汇总 在互联网大行其道的今天,各种分布式系统已经司空见惯。搜索引擎、电商网站、微博、微信、O2O平台。。凡是涉及到大规模用户、高并发访问的,无一不是分布式。 关于分布式系统,并没有…