我有以下代码,我需要在该方法中处理列表并将其设置为该方法中存在的变量。 该规则的目的是在变量不作为呼叫者的参数时设置该变量。
RULE catch.DVSRoundRobinScheduling.updateServerConnectionPool
CLASS com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling
METHOD updateServerConnectionPool
BIND
TPA_LOGGER:Logger = com.alcatel.tpapps.common.common.TPAResources.getLogger();
COMPILE
AT ENTRY
IF ($aInServerList == null || $aInServerList.size() == 0)
DO
$aInServerList = java.util.Arrays.asList("abc", "xyz", "123");
TPA_LOGGER.info("[BMAN] DVSRoundRobinScheduling: updateServerConnectionPool aInServerList [" + $aInServerList + "]");
ENDRULE
并获得:
# File /opt/tpa/tmp/notif3.btm line 4
RULE catch.DVSRoundRobinScheduling.updateServerConnectionPool
CLASS com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling
METHOD updateServerConnectionPool
COMPILE
AT ENTRY
BIND
TPA_LOGGER:Logger = com.alcatel.tpapps.common.common.TPAResources.getLogger();
IF ($aInServerList == null || $aInServerList.size() == 0)
DO
$aInServerList = java.util.Arrays.asList("DVS_SIMULATOR_Asif", "DVS_SIMULATOR_Asif_1", "DVS_SIMULATOR_Asif_3");
TPA_LOGGER.info("[BMAN] DVSRoundRobinScheduling: updateServerConnectionPool aInServerList [" + $aInServerList + "]");
ENDRULE
Transformed in:
loader: com.nokia.tpapps.cenotificationservice-common [134]
trigger method: com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling.updateServerConnectionPool(java.util.List) java.util.List
failed to compile
Rule.ensureTypeCheckedCompiled : error type checking rule catch.DVSRoundRobinScheduling.updateServerConnectionPool
org.jboss.byteman.rule.exception.TypeException: MethodExpression.typeCheck : invalid method asList for target class java.util.Arrays file /opt/tpa/tmp/notif3.btm line 8
at org.jboss.byteman.rule.expression.MethodExpression.findMethod(MethodExpression.java:331)
at org.jboss.byteman.rule.expression.MethodExpression.typeCheck(MethodExpression.java:187)
at org.jboss.byteman.rule.expression.AssignExpression.typeCheck(AssignExpression.java:76)
at org.jboss.byteman.rule.Action.typeCheck(Action.java:106)
at org.jboss.byteman.rule.Rule.typeCheck(Rule.java:601)
at org.jboss.byteman.rule.Rule.ensureTypeCheckedCompiled(Rule.java:529)
at org.jboss.byteman.rule.Rule.execute(Rule.java:808)
at org.jboss.byteman.rule.Rule.execute(Rule.java:789)
at com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling.updateServerConnectionPool(DVSRoundRobinScheduling.java)
at com.nokia.tpapps.cenotificationservice.dvsprocess.DVSTcpProcess.getServer(DVSTcpProcess.java:64)
at com.nokia.tpapps.cenotificationservice.parser.DVSRequestHandler.getServerEntity(DVSRequestHandler.java:106)
at com.nokia.tpapps.cenotificationservice.parser.DVSRequestHandler.parseAndSendMessage(DVSRequestHandler.java:257)
at com.nokia.tpapps.cenotificationservice.rest.RestResourceProvider.handlePushNotification(RestResourceProvider.java:329)
at com.nokia.tpapps.cenotificationservice.rest.RestResourceProvider.preProcessHandlePushNotification(RestResourceProvider.java:161)
at com.nokia.tpapps.cenotificationservice.rest.RestResourceProvider.pushNotification(RestResourceProvider.java:145)
at jdk.internal.reflect.GeneratedMethodAccessor153.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:475)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:397)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76)
at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.alcatel.tpapps.common.common.opentracing.OpenTracingRequestFilter.doFilter(OpenTracingRequestFilter.java:102)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.MeAuditRequestFilter.doFilter(MeAuditRequestFilter.java:77)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.LoggingRequestFilter.doFilter(LoggingRequestFilter.java:249)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.sps.pandora2impl.filter.TracingFilter.doFilter(TracingFilter.java:99)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.ReRateEDRFilter.doFilter(ReRateEDRFilter.java:181)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.BackOutEntityVersioningTimeFilter.doFilter(BackOutEntityVersioningTimeFilter.java:87)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.HeaderRequestFilter.doFilter(HeaderRequestFilter.java:106)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.ExternalTxHeaderFilter.doFilter(ExternalTxHeaderFilter.java:145)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.BackOutEntityVersioningFilter.doFilter(BackOutEntityVersioningFilter.java:85)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.RequestBlockerInterceptor.doFilter(RequestBlockerInterceptor.java:191)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.spscommon.filter.GZIPRequestFilter.doFilter(GZIPRequestFilter.java:120)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.metrics.http.HTTPMetricsServiceImpl.doFilter(HTTPMetricsServiceImpl.java:145)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at com.nokia.tpapps.metrics.http.HttpMetricFilter.doFilter(HttpMetricFilter.java:112)
at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:88)
at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:76)
at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:47)
at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at com.alcatel_lucent.as.service.jetty.common.connector.AbstractBufferEndPoint.lambda$fillable$0(AbstractBufferEndPoint.java:72)
at com.alcatel.as.service.concurrent.impl.Helper.runTask(Helper.java:57)
at com.alcatel.as.service.concurrent.impl.QueueExecutor.lambda$execute$5(QueueExecutor.java:211)
at com.alcatel.as.service.concurrent.impl.SerialQueue.run(SerialQueue.java:95)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
这里有什么错?
也是,尝试使用流API也无法正常工作。# File /opt/tpa/tmp/notif3.btm line 4
RULE catch.DVSRoundRobinScheduling.updateServerConnectionPool
CLASS com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling
METHOD updateServerConnectionPool
COMPILE
AT ENTRY
BIND
TPA_LOGGER:Logger = com.alcatel.tpapps.common.common.TPAResources.getLogger();
IF ($aInServerList == null || $aInServerList.size() == 0)
DO
$aInServerList = java.util.stream.Stream.of("Apple", "Banana", "Cherry").collect(java.util.stream.Collectors.Collectors.toList());
TPA_LOGGER.info("[BMAN] DVSRoundRobinScheduling: updateServerConnectionPool aInServerList [" + $aInServerList + "]");
ENDRULE
Transformed in:
loader: com.nokia.tpapps.cenotificationservice-common [134]
trigger method: com.nokia.tpapps.cenotificationservice.nsAlgortihm.scheduling.DVSRoundRobinScheduling.updateServerConnectionPool(java.util.List) java.util.List
failed to compile
Rule.ensureTypeCheckedCompiled : error type checking rule catch.DVSRoundRobinScheduling.updateServerConnectionPool
org.jboss.byteman.rule.exception.TypeException: MethodExpression.typeCheck : invalid method of for target class java.util.stream.Stream file /opt/tpa/tmp/notif3.btm line 8
at org.jboss.byteman.rule.expression.MethodExpression.findMethod(MethodExpression.java:331)
at org.jboss.byteman.rule.expression.MethodExpression.typeCheck(MethodExpression.java:187)
at org.jboss.byteman.rule.expression.MethodExpression.typeCheck(MethodExpression.java:182)
at org.jboss.byteman.rule.expression.AssignExpression.typeCheck(AssignExpression.java:76)
上面的规则也不起作用。 我正在使用4.0.23。 Byteman支持我要做的事情吗?
以下以纠正第一期:
它正在工作。
需要第二期的答案。