You can run this project with LOCAL profile and try to post any ValueSet resource @ http://localhost:8598/STU3/fhirapi/ValueSet to bring up the issue. (You would need to add the headers “fhir-user-name” = XXX, “fhir-app-name” = XXX, “fhir-user-id” = XXX)
I tried many ways to resolve this but nothing seems to work, the problem looks like in the JpaTransactionManager and EntityManagerFactoryBean definitions but I have followed the same approach from the sample project which works for other bean definitions.
If anyone has already faced this issue or if you have a springboot configuration that work for 3.4.0 version please share so we can move on.
Thanks
Ravi Kuchi
13:31:33.784 INFO com.fmcna.fhir.Application Started Application in 56.493 seconds (JVM running for 58.892)
13:33:00.074 INFO o.h.f.d.h.v.DefaultProfileValidationSupport Loading structure definitions from classpath: /org/hl7/fhir/dstu3/model/profile/profiles-resources.xml
13:33:00.630 INFO o.h.f.d.h.v.DefaultProfileValidationSupport Loading structure definitions from classpath: /org/hl7/fhir/dstu3/model/profile/profiles-types.xml
13:33:00.673 INFO o.h.f.d.h.v.DefaultProfileValidationSupport Loading structure definitions from classpath: /org/hl7/fhir/dstu3/model/profile/profiles-others.xml
13:33:00.841 INFO o.h.f.d.h.v.DefaultProfileValidationSupport Loading structure definitions from classpath: /org/hl7/fhir/dstu3/model/extension/extension-definitions.xml
13:33:01.213 ERROR c.u.f.r.s.i.ExceptionHandlingInterceptor Failure during REST processing
ca.uhn.fhir.rest.server.exceptions.InternalErrorException: Failed to call access method: org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
at ca.uhn.fhir.rest.server.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:261)
at ca.uhn.fhir.rest.server.method.BaseOutcomeReturningMethodBinding.invokeServer(BaseOutcomeReturningMethodBinding.java:156)
at ca.uhn.fhir.rest.server.method.CreateMethodBinding.invokeServer(CreateMethodBinding.java:39)
at ca.uhn.fhir.rest.server.RestfulServer.handleRequest(RestfulServer.java:921)
at ca.uhn.fhir.rest.server.RestfulServer.doPost(RestfulServer.java:345)
at ca.uhn.fhir.rest.server.RestfulServer.service(RestfulServer.java:1500)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.reflect.InvocationTargetException: null
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:497)
at ca.uhn.fhir.rest.server.method.BaseMethodBinding.invokeServerMethod(BaseMethodBinding.java:256)
... 31 common frames omitted
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call; nested exception is javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:413)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:525)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:209)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
at ca.uhn.fhir.jpa.dao.dstu3.FhirResourceDaoValueSetDstu3$$EnhancerBySpringCGLIB$$4c5cadff.create(<generated>)
at ca.uhn.fhir.jpa.provider.dstu3.JpaResourceProviderDstu3.create(JpaResourceProviderDstu3.java:62)
... 36 common frames omitted
Caused by: javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:284)
at com.sun.proxy.$Proxy116.persist(Unknown Source)
at ca.uhn.fhir.jpa.dao.BaseHapiFhirDao.updateEntity(BaseHapiFhirDao.java:1980)
at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao.doCreate(BaseHapiFhirResourceDao.java:426)
at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao.create(BaseHapiFhirResourceDao.java:156)
at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao.create(BaseHapiFhirResourceDao.java:132)
at ca.uhn.fhir.jpa.dao.BaseHapiFhirResourceDao$$FastClassBySpringCGLIB$$5578fb67.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
... 40 common frames omitted
13:33:01.229 INFO c.u.f.n.BaseThymeleafNarrativeGenerator Initializing narrative generator
--
You received this message because you are subscribed to the Google Groups "HAPI FHIR" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hapi-fhir+...@googlegroups.com.
To post to this group, send email to hapi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/hapi-fhir/60c796bc-f103-4f8e-9dee-02f9a0e351f3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
@Bean(name="myValueSetDaoDstu3", autowire=Autowire.BY_NAME)
@Lazy
public
IFhirResourceDaoValueSet<org.hl7.fhir.dstu3.model.ValueSet, org.hl7.fhir.dstu3.model.Coding, org.hl7.fhir.dstu3.model.CodeableConcept> daoValueSetDstu3() {
MyFhirResourceDaoValueSetDstu3 retVal = new MyFhirResourceDaoValueSetDstu3();
retVal.setResourceType(org.hl7.fhir.dstu3.model.ValueSet.class);
retVal.setContext(fhirContextDstu3());
return retVal;
}
public static class MyFhirResourceDaoValueSetDstu3 extends FhirResourceDaoValueSetDstu3
{
@Autowired
private PlatformTransactionManager myTxManager;
@Override
public DaoMethodOutcome create(ValueSet theResource, RequestDetails theRequestDetails) {
return new TransactionTemplate(myTxManager).execute(t->{
return super.create(theResource, theRequestDetails);
});
}
@Override
public DaoMethodOutcome create(ValueSet theResource, String theIfNoneExist, RequestDetails theRequestDetails) {
return new TransactionTemplate(myTxManager).execute(t-> {
return super.create(theResource, theIfNoneExist, theRequestDetails);
});