OHDSI Home | Forums | Wiki | Github

Error When Trying to Create Container for Broadsea Webtools

Was wondering if anyone received an error like the following below and what was done to troubleshoot when trying to create the Broadsea docker containers. Did not see a similar error on the web.

C:\Docker_Broadsea_Files>docker-compose up -d
Pulling broadsea-methods-library (ohdsi/broadsea-methodslibrary:)…
latest: Pulling from ohdsi/broadsea-methodslibrary
05d1a5232b46: Pull complete
120fc9ef5e70: Pull complete
5e326ec67199: Pull complete
ccacb18b3880: Pull complete
a8de48df876a: Pull complete
bd050c593829: Pull complete
e1de13211427: Pull complete
1d708864da44: Pull complete
89dbc7fe3508: Pull complete
a35fcc8b1afa: Pull complete
3d53adc3abad: Pull complete
f5f3c1131669: Pull complete
c11896a16299: Pull complete
df9a766d5683: Pull complete
7dbfe00c170a: Pull complete
Pulling broadsea-webtools (ohdsi/broadsea-webtools:)…
latest: Pulling from ohdsi/broadsea-webtools
bc9ab73e5b14: Pull complete
193a6306c92a: Pull complete
e5c3f8c317dc: Pull complete
d21441932c53: Pull complete
fa76b0d25092: Pull complete
346fd8610875: Pull complete
3ca5d6af9022: Pull complete
c06cfa2cea32: Pull complete
205950a5a114: Pull complete
6332a55c669e: Pull complete
cefeffe0f2a1: Pull complete
5403dc585b04: Pull complete
04a6b917efbd: Pull complete
9d6898dc1e5e: Pull complete
b14064d28316: Pull complete
d8275beab925: Pull complete
f5cc8f1d59ad: Pull complete
d37069a41747: Pull complete
29ab170ce61d: Pull complete
e3a6c6e0ee12: Pull complete
639d1caf4462: Pull complete
Creating docker_broadsea_files_broadsea-methods-library_1 …
Creating docker_broadsea_files_broadsea-webtools_1 … error
Creating docker_broadsea_files_broadsea-methods-library_1 … done
ERROR: for docker_broadsea_files_broadsea-webtools_1 Cannot create container for service broadsea-webtools: b’Drive has not been shared’
ERROR: for broadsea-webtools Cannot create container for service broadsea-webtools: b’Drive has not been shared’
ERROR: Encountered errors while bringing up the project.

@idontknow It looks like Docker can’t map a docker volume to a host machine drive/folder.

The Broadsea Docker compose file references the current directory (where the compose file is located) in the volume mapping so that drive/folder must be visible to Docker.

Are you running Docker on a Windows machine? There’s an option you can use to share the drive (with the Docker virtual machine) in the Windows Docker client.

This link may help:
https://blogs.msdn.microsoft.com/wael-kdouh/2017/06/26/enabling-drive-sharing-with-docker-for-windows/

Thank you @lee_evans. That seems to resolve the error. Since I am new to Docker and these tools, I may have a few more questions.

So I was able to successfully start the containers.

However, I am not able to connect to the web OHDSI Rstudio web interface at: http://your-docker-host-ip-address:8787
The web page returns

ERR_EMPTY_RESPONSE

For atlas, it says Not Found too.

I do not think the containers are picking up the host ip address either. While we are behind a corporate proxy, I have configured the proxy url in the docker settings.

However, when I run the command docker-compose ps to get the status of the containers, it says they are up, but the ip address is 0 as you can see here:

Also, is it throwing a

file not specified error

since the C:\Docker_Broadsea_Files folder is not the docker home directory? Should these files be placed a directory in the Docker home folder or is something else going on?

@idontknow take a look at the troubleshooting section here:

There may be some useful error messages in the log files.

@lee_evans

Thank you. I outputed stderr and stdout to files and copied from the container to my hold machine because the cmd prompt did not display the last 1000 characters. IP server address for database server has been changed to 0.0.0.0 for security purposes. Troubleshooting files are attached. I was pretty sure I dropped all tables before running again so they would not clog the logs below, but one did not get dropped even though it appeared it had been. Attached is stderr and stdout.stderr.docx (16.1 KB)
stdout.docx (19.0 KB)

Thanks again for your help.

@idontknow OK so the stderr.docx shows the cause of the error is that the flyway database migration is failing because a sequence object it’s trying to create already exists.

I’m not sure of the best way to fix that error but other folks in the forum can probably help.

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘shiroFilter’ defined in class path resource [org/ohdsi/webapi/ShiroConfiguration.class]: Unsatisfied dependency expressed through method ‘shiroFilter’ parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘flyway’ defined in class path resource [org/ohdsi/webapi/FlywayConfig.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateSqlException:
Migration V1.0.0.9__shiro_security.sql failed

SQL State : S0001
Error Code : 2714
Message : There is already an object named ‘edw_achilles.SEC_USER_SEQUENCE’ in the database.
Location : db/migration/sqlserver/V1.0.0.9__shiro_security.sql (/usr/local/tomcat/webapps/WebAPI/WEB-INF/classes/db/migration/sqlserver/V1.0.0.9__shiro_security.sql)
Line : 1
Statement : CREATE SEQUENCE edw_achilles.SEC_USER_SEQUENCE START WITH 1000 INCREMENT BY 1 MAXVALUE 9223372036854775807 NO CYCLE;
CREATE TABLE edw_achilles.SEC_USER(
ID INTEGER NOT NULL DEFAULT NEXT VALUE FOR edw_achilles.SEC_USER_SEQUENCE,
LOGIN VARCHAR(50),
PASSWORD VARCHAR(255),
SALT VARCHAR(255),
NAME VARCHAR(100)
);

Yeah @lee_evans thank you. So it seems like I keep having these types of errors because there seems to be a large amount of objects like sequences, tables, constraints, and tables that are automatically created when the container is started up.

**What would really help me is to have a full list of objects that are supposed to be created from the flyway database and the order in which they are created so I can make sure I am dropping everything as if starting from scratch until I do not get anymore errors and will not need to drop anything anymore. Are there ddl scripts out there that indicate the order in which everything is created? I ask because as expected there are a lot of dependencies with all these objects

It’s simple: start with an empty schema, and let webAPI’s flyway migrations do the work. The WebAPI schema should not be shared with any other function: ie: only WebAPI tables should be in the WebAPI schema. I can’t give you the order of each table creation from the scripts because the WebAPI schema has evovled over the past 5 years, and so each iteration of the schema is captured in a migration which is automatically applied on WebAPI startup. If you get any errors saying thatan object already exists, there’s either a problem with the migration scripts, or you created some of those objects by hand (which you must not do).

Okay @Chris_Knoll I think the confusion comes from where the instructions say to run the sql file manually. Since I did that, tables already existed. I started with an empty schema and now and there are no object exists errors anymore and the stderr log is much shorter.

Now, in the current list of errors I am getting, the common errors seems to be
org.hibernate.exception.SQLGrammarException: could not extract ResultSet. Is this a permissions error? The webapi user has write permissions on the empty schema created. Here is the full log. Any ideas? Maybe @lee_evans can help too. This log file was created using the stderr commands under troubleshooting and then copying the log file from the container to the host machine.

cp: cannot stat ‘/tmp/drivers/*.jar’: No such file or directory
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/7.0.91
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Sep 13 2018 19:52:12 UTC
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 7.0.91.0
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 4.9.125-linuxkit
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_181-8u181-b13-2~deb9u1-b13
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: /usr/local/tomcat
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: /usr/local/tomcat
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dignore.endorsed.dirs=
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/usr/local/tomcat
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/usr/local/tomcat
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
Feb 01, 2019 7:49:22 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded APR based Apache Tomcat Native library 1.2.17 using APR version 1.5.2.
Feb 01, 2019 7:49:22 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Feb 01, 2019 7:49:22 PM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.1.0f 25 May 2017)
Feb 01, 2019 7:49:22 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-apr-8080”]
Feb 01, 2019 7:49:22 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-apr-8009”]
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 460 ms
Feb 01, 2019 7:49:22 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 01, 2019 7:49:22 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.91
Feb 01, 2019 7:49:22 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/local/tomcat/webapps/WebAPI.war
Feb 01, 2019 7:49:23 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
INFO: validateJarFile(/usr/local/tomcat/webapps/WebAPI/WEB-INF/lib/tomcat-embed-el-8.5.11.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
Feb 01, 2019 7:49:27 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Feb 01, 2019 7:49:52 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebAPI]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1018)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
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:2021)
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: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘ccController’ defined in file [/usr/local/tomcat/webapps/WebAPI/WEB-INF/classes/org/ohdsi/webapi/cohortcharacterization/CcController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘ccServiceImpl’ defined in file [/usr/local/tomcat/webapps/WebAPI/WEB-INF/classes/org/ohdsi/webapi/cohortcharacterization/CcServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 9; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘cohortGenerationService’: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5669)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
… 10 more
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘ccServiceImpl’ defined in file [/usr/local/tomcat/webapps/WebAPI/WEB-INF/classes/org/ohdsi/webapi/cohortcharacterization/CcServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 9; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘cohortGenerationService’: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
… 32 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘cohortGenerationService’: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:137)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
… 46 more
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1692)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:492)
at org.hibernate.jpa.criteria.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:50)
at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:121)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:85)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:116)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:106)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:483)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:461)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at com.cosium.spring.data.jpa.entity.graph.repository.support.RepositoryMethodEntityGraphExtractor$JpaEntityGraphMethodInterceptor.doInvoke(RepositoryMethodEntityGraphExtractor.java:157)
at com.cosium.spring.data.jpa.entity.graph.repository.support.RepositoryMethodEntityGraphExtractor$JpaEntityGraphMethodInterceptor.invoke(RepositoryMethodEntityGraphExtractor.java:109)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy172.findByStatusIn(Unknown Source)
at org.ohdsi.webapi.service.CohortGenerationService.lambda$invalidateCohortGenerations$31(CohortGenerationService.java:173)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at org.ohdsi.webapi.service.CohortGenerationService.invalidateCohortGenerations(CohortGenerationService.java:172)
at org.ohdsi.webapi.service.CohortGenerationService.init(CohortGenerationService.java:167)
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.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:366)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:311)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:134)
… 59 more
Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:106)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:79)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2117)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1900)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1876)
at org.hibernate.loader.Loader.doQuery(Loader.java:919)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
at org.hibernate.loader.Loader.doList(Loader.java:2617)
at org.hibernate.loader.Loader.doList(Loader.java:2600)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2429)
at org.hibernate.loader.Loader.list(Loader.java:2424)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)
at org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:483)
… 97 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name ‘ohdsi.cohort_generation_info’.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1535)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:467)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:409)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:219)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:199)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:331)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)
… 113 more

Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive /usr/local/tomcat/webapps/WebAPI.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebAPI]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1022)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:994)
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:2021)
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)

Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /usr/local/tomcat/webapps/WebAPI.war has finished in 29,707 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/docs
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 52 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/host-manager
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/host-manager has finished in 51 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/manager
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/manager has finished in 32 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/examples
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/examples has finished in 180 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/ROOT
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 35 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/penelope
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/penelope has finished in 27 ms
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/atlas
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/atlas has finished in 25 ms
Feb 01, 2019 7:49:52 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-apr-8080”]
Feb 01, 2019 7:49:52 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-apr-8009”]
Feb 01, 2019 7:49:52 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 30208 ms

This table wasn’t created, it should have been created when the WebAPI first started up, but I’m guessing that after you created your empty schema, you did not adjust your settings.xml file to reference the new schema…did you change the settings.xml and rebuild the .war?

In the setup guide: http://www.ohdsi.org/web/wiki/doku.php?id=documentation:software:webapi:webapi_installation_guide

It describes setting the settings.xml file with this value:
<datasource.ohdsi.schema>dbo<datasource.ohdsi.schema>

You would set this value to the name of your new (empty) schema. Then when you restart the WebAPI instance, you should see in the log messages about migrations being applied, and you should see the new schema set up with about 30 tables.

BTW: where do instructions say to run a SQL file manually?

@Chris_Knoll

Right here:

GitHub - OHDSI/Broadsea: Broadsea deploys the full OHDSI technology stack (R methods library & web tools), using cross-platform Docker container technology. under Quick Start Deployment.

There are about 80 objects created. The table is showing up as created in the webapi schema. The schema name is erased in the screenshot.

image

Just so you know, the only files I am configured before running
docker-compose up -d in the directory where they reside are the files here:

Here are my configuration settings for the docker-compose.yml file. The empty schema created is webapi and the user webapi_test. The database is cdm. IP addresses and password not shown.

version: ‘2’

services:

broadsea-methods-library:
image: ohdsi/broadsea-methodslibrary
ports:
- “8787:8787”
- “6311:6311”

broadsea-webtools:
image: ohdsi/broadsea-webtools
ports:
- “8080:8080”
volumes:
- .:/tmp/drivers/:ro
- ./config-local.js:/usr/local/tomcat/webapps/atlas/js/config-local.js:ro
environment:
- WEBAPI_URL=http://127.0.0.1:8080
- env=webapi-mssql
- datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
- datasource.url=jdbc:sqlserver://databaseserveraddress:port;databasename=cdm
- datasource.cdm.schema=dbo
- datasource.ohdsi.schema=webapi
- datasource.username=webapi_test
- datasource.password=password
- spring.jpa.properties.hibernate.default_schema=ohdsi
- spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
- spring.batch.repository.tableprefix=cdm.webapi.BATCH_
- flyway.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
- flyway.datasource.url=jdbc:sqlserver://databaseserveraddress:port;databasename=cdm
- flyway.schemas=webapi
- flyway.placeholders.ohdsiSchema=webapi
- flyway.datasource.username=webapi_test
- flyway.datasource.password=password
- flyway.locations=classpath:db/migration/sqlserver

Hi,
The only reference i saw uneder the quick start was to do this:

  • Copy the example “source_source_daimon.sql” file from this GitHub repository to a directory on your machine. (e.g. The postgresql version of the file is in the postgresql sub-directory of this repository).

But I checked the script, and there are no create tables there.

I’m affraid i need to defer to @lee_evans about Broadsea support. Lee, if you could help with trouble shooting this, that’d be very helpful. Thanks.

@Chris_Knoll and @idontknow it’s just WebAPI, running inside the Broadsea Docker container, that creates/migrates the WebAPI database objects (using the usual WebAPI Flyway database migration files).

The expectation for a Broadsea deployment is that the user will have their own CDM database outside of Broadsea and will specify the database connection in the Broadsea docker-compose.yml file environment variables - database userid(s), database url, database schema names etc.

The database requirement is listed as a Broadsea dependency in the Github instructions:

OMOP Common Data Model Version 5 database populated with OMOP vocabulary & observational data

The source_source_daimon.sql file is just an example set of SQL insert statements to show how to manually populate the WebAPI source and source_damon database tables with the data source(s) configuration. It doesn’t create any database objects.

@idontknow It looks like the WebAPI database objects were created in your ‘edw_achilles’ database/schema. Cleanup that schema (if nothing else is in it then just drop and recreate it) and then run Broadsea again so the WebAPI Flyway migrations can complete successfully. See the Flyway database migration messages in the logs to verify success.

Then update the source_source_daimon.sql file with the configuration for your data sources and run that SQL file manually.

Just to be clear: the ‘database connection’ specified is a database connection to the database that will host the WebAPI database tables, which is a completely separate and distinct database from the database that hosts the CDM and Results schema. The WebAPI that runs inside the Broadsea Docker container will automatically manage the table creation in the WebAPI database, while the script from /WeAPI/ddl/results will be run manually by the user on each Results schema that resides in each of the CDM Databases.

Also to clarify: the WebAPI docker container does not come with any pre-bundled database (for either the CDM or the WebAPI tables) so the database is soemthing that must be set up by the user prior to starting up the docker container, correct?

Just to be clear: the ‘database connection’ specified is a database connection to the database that will host the WebAPI database tables

That’s correct. In general the CDM database is a separate database, with the CDM database connection defined in the source table. It can even be a different DBMS like Redshift.

For clarity, there is different usage of the word ‘database’ across DBMSs. In Postgres the same database that hosts the WebAPI in one schema can also contain a CDM schema. That’s also a valid database configuration for using Broadsea. In that case the WebAPI database connection in the docker-compose.yml and the source table database connection point to the same Postgres database.

Also to clarify: the WebAPI docker container does not come with any pre-bundled database (for either the CDM or the WebAPI tables) so the database is something that must be set up by the user prior to starting up the docker container, correct?

That’s correct.

FYI

In a future (v2.0) Broadsea, a separate ‘broadsea-webapidb’ docker container could be provided with Postgres 10 installed and the docker-compose.yml could, by default, reference that database connection for the WebAPI database.

The data in that Postgres docker container database would be volume mapped to the docker host for persistence. WebAPI Flyway in the broadsea-webtools container would create/migrate the Postgres WebAPI database to keep it up to date with new ATLAS/WebAPI releases.

If a Broadsea v2.0 was implemented like that, I believe it would be a helpful step in transitioning to only supporting a Postgres DBMS for the WebAPI database. I expect there would also need to be some minimal support provided (export/import SQL scripts?) to help existing ATLAS/WebAPI users migrate their WebAPI database data from other DBMSs to the Postgres WebAPI database.

Note. Future Broadsea v2.0 users could still decide to use their own separate Postgres (10) WebAPI database or they could choose to use the provided Broadsea Postgres 10 docker container. I think the separate Postgres database option would still be needed because in some large organizations all database admin/backups must be performed by a separate database admin IT group or through a managed database service like AWS RDS.

I estimate it would take 2 weeks of effort to create and test a Broadsea v2.0 as outlined above. There may be other useful components that we would want to include which would require additional effort. I should just add that I would be interested to work on a Broadsea v2.0 but it would be low priority for me to do it in my spare time.

1 Like

We would like to move this direction for WebAPI 3.0, but there has not been an official announcement on that. We plan on announcing that we will be making that decision on an upcoming WebAPI WG call so that people can join the conversation surrounding that decision.

@lee_evans

I am not getting errors anymore just info (see below) What is the best way to connect to the web addresses on the host machine because I am guessing the DNS errors when I type them in are because the container is hosted in a Linux VM with Docker?

Thank you.

cp: cannot stat ‘/tmp/drivers/*.jar’: No such file or directory
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/7.0.91
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Sep 13 2018 19:52:12 UTC
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 7.0.91.0
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 4.9.125-linuxkit
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_181-8u181-b13-2~deb9u1-b13
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: /usr/local/tomcat
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: /usr/local/tomcat
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dignore.endorsed.dirs=
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/usr/local/tomcat
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/usr/local/tomcat
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
Feb 05, 2019 9:08:49 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Loaded APR based Apache Tomcat Native library 1.2.17 using APR version 1.5.2.
Feb 05, 2019 9:08:49 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Feb 05, 2019 9:08:49 PM org.apache.catalina.core.AprLifecycleListener initializeSSL
INFO: OpenSSL successfully initialized (OpenSSL 1.1.0f 25 May 2017)
Feb 05, 2019 9:08:49 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“http-apr-8080”]
Feb 05, 2019 9:08:49 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [“ajp-apr-8009”]
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 526 ms
Feb 05, 2019 9:08:49 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Feb 05, 2019 9:08:49 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.91
Feb 05, 2019 9:08:49 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/local/tomcat/webapps/WebAPI.war
Feb 05, 2019 9:08:50 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
INFO: validateJarFile(/usr/local/tomcat/webapps/WebAPI/WEB-INF/lib/tomcat-embed-el-8.5.11.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
Feb 05, 2019 9:08:55 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /usr/local/tomcat/webapps/WebAPI.war has finished in 24,391 ms
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/docs
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/docs has finished in 59 ms
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/host-manager
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/host-manager has finished in 51 ms
Feb 05, 2019 9:09:13 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/manager
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/manager has finished in 498 ms
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/examples
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/examples has finished in 276 ms
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/ROOT
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 27 ms
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/penelope
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/penelope has finished in 44 ms
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/atlas
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/atlas has finished in 30 ms
Feb 05, 2019 9:09:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-apr-8080”]
Feb 05, 2019 9:09:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-apr-8009”]
Feb 05, 2019 9:09:14 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 25524 ms

t