I would like to use Weld CDI to injec an instance of a service interface into a Camunda Java delegate, so something like:
<bpmn2:serviceTask
id="doSomething"
camunda:class="my.package.DoSomethingServiceCamundaDelegate"
name="Do Something">
package my.package;
import javax.inject.Inject;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
public class DoSomethingServiceCamundaDelegate
implements JavaDelegate {
@Inject
private DoSomethingService doSomethingService;
@Override
public void execute(DelegateExecution arg0) {
doSomethingService.doSomething();
}
}
I tried it in a J2SE 1.7 setup with Camunda 7.0.0 using a Unit test, so outside a J2EE container, but unfortunately doSomethingService stays null.
In the Unit test I initialize the Weld CDI container using :
package my.package;
...
public class ProcessTest {
private Weld weld;
@Before public void startCDIContainer() {
weld = new Weld();
weld.initialize();
}
@Test public void test() {
RepositoryService rs =
ProcessEngines.
getDefaultProcessEngine().
getRepositoryService();
DeploymentBuilder db =
rs.createDeployment();
db.addClasspathResource(
"Process.bpmn");
db.deploy();
ProcessEngine pe =
ProcessEngines.getDefaultProcessEngine();
pe.getRuntimeService().
startProcessInstanceById("Process:1:3");
}
@After public void stopCDIContainer() {
weld.shutdown();
}
}
Best regards,
Davy Toch
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration" class="org.camunda.bpm.engine.cdi.CdiStandaloneProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:h2:mem:activiti" /> <property name="databaseSchemaUpdate" value="true" /> <property name="jobExecutorActivate" value="false" /> <property name="mailServerPort" value="5025" /> <property name="customPostBPMNParseListeners"> <list> <bean class="org.camunda.bpm.engine.cdi.impl.event.CdiEventSupportBpmnParseListener" /> </list> </property>
</bean>
</beans>org.camunda.bpm.archetype - camunda-archetype-ejb-warpackage de.gravitex.bpmtest.processref.delegate.anothersimpleprocess;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
public class AnotherDelegate implements JavaDelegate {
public void execute(DelegateExecution arg0) throws Exception {
System.out.println("...AnotherDelegate...");
}
}<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine</artifactId>
<version>7.1.0-alpha3</version>
</dependency>package de.gravitex.bpmtest.processref.delegate.anothersimpleprocess;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
public class AnotherDelegate implements JavaDelegate {
@Inject
BusinessLogicAdapter businessLogicAdapter;
public void execute(DelegateExecution arg0) throws Exception {
System.out.println("...AnotherDelegate...");
}
}<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-cdi</artifactId>
<version>7.1.0-alpha3</version>
</dependency><dependency> <!-- Java EE 6 Specification --> <groupId>org.jboss.spec</groupId> <artifactId>jboss-javaee-web-6.0</artifactId> <version>2.0.0.Final</version> <type>pom</type> <scope>provided</scope> </dependency>
I am trying to call an EJB method directly from a process. I did everything as you mentioned above i.e.
- include camunda-engine-cdi maven dependency to your pom
- create a camunda.cfg.xml in your src/test/resources folder or bootstrap a process engine programmatically with a CdiStandaloneProcessEngineConfiguration.
- add a beans.xml to your META-INF
in the process I have the following serviceTask.
<bpmn2:serviceTask id="updateUser" name="updateUser"
camunda:expression="userService.updateUser()">
</bpmn2:serviceTask>
I have the UpdateUser class annotated with @Named as follows. Shouldn't the above service task call the CDI bean directly or I have to go through a java delegate class? At the moment it gives no error but the method updateUser() is not called.
@Named
@Stateless
public class UserService {
private final static Logger LOGGER = Logger.getLogger(UserService.class
.getName());
@Inject
@ProcessVariable
Object user;
public void updateUser() {
User myUser = (User) user;
LOGGER.log(Level.SEVERE, myUser.getName());
}
@PostConstruct
public void postContruct() {
LOGGER.log(Level.SEVERE, "TEST POST CONSTRUCT");
}
}
Can you please see what I am doing wrong?
thanks
<bpmn2:serviceTask id="updateUser" name="updateUser"
camunda:expression="#{userService.updateUser()}">
</bpmn2:serviceTask>
package de.gravitex.bpmtest.processref.delegate.anothersimpleprocess;
import javax.inject.Inject;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import de.gravitex.bpmtest.ejb.BpmTest;
public class AnotherDelegate implements JavaDelegate {
@Inject
@MyAdapter
BpmTest bpmTest;
public void execute(DelegateExecution arg0) throws Exception {
System.out.println("Here is another delegate, i got injected : ["+bpmTest+"].");
}
}
package de.gravitex.bpmtest.ejb;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.beans.factory.annotation.Qualifier;
import static java.lang.annotation.ElementType.*;
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
@Qualifier
public @interface MyAdapter {
}package de.gravitex.bpmtest.processref;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.ConcurrencyManagement;
import javax.ejb.ConcurrencyManagementType;
import javax.ejb.Local;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import org.camunda.bpm.application.ProcessApplication;
import org.camunda.bpm.application.ProcessApplicationInterface;
import org.camunda.bpm.application.impl.EjbProcessApplication;
@ProcessApplication("Reference Process Application")
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@Local(ProcessApplicationInterface.class)
public class ReferenceProcessApplication extends EjbProcessApplication {
@PostConstruct
public void start() {
deploy();
System.out.println(" ------------------ DEPLOYED ------------------ ");
}
@PreDestroy
public void stop() {
undeploy();
System.out.println(" ------------------ UNDEPLOYED ------------------ ");
}
}/********************EJB REMOTE INTERFACE******************************/
package de.gravitex.bpmtest.ejb;
import javax.ejb.Remote;
@Remote
public interface BpmTestRemote {
public void saySomething(String something);
}
/********************EJB LOCAL INTERFACE******************************/
package de.gravitex.bpmtest.ejb;
import javax.ejb.Local;
@Local
public interface BpmTest extends BpmTestRemote {
}
/********************IMPLEMENTATION******************************/
package de.gravitex.bpmtest.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(name = "BpmTest")
@Local(BpmTest.class)
@MyAdapter
public class BpmTestBean implements BpmTest {
public void saySomething(String something) {
System.out.println("saying something : " + something + ".");
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.gravitex.bpmtest</groupId>
<artifactId>bpm-process-ref</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>BPM Process Reference</name>
<dependencies>
<dependency>
<groupId>de.gravitex.bpmtest</groupId>
<artifactId>bpm-ejb</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine-cdi</artifactId>
<version>7.1.0-alpha3</version>
</dependency>
<dependency>
<!-- Java EE 6 Specification -->
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-web-6.0</artifactId>
<version>2.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.camunda.bpm</groupId>
<artifactId>camunda-engine</artifactId>
<version>7.1.0-alpha3</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>camunda-bpm-nexus</id>
<name>camunda-bpm-nexus</name>
<url>https://app.camunda.com/nexus/content/groups/public</url>
</repository>
</repositories>
</project>Thank you very very much...ill try it out on monday when i am back in the office.
Stefan
package de.gravitex.bpmtest.ejb;
import java.util.List;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import de.gravitex.bpmtest.ejb.entity.Customer;
@Stateless(name = "BLAdapter")
@Local(BLAdapter.class)
public class BLAdapterBean implements BLAdapter {
@PersistenceContext
EntityManager em;
@SuppressWarnings("unchecked")
public void invokeSomeBusinessLogic(String command) {
// System.out.println("bl command received : '" + command + "'.");
System.out.println("bl command received : " + command + ", my em is : "+em+".");
List<Customer> customers = em.createNamedQuery(Customer.FIND_ALL).getResultList();
System.out.println(customers.size() + " customers found.");
}
}package de.gravitex.bpmtest.processref.delegate.anothersimpleprocess;
import javax.inject.Inject;
import javax.inject.Named;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
import de.gravitex.bpmtest.ejb.BLAdapter;
@Named
public class AnotherDelegate implements JavaDelegate {
@Inject
BLAdapter blAdapter;
public void execute(DelegateExecution arg0) throws Exception {
System.out.println("Here is another delegate, i got injected : ["+blAdapter+"].");
blAdapter.invokeSomeBusinessLogic("here is some bl command from process delegate...");
}
}
bl command received : here is some bl command from process delegate..., my em is : org.jboss.as.jpa.container.TransactionScopedEntityManager@13c9ff8f.16:16:48,911 ERROR [org.jboss.as.ejb3.invocation] (http-/127.0.0.1:3456-3) JBAS014134: EJB Invocation failed on component BLAdapter for method public abstract void de.gravitex.bpmtest.ejb.BLAdapter.invokeSomeBusinessLogic(java.lang.String): javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:317) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:214) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
[...]
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387) [hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310) [hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:273) [hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
at de.gravitex.bpmtest.ejb.BLAdapterBean.invokeSomeBusinessLogic(BLAdapterBean.java:23) [bpm-ejb-1.0-SNAPSHOT.jar:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_10]
[...]
... 196 more
Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:221) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:56) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
[...]
... 228 more
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:147)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70) [hibernate-entitymanager-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214) [hibernate-core-4.2.0.CR1.jar:4.2.0.CR1]
... 248 more
Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:604)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:467)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:139)
... 251 more
Caused by: javax.resource.ResourceException: IJ000461: Could not enlist in transaction on entering meta-aware object
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:474)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:599)
... 253 more
Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0acf017a:-76a43801:5328634a:13c status: ActionStatus.ABORT_ONLY >
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:552)
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:282)
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:467)
... 254 more
16:16:49,222 SEVERE [org.camunda.bpm.engine.impl.interceptor.CommandContext] (http-/127.0.0.1:3456-3) Error while closing command context: javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:317) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:214) [jboss-as-ejb3-7.2.0.Final.jar:7.2.0.Final]
[...]
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:273)
at de.gravitex.bpmtest.ejb.BLAdapterBean.invokeSomeBusinessLogic(BLAdapterBean.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_10]
[...]
... 196 more
Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection
at 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.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:221)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157)
[...]
... 228 more
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:147)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214)
... 248 more
Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:604)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:467)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:139)
... 251 more
Caused by: javax.resource.ResourceException: IJ000461: Could not enlist in transaction on entering meta-aware object
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:474)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:599)
... 253 more
Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0acf017a:-76a43801:5328634a:13c status: ActionStatus.ABORT_ONLY >
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:552)
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:282)
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:467)
... 254 more
16:16:49,533 WARNING [ExceptionHandler] (http-/127.0.0.1:3456-3) javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:228)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:317)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:214)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
[...]
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:273)
at de.gravitex.bpmtest.ejb.BLAdapterBean.invokeSomeBusinessLogic(BLAdapterBean.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[...]
... 196 more
Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection
at 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.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:221)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:157)
[...]
... 228 more
Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:147)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214)
... 248 more
Caused by: javax.resource.ResourceException: IJ000457: Unchecked throwable in managedConnectionReconnected() cl=org.jboss.jca.core.connectionmanager.listener.TxConnectionListener@32af45f2[state=NORMAL managed connection=org.jboss.jca.adapters.jdbc.local.LocalManagedConnection@62e37497 connection handles=0 lastUse=1395155808899 trackByTx=false pool=org.jboss.jca.core.connectionmanager.pool.strategy.OnePool@42fb9839 pool internal context=SemaphoreArrayListManagedConnectionPool@3fadcd60[pool=COREDBPOOL] xaResource=LocalXAResourceImpl@2b867a49[connectionListener=32af45f2 connectionManager=9c664f2 warned=false currentXid=null productName=Microsoft SQL Server productVersion=10.50.4000 jndiName=java:/COREDB] txSync=null]
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:604)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:467)
at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:139)
... 251 more
Caused by: javax.resource.ResourceException: IJ000461: Could not enlist in transaction on entering meta-aware object
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:474)
at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.reconnectManagedConnection(AbstractConnectionManager.java:599)
... 253 more
Caused by: javax.transaction.SystemException: IJ000356: Failed to enlist: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: 0:ffff0acf017a:-76a43801:5328634a:13c status: ActionStatus.ABORT_ONLY >
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener$TransactionSynchronization.checkEnlisted(TxConnectionListener.java:552)
at org.jboss.jca.core.connectionmanager.listener.TxConnectionListener.enlist(TxConnectionListener.java:282)
at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.managedConnectionReconnected(TxConnectionManagerImpl.java:467)
... 254 more<datasources>
<xa-datasource jta="true" jndi-name="java:/COREDB" enabled="true" use-ccm="false" pool-name="COREDBPOOL">
<xa-datasource-property name="URL">jdbc:sqlserver://${database.host}</xa-datasource-property>
<xa-datasource-property name="PortNumber">1433</xa-datasource-property>
<xa-datasource-property name="DatabaseName">${database.name}</xa-datasource-property>
<xa-datasource-property name="User">${database.user}</xa-datasource-property>
<xa-datasource-property name="password">${database.password}</xa-datasource-property>
<driver>com.microsoft.sqlserver</driver>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
</validation>
</xa-datasource>
<xa-datasource jta="true" jndi-name="java:jboss/datasources/ProcessEngine" enabled="true" use-ccm="false" pool-name="ProcessEngine">
<xa-datasource-property name="URL">jdbc:sqlserver://${database.host}</xa-datasource-property>
<xa-datasource-property name="PortNumber">1433</xa-datasource-property>
<xa-datasource-property name="DatabaseName">${database.name}</xa-datasource-property>
<xa-datasource-property name="User">${database.user}</xa-datasource-property>
<xa-datasource-property name="password">${database.password}</xa-datasource-property>
<driver>com.microsoft.sqlserver</driver>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker"></valid-connection-checker>
</validation>
</xa-datasource>
</datasources>