We would like to have the capability to intercept prior to the action pipeline the Message, globally. This will lay the foundation for being able to hook in global interceptors for global exception handling, business activity monitoring, and service analytics. When the interceptor is executed for the service, it would be helpful to send in not just the Message, but information on the current service (name, etc) as well. This may include which adapter the message is arriving on, what the service name and category is, etc. We have tried in the past to create something like this for a client using AOP, but couldn't achieve it this way, as JBoss AOP has some serious limitations in the Enterprise offerings. It would be also great if the interceptor had the capability to read the full configuration of the service to know what listeners are provided. This could be used in the future to log inputs for services to a service registry. In addition to the hooks for this in the Action Pipeline code, we would also need to have a globally defined configuration for interceptors. The background behind this request is that often times, clients need to do analytics over service request / response times, or need to globally define rules for Exception Handling, or need to intercept input and output messages for auditing. We are hoping that this feature would facilitate all of these by allowing Red Hat to start shipping generic implementations for these things incrementally, and also enabling customers to craft their own to meet specific business needs. See: https://issues.jboss.org/browse/JBESB-3724
GSS has encountered this issue also. Prioritized 'High'.
Tom Cunningham <tcunning> updated the status of jira JBESB-3724 to Resolved
Tom Cunningham <tcunning> made a comment on jira JBESB-3724 Interceptors can now be configured - the user should implement org.jboss.soa.esb.listeners.message.PipelinInterceptor and configured the interceptors with the interception points within jbossesb-properties.xml. I've added interception points at service instantiation, service start, service end, and service failure (see the properties below). The PipelineInterceptor is passed a message and a ConfigTree. Please note that in the case of the instantiation interceptor, no message has been passed in to the pipeline yet, so a null message is passed back to the interceptor. <properties name="interceptors"> <property name="org.jboss.soa.esb.pipeline.failure.interceptors" value=""org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor"/> <property name="org.jboss.soa.esb.pipeline.instantiate.interceptors" value="org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor"/> <property name="org.jboss.soa.esb.pipeline.start.interceptors" value="org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor"/> <property name="org.jboss.soa.esb.pipeline.end.interceptors" value="org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor"/> </properties>
Tom Cunningham <tcunning> updated the status of jira JBESB-3724 to Closed
Should be in ER1. See JBESB-3724 for details.
Verified in ER3 - the functionality is present but jbossesb-properties.xml contains bug <property name="org.jboss.soa.esb.pipeline.failure.interceptors" value=""org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor"/> Note double quotes after value= Also if the provided example is tried the server thwos an exception during startup 13:17:09,228 ERROR [AbstractKernelController] Error installing to Start: name=jboss.esb.vfsfile:/home/jpechane/releases/53ER3/jboss-as/server/default/deploy/jbossesb.esb/ state=Create java.lang.RuntimeException: org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException: Unexpected exception while instantiating managed instance at org.jboss.soa.esb.listeners.config.Configuration.create(Configuration.java:185) at org.jboss.soa.esb.listeners.deployers.mc.EsbDeployment.start(EsbDeployment.java:231) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59) at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150) at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:243) at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:111) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:72) at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556) at org.jboss.system.ServiceController.doChange(ServiceController.java:688) at org.jboss.system.ServiceController.start(ServiceController.java:460) at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163) at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99) at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46) at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62) at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55) at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1454) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1172) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1193) at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1113) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:826) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:556) at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:789) at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:699) at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117) at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70) at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53) at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:403) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1652) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:938) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:988) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:778) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:543) at org.jboss.system.server.profileservice.repository.AbstractProfileService.registerProfile(AbstractProfileService.java:308) at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:256) at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461) at org.jboss.Main.boot(Main.java:223) at org.jboss.Main$1.run(Main.java:574) at java.lang.Thread.run(Thread.java:636) Caused by: org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException: Unexpected exception while instantiating managed instance at org.jboss.soa.esb.listeners.LifecycleUtil.getManagedInstances(LifecycleUtil.java:166) at org.jboss.soa.esb.listeners.LifecycleUtil.getListeners(LifecycleUtil.java:76) at org.jboss.soa.esb.listeners.config.Configuration.create(Configuration.java:124) ... 63 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:532) at org.jboss.soa.esb.listeners.LifecycleUtil.getManagedInstances(LifecycleUtil.java:162) ... 65 more Caused by: java.lang.NullPointerException at org.jboss.soa.esb.listeners.message.GenericPipelineInterceptor.processMessage(GenericPipelineInterceptor.java:33) at org.jboss.soa.esb.listeners.message.InterceptorManager.interceptInstantiate(InterceptorManager.java:126) at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.<init>(ActionProcessingPipeline.java:380) at org.jboss.soa.esb.listeners.ScheduleListener.<init>(ScheduleListener.java:90) ... 70 more The issue is probably caused by null message body
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: In previous versions, users were not able to globally intercept messages prior to the action pipeline. This functionality has now been added and users can configure interceptors. To do so, implement org.jboss.soa.esb.listeners.message.PipelinInterceptor and configure the interceptors with the interception points in jbossesb-properties.xml.
not solved, the double quotes still there
Please verify this issue on 5.3.0 CR1.