0 Replies Latest reply on Apr 30, 2015 5:29 AM by andreasolesch

    jBPM 6.1 on WebSphere

    andreasolesch

      Hello,

       

      we are experiencing the following issue (stacktrace at the end of the post) trying to deploy a jBPM based application on WebSphere 8. The application is working on TomEE.

       

      Any hints or suggestions?

       

      Thanks in advance.

       

      Problem:

      This architecture works fine when deployed to Apache TomEE 1.7.1. Test-cases run with Arquillian and the tomee-embedded profile also show no problems.

      When packaged as an EAR-archive and deployed on WebSphere 8.5.5.0 under Java 7, no access to the jBPM runtime is possible. The calls to our persisted Entities work fine and deliver the expected data.

      During deployment, no exception have been observed, both persistence units seem to be correctly initialized. The first call to the jBPM environment results in the stacktrace at the end of the document.

      For us, it is not clear, why the CommandScopedEntityManager cannot be placed in the TransactionRegistry. On our test systems, this call works fine. Furthermore, we tried to execute the same code in a @Singleton, @Startup bean in the @PostConstruct method with no problem.

      Secondly, we are puzzled with the message, that no active JTA could be found. All business methods in the Stateless session are annotated with @TransactionAttribute(TransactionAttributeType.REQUIRED), so we would expect the code to be executed in an transaction environment.

      Could you please advise what we do wrong here. Are there special precautions to be taken into consideration when running jBPM on IBM WebSphere (as the same code runs on Apache TomEE)?

      We ran into problems that IBM WebSphere did not let jBPM access the user transaction in a Container Managed Bean, therefore we registered the suggested org.jbpm.persistence.jta.ContainerManagedTransactionManager. In order to get this transaction manager running, we created our own RuntimeEnvironment, as described above.

       

      Used Versions:

      • IBM WebSphere 8.5.5.0 / Apache TomEE 1.7.1

      • jBPM 6.1.0.Final

      • Java 7

      • JEE6

      • CDI

      • Hibernate 4.1.4

       

      Architecture:

      We create an RuntimeEnvironment with the following configuration:

          @Produces

          @PerRequest

          public RuntimeEnvironment produceEnvironment(EntityManagerFactory emf) {

              FSIRuntimeEnvironment runtimeEnvironment = new FSIRuntimeEnvironment();

              runtimeEnvironment.setEmf(emf);

              runtimeEnvironment.setRegisterableItemsFactory(InjectableRegisterableItemsFactory.getFactory(this.beanManager, (AbstractAuditLogger) null));

              runtimeEnvironment.setUserGroupCallback(new LDAPUserGroupCallbackImpl(true));

              for (String resource : this.processResources) {

                  runtimeEnvironment.addAsset(ResourceFactory.newClassPathResource(resource), ResourceType.BPMN2);

              }

       

              Environment env = runtimeEnvironment.getEnvironmentTemplate();

              // set entity manager to work with commands

              env.set(EnvironmentName.CMD_SCOPED_ENTITY_MANAGER, emf.createEntityManager());

       

              // enable container managed persistence

              env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);

              env.set(EnvironmentName.TRANSACTION_MANAGER, new ContainerManagedTransactionManager());

              env.set(EnvironmentName.PERSISTENCE_CONTEXT_MANAGER, new JpaProcessPersistenceContextManager(env));

              env.set(EnvironmentName.TASK_PERSISTENCE_CONTEXT_MANAGER, new JPATaskPersistenceContextManager(env));

              env.set("IS_JTA_TRANSACTION", false);

       

              env.set("org.kie.internal.runtime.manager.TaskServiceFactory", new LocalTaskServiceFactory(runtimeEnvironment));

       

              // we don't use a builder, so initialize the runtime environment manually

              runtimeEnvironment.init();

       

              return runtimeEnvironment;

          }

       

      We had to implement an own RuntimeEnvironment class, due to the fact, that the SimpleRuntimeEnvironment does not copy the Environment value for EnvironmentName.TASK_PERSISTENCE_CONTEXT_MANAGER. Therefore, FSIRuntimeEnvironment has been created:

      public class FSIRuntimeEnvironment extends DefaultRuntimeEnvironment {

       

          @Override

          protected Environment copyEnvironment() {

              Environment copy = super.copyEnvironment();

              addIfPresent(EnvironmentName.TASK_PERSISTENCE_CONTEXT_MANAGER, copy);

              return copy;

          }

      }

       

      The so produced RuntimeEnvironment is injected into an application scoped RuntimeManagerProducer:

      @ApplicationScoped

      public class FSIRuntimeManagerProducer {

       

          @Inject

          @PerRequest

          private RuntimeManager runtimeManager;

       

          @Produces

          @FSI

          public RuntimeManager produceRuntimeManager() {

              return this.runtimeManager;

          }

      }

       

      To use the jBPM runtime in our JEE Stateless session beans, an abstract service class has been defined here. The runtime manager is injected via CDI.

      public class AbstractJBPMService extends AbstractService {

       

          @Inject

          @FSI

          private RuntimeManager runtimeManager;

       

          /**

           * Answers the runtime engine registered by the RuntimeEngineInterceptor.

           *

           * @return the runtime engine

           */

          protected RuntimeEngine getRuntimeEngine() {

              return this.runtimeManager.getRuntimeEngine(EmptyContext.get());

          }

      }

       

      A concrete implementation of this abstract class, uses the getRuntimeEngine() method to access the KieSession and other services, as provided by jBPM.

      @Stateless

      public class ProcessService extends AbstractJBPMService implements IProcessService {

       

          @Override

          @TransactionAttribute(TransactionAttributeType.REQUIRED)

          public Long startProcess(String processId, Map<String, Object> formInput) {

              KieSession ksession = getKieSession();

              // Get the process instance variables declared in the process definition

              List<String> processInstanceVariables = ksession

                      .execute(new GetDefinedProcessInstanceVariablesCommand(processId));

              // Create the necessary input parameters for the process

              Map<String, Object> parameters = createProcessInputParameters(processInstanceVariables, formInput);

              ProcessInstance processInstance = ksession.startProcess(processId, parameters);

              return processInstance.getId();

          }

       

          private KieSession getKieSession() {

              RuntimeEngine runtimeEngine = getRuntimeEngine();

              return runtimeEngine.getKieSession();

          }

      }

       

      The service shown above is, for example, injected into another Stateless session bean to handle the different calls to the jBPM process engine.

      @Stateless

      public class OperationService implements IOperationService {

       

          /** Service handling jBPM processes and instances. */

          @EJB

          private IProcessService processService;

       

          @Override

          @TransactionAttribute(TransactionAttributeType.REQUIRED)

          public Map<String, Object> save(Long processInstanceId, String formKey,

                                          Map<String, Object> formInput) throws DirectoryException, InvalidModificationException {

              Map<String, Object> updatedData = Collections.unmodifiableMap(formInput);

       

      // create process instance

              processInstanceId = this.processService.startProcess(formKey, Collections.unmodifiableMap(updatedData));

       

              return updatedData;

          }

      }

      This service then is used by a REST Webservice implantation, which reacts to user interaction. The REST service is implemented as a Stateless session bean (as described by the IBM WebSphere examples) and annotated with the appropriate definitions.

       

      For accessing the persisted Entities, we have created two persistence-units in our DAO project. Here is the relevant part for the jBPM persistence unit:

      <?xml version="1.0" encoding="UTF-8"?>

      <persistence version="2.0"

                   xmlns="http://java.sun.com/xml/ns/persistence"

                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

       

          <persistence-unit name="org.jbpm.domain" transaction-type="JTA">

              <provider>org.hibernate.ejb.HibernatePersistence</provider>

              <jta-data-source>java:comp/env/jdbc/fsi</jta-data-source>

       

              <mapping-file>META-INF/jbpm_queries.xml</mapping-file>

              <mapping-file>META-INF/Taskorm.xml</mapping-file>

              <mapping-file>META-INF/JBPMorm.xml</mapping-file>

              <mapping-file>META-INF/Executor-orm.xml</mapping-file>

              <mapping-file>META-INF/Servicesorm.xml</mapping-file>

              <mapping-file>META-INF/TaskAuditorm.xml</mapping-file>

       

              <!-- task service -->

              <class>org.jbpm.services.task.impl.model.AttachmentImpl</class>

              <class>org.jbpm.services.task.impl.model.ContentImpl</class>

              <class>org.jbpm.services.task.impl.model.BooleanExpressionImpl</class>

              <class>org.jbpm.services.task.impl.model.CommentImpl</class>

              <class>org.jbpm.services.task.impl.model.DeadlineImpl</class>

              <class>org.jbpm.services.task.impl.model.DelegationImpl</class>

              <class>org.jbpm.services.task.impl.model.EscalationImpl</class>

              <class>org.jbpm.services.task.impl.model.GroupImpl</class>

              <class>org.jbpm.services.task.impl.model.I18NTextImpl</class>

              <class>org.jbpm.services.task.impl.model.NotificationImpl</class>

              <class>org.jbpm.services.task.impl.model.EmailNotificationImpl</class>

              <class>org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl</class>

              <class>org.jbpm.services.task.impl.model.PeopleAssignmentsImpl</class>

              <class>org.jbpm.services.task.impl.model.ReassignmentImpl</class>

              <class>org.jbpm.services.task.impl.model.TaskImpl</class>

              <class>org.jbpm.services.task.impl.model.TaskDefImpl</class>

              <class>org.jbpm.services.task.impl.model.TaskDataImpl</class>

              <class>org.jbpm.services.task.impl.model.UserImpl</class>

              <class>org.jbpm.executor.entities.ErrorInfo</class>

              <class>org.jbpm.executor.entities.RequestInfo</class>

              <!-- Event Classes -->

              <class>org.jbpm.services.task.audit.impl.model.TaskEventImpl</class>

              <!-- Task Audit Classes -->

              <class>org.jbpm.services.task.audit.impl.model.AuditTaskImpl</class>

              <!--BAM for task service -->

              <class>org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl</class>

              <!-- engine -->

              <class>org.drools.persistence.info.SessionInfo</class>

              <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>

              <class>org.drools.persistence.info.WorkItemInfo</class>

              <class>org.jbpm.persistence.correlation.CorrelationKeyInfo</class>

              <class>org.jbpm.persistence.correlation.CorrelationPropertyInfo</class>

              <!-- manager -->

              <class>org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo</class>

              <!-- bam -->

              <class>org.jbpm.process.audit.ProcessInstanceLog</class>

              <class>org.jbpm.process.audit.NodeInstanceLog</class>

              <class>org.jbpm.process.audit.VariableInstanceLog</class>

       

              <shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>

              <properties>

                  <property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/>

                  <property name="hibernate.max_fetch_depth" value="3"/>

                  <property name="hibernate.hbm2ddl.auto" value="none"/>

                  <property name="hibernate.show_sql" value="false"/>

                  <!-- BZ 841786: AS7/EAP 6/Hib 4 uses new (sequence) generators which seem to cause problems -->

                  <property name="hibernate.id.new_generator_mappings" value="false"/>

                  <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />

                  <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.CMTTransactionFactory"/>

                  <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WebSphereExtendedJtaLookup" />

                  <property name="hibernate.current_session_context_class" value="jta" />

                  <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.WebSphereExtendedJtaPlatform" />

              </properties>

          </persistence-unit>

       

      </persistence>

       

      Stacktrace:

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG org.hibernate.internal.SessionImpl - Opened session at timestamp: 14303327023

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.ejb.AbstractEntityManagerImpl - Looking for a JTA transaction to join

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.ejb.AbstractEntityManagerImpl - Unable to join JTA transaction

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:317 CEST] 000002ff SystemOut     O 20:38:22.317 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:332 CEST] 000002ff SystemOut     O 20:38:22.332 [WebContainer : 3] DEBUG o.j.r.m.i.d.DeploymentDescriptorManager - No descriptor found returning default instance

      [29.04.15 20:38:22:379 CEST] 000002ff SystemOut     O 20:38:22.379 [WebContainer : 3] WARN  o.d.p.TransactionSynchronizationRegistryHelper - Unable to put resource org.kie.api.persistence.jpa.CmdScopedEntityManager value org.hibernate.ejb.EntityManagerImpl@bb621b32 due to null

      [29.04.15 20:38:22:379 CEST] 000002ff SystemOut     O 20:38:22.379 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:379 CEST] 000002ff SystemOut     O 20:38:22.379 [WebContainer : 3] DEBUG o.h.e.t.i.TransactionCoordinatorImpl - Skipping JTA sync registration due to auto join checking

      [29.04.15 20:38:22:379 CEST] 000002ff SystemOut     O 20:38:22.379 [WebContainer : 3] DEBUG o.h.ejb.AbstractEntityManagerImpl - Looking for a JTA transaction to join

      [29.04.15 20:38:22:379 CEST] 000002ff SystemOut     O 20:38:22.379 [WebContainer : 3] WARN  o.h.ejb.AbstractEntityManagerImpl - HHH000326: Cannot join transaction: do not override hibernate.transaction.factory_class

      [29.04.15 20:38:22:410 CEST] 000002ff SystemOut     O 20:38:22.410 [WebContainer : 3] WARN  o.j.s.t.p.TaskTransactionInterceptor - Could not commit session

      javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call

      at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1223) ~[hibernate-entitymanager-4.1.4.Final.jar:4.1.4.Final]

      at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1173) ~[hibernate-entitymanager-4.1.4.Final.jar:4.1.4.Final]

      at org.drools.persistence.jpa.AbstractPersistenceContextManager.getCommandScopedEntityManager(AbstractPersistenceContextManager.java:110) ~[drools-persistence-jpa-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.services.task.persistence.JPATaskPersistenceContextManager.beginCommandScopedEntityManager(JPATaskPersistenceContextManager.java:26) ~[jbpm-human-task-jpa-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:51) ~[jbpm-human-task-jpa-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.services.task.commands.TaskCommandExecutorImpl.execute(TaskCommandExecutorImpl.java:40) [jbpm-human-task-core-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.services.task.impl.TaskDeadlinesServiceImpl.initialize(TaskDeadlinesServiceImpl.java:367) [jbpm-human-task-core-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.services.task.HumanTaskConfigurator.getTaskService(HumanTaskConfigurator.java:153) [jbpm-human-task-core-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.runtime.manager.impl.factory.LocalTaskServiceFactory.newTaskService(LocalTaskServiceFactory.java:65) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.runtime.manager.impl.PerRequestRuntimeManager.init(PerRequestRuntimeManager.java:142) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl.newPerRequestRuntimeManager(RuntimeManagerFactoryImpl.java:88) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl.newPerRequestRuntimeManager(RuntimeManagerFactoryImpl.java:79) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) ~[na:1.7.0]

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[na:1.7.0]

      at java.lang.reflect.Method.invoke(Method.java:613) ~[na:2.6 (04-22-2013)]

      at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:297) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:98) [org.apache.webbeans.jar:na]

      at org.jbpm.runtime.manager.impl.RuntimeManagerFactoryImpl_$$_javassist_349.newPerRequestRuntimeManager(RuntimeManagerFactoryImpl_$$_javassist_349.java) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at org.jbpm.runtime.manager.impl.cdi.RuntimeManagerProducer.newPerRequestRuntimeManager(RuntimeManagerProducer.java:76) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) ~[na:1.7.0]

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[na:1.7.0]

      at java.lang.reflect.Method.invoke(Method.java:613) ~[na:2.6 (04-22-2013)]

      at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:297) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:98) [org.apache.webbeans.jar:na]

      at org.jbpm.runtime.manager.impl.cdi.RuntimeManagerProducer_$$_javassist_348.newPerRequestRuntimeManager(RuntimeManagerProducer_$$_javassist_348.java) [jbpm-runtime-manager-6.1.0.Final.jar:6.1.0.Final]

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) ~[na:1.7.0]

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[na:1.7.0]

      at java.lang.reflect.Method.invoke(Method.java:613) ~[na:2.6 (04-22-2013)]

      at org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:205) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:204) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:166) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:216) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:82) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:142) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:174) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:191) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:892) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:770) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:137) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.inject.InjectableField.doInjection(InjectableField.java:60) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractInjectionTargetBean.injectField(AbstractInjectionTargetBean.java:366) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractInjectionTargetBean.injectFields(AbstractInjectionTargetBean.java:324) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.portable.creation.InjectionTargetProducer.inject(InjectionTargetProducer.java:96) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.InjectionTargetWrapper.inject(InjectionTargetWrapper.java:80) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:175) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.creational.BeanInstanceBag.create(BeanInstanceBag.java:80) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.AbstractContext.getInstance(AbstractContext.java:226) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:191) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.getContextualInstance(NormalScopedBeanInterceptorHandler.java:135) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:95) [org.apache.webbeans.jar:na]

      at com.si.fsi.jbpm.FSIRuntimeManagerProducer_$$_javassist_347.produceRuntimeManager(FSIRuntimeManagerProducer_$$_javassist_347.java) [fsi-business-0.0.2-SNAPSHOT.jar:na]

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) ~[na:1.7.0]

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[na:1.7.0]

      at java.lang.reflect.Method.invoke(Method.java:613) ~[na:2.6 (04-22-2013)]

      at org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:205) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:204) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:166) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractOwbBean.createNewInstance(AbstractOwbBean.java:216) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.portable.creation.AbstractProducer.produce(AbstractProducer.java:82) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.InjectionTargetWrapper.produce(InjectionTargetWrapper.java:142) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:174) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:69) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:191) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:892) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.container.BeanManagerImpl.getInjectableReference(BeanManagerImpl.java:770) [org.apache.webbeans.jar:na]

      at com.ibm.ws.webbeans.services.IBMBeanManagerImpl.getInjectableReference(IBMBeanManagerImpl.java:186) [org.apache.webbeans.jar:na]

      at com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getInjectableReference(InjectInjectionObjectFactory.java:315) [org.apache.webbeans.jar:na]

      at com.ibm.ws.webbeans.services.InjectInjectionObjectFactory.getObjectInstance(InjectInjectionObjectFactory.java:153) [org.apache.webbeans.jar:na]

      at com.ibm.ws.webbeans.services.InjectInjectionBinding.getInjectionObjectInstance(InjectInjectionBinding.java:100) [org.apache.webbeans.jar:na]

      at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1093) [com.ibm.ws.runtime.jar:na]

      at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectableObject(InjectionBinding.java:1032) [com.ibm.ws.runtime.jar:na]

      at com.ibm.wsspi.injectionengine.InjectionTarget.inject(InjectionTarget.java:125) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ws.injectionengine.AbstractInjectionEngine.inject(AbstractInjectionEngine.java:1084) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.StatelessBeanO.initialize(StatelessBeanO.java:289) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:130) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.EJSHome.createNewBeanO(EJSHome.java:869) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1242) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1360) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate(UncachedActivationStrategy.java:89) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.activator.Activator.preInvokeActivateBean(Activator.java:324) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:3728) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.EJSContainer.EjbPreInvoke(EJSContainer.java:3042) [com.ibm.ws.runtime.jar:na]

      at com.si.fsi.service.process.EJSLocal0SLProcessService_f8370045.startProcess(EJSLocal0SLProcessService_f8370045.java) [na:na]

      at com.si.fsi.service.operation.OperationService.save(OperationService.java:355) [fsi-business-0.0.2-SNAPSHOT.jar:na]

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0]

      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) ~[na:1.7.0]

      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) ~[na:1.7.0]

      at java.lang.reflect.Method.invoke(Method.java:613) ~[na:2.6 (04-22-2013)]

      at com.ibm.ejs.container.EJSContainer.invokeProceed(EJSContainer.java:5730) [com.ibm.ws.runtime.jar:na]

      at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:568) [com.ibm.ws.runtime.jar:na]

      at org.apache.webbeans.ejb.common.interceptor.OpenWebBeansEjbInterceptor.callInterceptorsAndDecorators(OpenWebBeansEjbInterceptor.java:526) [org.apache.webbeans.jar:na]

      at org.apache.webbeans.ejb.common.interceptor