Error when opening screens

Hi,
I changed the db connection info in properties file and have successfully build and deploy on tomcat the release v5 but I’m getting the error message below when I try to open whatever screen

thank you in advance for your help as usual.

java.lang.NullPointerException
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:210)
at com.google.common.cache.LocalCache.get(LocalCache.java:3936)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
at com.axelor.db.mapper.Mapper.of(Mapper.java:174)
at com.axelor.meta.MetaStore.findFields(MetaStore.java:120)
at com.axelor.web.service.ViewService.viewFields(ViewService.java:238)
at com.axelor.rpc.RequestFilter.invoke(RequestFilter.java:59)
at com.axelor.rpc.ResponseInterceptor.invoke(ResponseInterceptor.java:63)
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:137)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
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:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:89)
at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:44)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at com.axelor.auth.AuthFilter.doFilterInternal(AuthFilter.java:81)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.guice.web.SimpleFilterChain.doFilter(SimpleFilterChain.java:41)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.axelor.app.internal.AppFilter.doFilter(AppFilter.java:85)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:91)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.axelor.web.servlet.CorsFilter.doFilter(CorsFilter.java:136)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

did you set application mode to ‘prod’ instead of ‘dev’ ? I had problem doing so, maybe it’s the same case ?

Yes I did. I tried both modes DEV and PRD but
I’m still getting the same error. thank you for your help

Are the database and tables created in Postgresql ?

Yes. I’m using Postgres DB

I used the following release --> postgresql-9.6.6-3-windows-x64.exe

hereafter an extract of my aplication.properties

db.default.dialect = org.hibernate.dialect.PostgreSQLDialect
db.default.driver = org.postgresql.Driver
db.default.ddl =
db.default.url = jdbc:postgresql://localhost:5432/erpdb_dev
db.default.user = postgres
db.default.password = root

Yes, so what I meant was : is the database populated with tables, ie did the DDL statements run, or did the application fail before that ?

Yes it is . All the tables are correctly populated . What I noticed is if I plug my database to the application installed via your windows package axelor-business-suite-4.1.0-FR-windows-x64.exe . It works well. But if I start from scratch by building the application from the repo abs-weapp and generating the war via gradlew war command line . The war generated ie: axelor-erp-5.0.0-SNAPSHOT.war and plugged to the same database has some services which either are not deployed or not started properly when it is deployed on tomcat 7.
Thank you alci for helping me to solve this issue.

I found this error in the logs. I don’t know if both errors are tied?.

com.axelor.web.AppContextListener
com.google.inject.CreationException: Unable to create injector, see the following errors:

  1. Error injecting constructor, java.lang.RuntimeException: Base app is not initialized
    at com.axelor.apps.account.service.app.AppAccountServiceImpl.(AppAccountServiceImpl.java:38)
    at com.axelor.apps.account.service.app.AppAccountServiceImpl.class(AppAccountServiceImpl.java:38)
    while locating com.axelor.apps.account.service.app.AppAccountServiceImpl
    while locating com.axelor.apps.account.service.app.AppAccountService
    Caused by: java.lang.RuntimeException: Base app is not initialized
    at com.axelor.apps.base.service.app.AppBaseServiceImpl.(AppBaseServiceImpl.java:51)
    at com.axelor.apps.account.service.app.AppAccountServiceImpl.(AppAccountServiceImpl.java:38)
    at com.axelor.apps.account.service.app.AppAccountServiceImpl$$EnhancerByGuice$$4ce2f7f9.()
    at com.axelor.apps.account.service.app.AppAccountServiceImpl$$EnhancerByGuice$$4ce2f7f9$$FastClassByGuice$$a18ec13c.newInstance()
    at com.google.inject.internal.ProxyFactory$ProxyConstructor.newInstance(ProxyFactory.java:265)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
    at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
    at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
    at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:133)
    at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:92)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
    at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at com.axelor.web.AppContextListener.getInjector(AppContextListener.java:108)
    at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:47)
    at com.axelor.web.AppContextListener.contextInitialized(AppContextListener.java:53)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5110)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5633)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1009)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:985)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.RuntimeException: JPA context not initialized.
    at com.axelor.db.JPA.get(JPA.java:81)
    at com.axelor.db.JPA.em(JPA.java:91)
    at com.axelor.db.Query.em(Query.java:100)
    at com.axelor.db.Query.fetchQuery(Query.java:343)
    at com.axelor.db.Query.fetch(Query.java:339)
    at com.axelor.db.Query.fetch(Query.java:326)
    at com.axelor.db.Query.fetchOne(Query.java:365)
    at com.axelor.apps.base.service.app.AppBaseServiceImpl.(AppBaseServiceImpl.java:50)
    … 42 more

do you have any clue on how I can fix this. Thx

I’m sorry, not really. JPA rt exception context seems to indicate a problem with the persitence layer, so probably with the db config, but I’m have no more clue.
Maybe double check the db attributes in application.config, but if the tables are created, it will probably be ok… maybe try again with a freshly created database in postgresql…

Did you set the application mode to prod instead of dev? (I remember having an issue when setting it, can’t remember if it was the same)

Hi beuss.

Yes . I did.

Switch back to dev, there’s an issue when setting it to prod (hadn’t time to investigate further)

Ok Thank you for your support.

Does that mean it worked ?

No . unfortunately I still have the same problem.

Looks like your base_app_base table is empty.
Here is what I’d try to do:

  • Stop tomcat
  • Drop & recreate database
  • Start tomcat (ensuring application mode is set to dev)

This should fix the issue. Otherwise, you should have an usable stack trace in the logs of the first startup after db drop

Regards

I have 1 record ont this table . Is that correct?. see below.

false true 1 https://sdw-wsrest.ecb.europa.eu/service/data/EXR/D.%s+%s.EUR.SP00.A?startPeriod=%s&endPeriod=%s 0 en true false true true false (null) false false false false 1 2 1 (null) true days (null) 1 (null) (null) (null) (null)