Code Monkey home page Code Monkey logo

cdi's Introduction

Axon Framework CDI Support

This Axon Framework module provides support for the CDI programming model. It is a CDI portable extension integrating the Axon Framework and providing some intelligent defaults while still allowing for configuring overrides.

The current minimum supported versions are:

  • Axon Framework 3.3.5
  • CDI 1.2/Java EE 7
  • Java SE 8

We have so far tested sucessfully against Payara, WildFly, JBoss EAP, TomEE and WebLogic. We will test the module with Thorntail (formerly WildFly Swarm) and WebSphere Liberty/Open Liberty. A contribution testing against WebSphere classic is welcome.

Usage

To use the module, simply add the following dependency from Maven Central:

  <dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-cdi</artifactId>
    <version>3.3-alpha1</version>
  </dependency>

Using Snapshot

To use the snapshot version on the master branch, you will need to build it locally for the time being. Once you have built the artifact locally, simply add the following dependency:

  <dependency>
    <groupId>org.axonframework</groupId>
    <artifactId>axon-cdi</artifactId>
    <version>3.3-alpha2-SNAPSHOT</version>
  </dependency>

Automatic Configuration

The base Axon Framework is extremely powerful and flexible. What this extension does is to provide a number of sensible defaults for Axon applications while still allowing you reasonable configuration flexibility - including the ability to override defaults. As soon as you include the module in your project, you will be able to inject a number of Axon APIs into your code using CDI. These APIs represent the most important Axon Framework building blocks:

Overrides

You can provide configuration overrides for the following Axon artifacts by creating CDI producers for them:

For more details on these objects and the Axon Framework, please consult the Axon Framework Reference Guide.

Aggregates

You can define aggregate roots by placing a simple annotation org.axonframework.cdi.stereotype.Aggregate on your class. It will be automatically collected by the CDI container and registered.

Event Handlers and Query Handlers

Event handlers and query handlers must be CDI beans. They will be automatically registered with Axon for you.

Examples

Please have a look at the examples in the example folder.

Java EE

The Java EE example demonstrates usage inside any Java EE 7+ compatible application server much as Payara or WildFly. The example is a generic Maven web application you should be able to build on any IDE, generate a Java EE 7 war and deploy to your favorite application server. We have so far tested sucessfully against Payara, WildFly, JBoss EAP, TomEE and WebLogic.

For convenience, we have added Cargo configurations in separate Maven profiles for most supported and tested application servers.

  • To run the example against WildFly, simply execute the Maven target: mvn package cargo:run -Pwildfly
  • To run the example against JBoss EAP, simply execute the Maven target: mvn package cargo:run -Pjboss
  • To run the example against TomEE, simply execute the Maven target: mvn package cargo:run -Ptomee

Java SE

The Java SE example demonstrates usage in a non-Java EE, Java SE environment that is CDI enabled (that could include a Servlet-only environment with CDI). Note that while the extension targets CDI 1.1, the example uses the CDI 2 Java SE bootstrap API. It is also easily possible to achieve the same functionality in CDI 1.1 using CDI implementation (such as Weld) specific Java SE bootstrap APIs (in the same vein it is possible to use the CDI 2 Java SE bootstrap API in Servlet containers). The example is a generic Maven Java SE application you should be able to build on any IDE, generate a Java SE executable jar and run from the command line using java -jar.

For convenience, we have added a Maven exec Java plugin in the Maven configuration. You can run the application by simply executing the Maven target: mvn package exec:java

Advanced Usage

Usage of JPA Event Store

If you want to use the JPA based event store inside of a container (e.g. Payara or WildFly), you have to configure the following facilities:

Please see the examples for details.

Roadmap

The module is currently in very early alpha state but is likely fairly feature complete. We are actively maturing it to a first release stage. We welcome early adopters and contributors.

Known Issues

The following are the known issues with the extension. Please also look at our GitHub issue tracker.

  • We have tested but do not currently support GlassFish due to numerous critical bugs that have been fixed in GlassFish derivative Payara.

Acknowledgements

The work for Axon to support CDI started in the community. The earliest CDI support for Axon came from the following folks:

A few other folks took this community-driven work a step much further by more closely aligning with newer versions of Axon:

The official Axon support for CDI is based on the collective hard work of these folks in the community. AxonIQ is very grateful to all direct and indirect community contributors to this module.

cdi's People

Contributors

abuijze avatar antoinesd avatar bert-laverman avatar felipe-alves-moraes avatar jangalinski avatar m-reza-rahman avatar m1l4n54v1c avatar marleinevankampen avatar rmannibucau avatar struberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cdi's Issues

Add repository beans

The extension should automatically add a bean of type Repository<Foo> for each aggregate Foo.

This would enable users to simply write

@ApplicationScoped
public class BankAccountCommandHandler {

    @Inject
    private Repository<BankAccount> repository;

    @Inject
    private EventBus eventBus;
}

saving a producer method and an explicit constructor for BankAccountCommandHandler.

JtaTransaction rescans JNDI for every transaction

JtaTransaction scans the JNDI tree for the correct lookup path to use, because JBoss-descendant application servers use a different path. This causes a lot of unnecessary exceptions to be thrown, since an application does not migrate AS while running.

CDI Review

Make sure CDI is being used in the most optimal way.

No handler was subscribed to command

Hi!

I'm trying to test example application running on JBOSS EAP 7.1 and getting the following stacktrace:

org.axonframework.commandhandling.NoHandlerForCommandException: No handler was subscribed to command [java.util.LinkedHashMap]
	at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:78)
	at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:222)
	at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:179)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:422)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:213)
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:228)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
	at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.axonframework.commandhandling.NoHandlerForCommandException: No handler was subscribed to command [java.util.LinkedHashMap]
	at org.axonframework.commandhandling.SimpleCommandBus.lambda$doDispatch$0(SimpleCommandBus.java:116)
	at java.util.Optional.orElseThrow(Optional.java:290)
	at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:114)
	at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:85)
	at org.axonframework.commandhandling.gateway.AbstractCommandGateway.send(AbstractCommandGateway.java:79)
	at org.axonframework.commandhandling.gateway.DefaultCommandGateway.send(DefaultCommandGateway.java:95)
	at org.axonframework.commandhandling.gateway.DefaultCommandGateway.send(DefaultCommandGateway.java:143)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:38)
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
	at org.axonframework.commandhandling.gateway.CommandGateway$71779371$Proxy$_$$_WeldClientProxy.send(Unknown Source)
	at ch.mobi.apsbau.axonintegration.infrastructure.resource.UserResource.command(UserResource.java:27)
	at ch.mobi.apsbau.axonintegration.infrastructure.resource.UserResource$Proxy$_$$_WeldClientProxy.command(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:406)
	... 44 more

DefinitionException for CommandBus producer

Using the following producer method for CommandBus

    @Produces
    @Typed(CommandBus.class)
    @ApplicationScoped
    public CommandBus commandBus(Configuration configuration) {
        CommandBus commandBus = configuration.commandBus();
        commandBus.registerDispatchInterceptor(new BeanValidationInterceptor<>());
        return commandBus;
    }

my application fails to start with a DefinitionException

Caused by: org.jboss.weld.exceptions.DefinitionException: Exception List with 1 exceptions:
Exception 0 :
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001456: Argument resolvedBean must not be null
	at org.jboss.weld.util.Preconditions.checkArgumentNotNull(Preconditions.java:40)
	at org.jboss.weld.manager.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:752)
	at org.jboss.weld.injection.ParameterInjectionPointImpl.getValueToInject(ParameterInjectionPointImpl.java:76)
	at org.jboss.weld.injection.StaticMethodInjectionPoint.getParameterValues(StaticMethodInjectionPoint.java:134)
	at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)
	at org.jboss.weld.injection.producer.ProducerMethodProducer.produce(ProducerMethodProducer.java:103)
	at org.jboss.weld.injection.producer.AbstractMemberProducer.produce(AbstractMemberProducer.java:161)
	at org.axonframework.cdi.AxonCdiExtension.produce(AxonCdiExtension.java:896)
	at org.axonframework.cdi.AxonCdiExtension.afterBeanDiscovery(AxonCdiExtension.java:535)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
	at org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144)
	at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
	at org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
	at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
	at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
	at javax.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:124)
	at org.jboss.weld.util.Observers.notify(Observers.java:166)
	at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:285)
	at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:273)
	at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:177)
	at org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:171)
	at org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
	at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:44)
	at org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.fire(AfterBeanDiscoveryImpl.java:75)
	at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:456)
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:86)
	at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:97)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698)
	at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1556)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
	at java.lang.Thread.run(Thread.java:748)

	at org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:46)
	at org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.fire(AfterBeanDiscoveryImpl.java:75)
	at org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:456)
	at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:86)
	at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:97)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736)
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698)
	... 6 more

This is one of the issues I mentioned in #7. The CommandBus producer method should not be invoked explicitly by the extension. The invocation fails since the Configuration bean to be injected is not yet available at this stage.

slf4j implementation conflict

slf4j-simple should have test scope, not runtime scope.

A Maven artifact to be used as a library should not depend on any slf4j implementation with runtime or compile scope. This is likely to cause conflicts with any slf4j dependencies defined by the user of this library.

Transactions will never be rollbacked when in nested Unit Of Work

In JtaTransaction the rollback code seems to have a bug that prevents axon to rollback transactions if the error occurs in a nested unit of work.

 if (userTransaction.status == Status.STATUS_ACTIVE) {
                    if (owned) {
                        logger.debug("Rolling back BMT transaction.")
                        userTransaction.rollback()
                    } else {
                        logger.debug("Setting rollback for non-owned BMT transaction.")
                        userTransaction.setRollbackOnly()
                    }
                } else {

In the nested unit of work setRollbackOnly() will be executed on the transaction because it is not the "owner" of the transaction. The transaction status changes to ROLLBACK_ONLY. Back in the root unit of work (which is the owner) the transaction cannot be rollbacked because the status is not ACTIVE any more and the execution resumes with the else part... So the transaction will never be rollbacked.

Here is a log where this occured in our wildfly server. Because @TransactionManagement(BEAN) is selected the server states that "BMT bean should complete transaction before returning":

2018-12-06 17:48:07,405 INFO LoggingHandlerInterceptor EE-ManagedThreadFactory-kafka-Thread-1 - Command [XXX] => [null] (93 ms)
2018-12-06 17:48:07,405 DEBUG AbstractUnitOfWork EE-ManagedThreadFactory-kafka-Thread-1 - Committing Unit Of Work
2018-12-06 17:48:07,405 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Committing JTA transaction if required and possible.
2018-12-06 17:48:07,405 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Cannot commit non-owned BMT transaction.
2018-12-06 17:48:07,405 INFO LoggingHandlerInterceptor EE-ManagedThreadFactory-kafka-Thread-1 - Command [XXX2] => [null] (701 ms)
2018-12-06 17:48:07,405 DEBUG AbstractUnitOfWork EE-ManagedThreadFactory-kafka-Thread-1 - Committing Unit Of Work
2018-12-06 17:48:07,406 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Attempting to look up standard UserTransaction.
2018-12-06 17:48:07,406 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - In a BMT compatible context, using UserTransaction.
2018-12-06 17:48:07,406 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - We cannot own the BMT transaction, the current transaction status is Active.
2018-12-06 17:48:07,406 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Beginning JTA transaction if required and possible.
2018-12-06 17:48:07,406 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Did not try to begin non-owned BMT transaction.
2018-12-06 17:48:07,527 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Rolling back JTA transaction if required and possible.
2018-12-06 17:48:07,527 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Setting rollback for non-owned BMT transaction.
2018-12-06 17:48:07,528 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Rolling back JTA transaction if required and possible.
2018-12-06 17:48:07,528 WARN JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Cannot roll back BMT transaction, current transaction status is Marked for rollback.
2018-12-06 17:48:07,528 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Rolling back JTA transaction if required and possible.
2018-12-06 17:48:07,528 WARN JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Cannot roll back BMT transaction, current transaction status is Marked for rollback.
2018-12-06 17:48:07,528 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Rolling back JTA transaction if required and possible.
2018-12-06 17:48:07,528 WARN JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Cannot roll back BMT transaction, current transaction status is Marked for rollback.
2018-12-06 17:48:07,528 DEBUG JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Rolling back JTA transaction if required and possible.
2018-12-06 17:48:07,528 WARN JtaTransaction EE-ManagedThreadFactory-kafka-Thread-1 - Cannot roll back BMT transaction, current transaction status is Marked for rollback.
2018-12-06 17:48:07,536 ERROR [org.jboss.as.ejb3] (EE-ManagedThreadFactory-kafka-Thread-1) WFLYEJB0443: EJB 3.1 FR 13.3.3: BMT bean XXX should complete transaction before returning.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.