Automic Workload Automation

Expand all | Collapse all

AWI docker image

Anon Anon

Anon AnonOct 25, 2017 05:37 AM

  • 1.  AWI docker image

    Posted Oct 25, 2017 04:05 AM

    We are beginning to start working with the Automic Web Interface in preparation for the JUI’s deprecation in v12.1.

    We are currently running the AWI in a platform-as-as-service app cloud. The default Java buildpack in Cloud Foundry uses OpenJDK, an open-source version of the Oracle JDK. Although Automic's compatibility matrix states that the AWI is supported only with Oracle Java 1.8, we have been running the AWI like this for a couple of years, mostly without problems.

    On at least a couple of occasions, Automic Support has shown reluctance to help troubleshoot problems when they saw that we were running the AWI with OpenJDK instead of Oracle JRE. No specific AWI problem has been found to be caused by OpenJDK, but we obviously need to be sure that we can get support from Automic. We have opened an enhancement request with Automic, asking for official support for OpenJDK.

    We are also investigating alternative approaches. We do not want to have to go back to the bad old days of setting up dedicated systems just to run a single app. It might be possible to install a custom buildpack that uses the Oracle JRE, but this is somewhat involved, and may not be feasible for some app cloud providers.

    The next option we are looking into is running the AWI in a Docker container, where we can specify the exact version of Java to use. Has anyone experimented with running AWI in Docker? If so, would you be willing to share the AWI Docker image? (I was not able to find anything relevant on the Automic Marketplace.) If someone has already covered this ground, we would be glad to know the details. Thanks in advance!



  • 2.  AWI docker image

    Posted Oct 25, 2017 04:35 AM
    FWIW, we had an issue with AWI and were also told that using OpenJDK puts us in unsupported territory. Eventually the issue had another root cause, but we also had to subsitute OpenJDK by Sun JDK, which I didn't particularily fancy either.

    +1 on the vote.

    (edit: and by Sun Java, I obviously mean Larry Ellison Java ... old habbits ...)


  • 3.  AWI docker image

    Posted Oct 25, 2017 05:37 AM
    good Idea, supported!


  • 4.  AWI docker image

    Posted Oct 30, 2017 06:35 AM
    At Automic Support’s request, we have now reproduced the AWI problem we were seeing with Oracle JRE, so we know it’s not specific to OpenJDK. In case anyone is interested, the problem is that AWI logins time out if the user has certain privileges. I posted a new discussion wherein I will keep track of the AWI problems we have encountered.


  • 5.  AWI docker image

    Posted Nov 08, 2017 11:17 AM

    Michael A. Lowry

      Just a hunch, do you have a proxy server? If so, try a proxy exception for AWI, see if that helps.


  • 6.  AWI docker image

    Posted Nov 08, 2017 11:26 AM
    Carsten_Schmitz_7883, yes, configuring the http_proxy, https_proxy, and no_proxy variables is one of the first things I did. I think the dordoka/tomcat docker image looks like a good place to start. It comes with recent versions of Oracle Java and Tomcat.


  • 7.  AWI docker image

    Posted Dec 18, 2017 04:24 AM
    I’ve made some progress getting that image up and running, but I have now run into a snag when running docker build:
    Cannot add PPA: 'ppa:~webupd8team/ubuntu/y-ppa-manager'.
    ERROR: '~webupd8team' user or team does not exist.
    The command '/bin/sh -c apt-get update  && apt-get install -y software-properties-common        && add-apt-repository -y ppa:webupd8team/y-ppa-manager      && add-apt-repository -y ppa:webupd8team/ubuntu/y-ppa-manager   && apt-get update       && apt-get install -y git build-essential curl wget software-properties-common' returned a non-zero code: 1
    The command that is failing is add-apt-repository -y ppa:webupd8team/ubuntu/y-ppa-manager. This command runs fine outside of docker. The proxy is configured correctly, as far as I can tell. Any ideas?


  • 8.  AWI docker image

    Posted Jan 05, 2018 09:15 AM
    Michael_Lowry  Have you tried staring some other container just to verify if it gets through to the Internet via the exported proxy?  
    Or in the Dockerfile for test purpouses something like:
    RUN env | grep proxy RUN ping -c 2 google.com 
    While building you will then see the output, and maybe it will shed some more light on the issue. 


  • 9.  AWI docker image

    Posted Jan 05, 2018 09:49 AM
    Marcin_Uracz_10341: I posted the above question to StackOverflow. There, I got a tip that helped me identify the problem.
    The problem was that the proxy requires authentication, but root does not get Kerberos credentials. I added my user name and password to HTTPS_PROXY in the Dockerfile:
    ENV HTTPS_PROXY https://DOMAIN\USERNAME:PASSWORD@SERVER:PORT
    The image is not completely working yet, but now I have at least progressed beyond the add-apt-repository command.


  • 10.  AWI docker image

    Posted Jan 06, 2018 12:57 PM
    I gave this image a shot today, and it works like a charm. Later on I will try to spin it up in a cluster and "shake" it a little bit to see if it breaks.

    I still think it is a little bit "fat", maybe this will be a good starting point for something more lightweight: davidcaste/docker-alpine-tomcat. :)


  • 11.  AWI docker image

    Posted Jan 08, 2018 03:40 AM
    Marcin Uracz said:
    I still think it is a little bit "fat", maybe this will be a good starting point for something more lightweight: davidcaste/docker-alpine-tomcat. :)
    That is lightweight. Like its parent image, this image installs curl & zip, uses them once, and then removes them. :)


  • 12.  AWI docker image

    Posted Jan 19, 2018 05:43 AM
    Marcin_Uracz_10341: I made some progress getting the AWI up and running in that Alpine image. I doesn’t start up completely though. Here is a log excerpt:
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Activating component from state 4
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Dependency not satisfied: HttpService
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Not all dependencies satisfied, cannot activate
    DEBUG: com.uc4.ecc-search-api (10): Starting extension synchronously
    DEBUG: com.uc4.ecc-widgets-canvas (11): Starting extension synchronously
    DEBUG: org.w3c.flute (12): Starting extension synchronously
    DEBUG: com.google.guava (13): Starting extension synchronously
    DEBUG: org.jsoup (14): Starting extension synchronously
    DEBUG: org.apache.felix.bundlerepository (15): Starting extension synchronously
    DEBUG: org.apache.felix.configadmin (16): Starting extension synchronously
    DEBUG: org.apache.felix.fileinstall (17): Starting extension synchronously
    DEBUG: org.apache.felix.http.bridge (18): Starting extension synchronously
    DEBUG: org.apache.felix.prefs (19): Starting extension synchronously
    DEBUG: com.uc4.webui-logback (30): Starting extension synchronously
    DEBUG: com.uc4.webui-logback (30): BundleComponentActivator : Bundle [30] active
    DEBUG: com.uc4.webui-logback (30): BundleComponentActivator : Bundle [30] descriptor locations OSGI-INF/com.uc4.webui.logback.LogbackService.xml
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(-1)] Component com.uc4.webui.logback.LogbackService created: DS=1, implementation=com.uc4.webui.logback.LogbackService, immediate=true, default-enabled=true, factory=null, configuration-policy=optional, activate=start, deactivate=deactivate, modified=null configuration-pid=com.uc4.webui.logback.LogbackService
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(-1)] Component com.uc4.webui.logback.LogbackService Services: servicefactory=false, services=[com.uc4.webui.logback.LogbackService]
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(-1)] Component com.uc4.webui.logback.LogbackService Properties: {service.pid=com.uc4.webui.logback.LogbackService}
    DEBUG: Registering component with pid com.uc4.webui.logback.LogbackService for bundle 30
    DEBUG: com.uc4.webui-logback (30): BundleComponentActivator : Bundle [30] ComponentHolder created for com.uc4.webui.logback.LogbackService
    DEBUG: com.uc4.webui-logback (30): BundleComponentActivator : Bundle [30] May enable component holder com.uc4.webui.logback.LogbackService
    DEBUG: com.uc4.webui-logback (30): BundleComponentActivator : Bundle [30] Enabling component holder com.uc4.webui.logback.LogbackService
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Updating target filters
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Component enabled
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] ActivateInternal
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Activating component from state 4
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] registration change queue [registered]
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] This thread collected dependencies
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] getService won collecting dependencies, proceed to creating object.
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] getting activate: start
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Locating method start in class com.uc4.webui.logback.LogbackService
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Declared Method com.uc4.webui.logback.LogbackService.start([interface org.osgi.service.component.ComponentContext]) not found
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Declared Method com.uc4.webui.logback.LogbackService.start([interface org.osgi.framework.BundleContext]) not found
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Declared Method com.uc4.webui.logback.LogbackService.start([interface java.util.Map]) not found
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] Found activate method: public void com.uc4.webui.logback.LogbackService.start()
    DEBUG: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] invoking activate: start
    09:15:18.587 [FelixStartLevel] INFO ECC BOOT LOGGING - Initializing Logging. Log path: /opt/apache-tomcat-8.5.3/logs/
    09:15:18.588 [FelixStartLevel] INFO ECC BOOT LOGGING - Initializing Logging. Config file url file:/opt/tomcat/webapps/awi-exp/config-exp/logback.xml
    Worker started
    java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
         at com.uc4.webui.logback.LogbackService.start(LogbackService.java:50)
         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.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)
         at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)
         at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624)
         at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508)
         at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:315)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:127)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:871)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:838)
         at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:850)
         at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:419)
         at org.apache.felix.scr.impl.config.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:376)
         at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:172)
         at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:120)
         at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:258)
         at org.apache.felix.scr.impl.Activator.access$000(Activator.java:45)
         at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:185)
         at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)
         at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)
         at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:192)
         at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:467)
         at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:414)
         at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
         at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
         at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:156)
         at org.apache.felix.utils.extender.AbstractExtender.startTracking(AbstractExtender.java:150)
         at org.apache.felix.utils.extender.AbstractExtender.doStart(AbstractExtender.java:142)
         at org.apache.felix.scr.impl.Activator.doStart(Activator.java:117)
         at org.apache.felix.utils.extender.AbstractExtender.start(AbstractExtender.java:114)
         at org.apache.felix.scr.impl.Activator.start(Activator.java:92)
         at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
         at org.apache.felix.framework.Felix.activateBundle(Felix.java:2154)
         at org.apache.felix.framework.Felix.startBundle(Felix.java:2072)
         at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
         at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
         at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.ClassNotFoundException: *** Class 'org.osgi.service.log.LogService' was not found because bundle com.uc4.webui-logback [30] does not import 'org.osgi.service.log' even though bundle osgi.compendium [21] does export it. Additionally, the class is also available from the system class loader. There are two fixes: 1) Add an import for 'org.osgi.service.log' to bundle com.uc4.webui-logback [30]; imports are necessary for each class directly touched by bundle code or indirectly touched, such as super classes if their methods are used. 2) Add package 'org.osgi.service.log' to the 'org.osgi.framework.bootdelegation' property; a library or VM bug can cause classes to be loaded by the wrong class loader. The first approach is preferable for preserving modularity. ***
         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2006)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
         ... 41 more
    Caused by: java.lang.ClassNotFoundException: org.osgi.service.log.LogService not found by com.uc4.webui-logback [30]
         at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
         at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
         ... 42 more
    ERROR: com.uc4.webui-logback (30): [com.uc4.webui.logback.LogbackService(26)] The start method has thrown an exception
    java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
         at com.uc4.webui.logback.LogbackService.start(LogbackService.java:67)
         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.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:231)
         at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:39)
         at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:624)
         at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:508)
         at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:149)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:315)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:127)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:871)
         at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:838)
         at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:850)
         at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:419)
         at org.apache.felix.scr.impl.config.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:376)
         at org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:172)
         at org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:120)
         at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:258)
         at org.apache.felix.scr.impl.Activator.access$000(Activator.java:45)
         at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:185)
         at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)
         at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)
         at org.apache.felix.utils.extender.AbstractExtender.addingBundle(AbstractExtender.java:192)
         at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:467)
         at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:414)
         at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
         at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183)
         at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:156)
         at org.apache.felix.utils.extender.AbstractExtender.startTracking(AbstractExtender.java:150)
         at org.apache.felix.utils.extender.AbstractExtender.doStart(AbstractExtender.java:142)
         at org.apache.felix.scr.impl.Activator.doStart(Activator.java:117)
         at org.apache.felix.utils.extender.AbstractExtender.start(AbstractExtender.java:114)
         at org.apache.felix.scr.impl.Activator.start(Activator.java:92)
         at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645)
         at org.apache.felix.framework.Felix.activateBundle(Felix.java:2154)
         at org.apache.felix.framework.Felix.startBundle(Felix.java:2072)
         at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
         at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
         at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
         at com.uc4.webui.logback.LogbackService.start(LogbackService.java:50)
         ... 40 more
    Caused by: java.lang.ClassNotFoundException: *** Class 'org.osgi.service.log.LogService' was not found because bundle com.uc4.webui-logback [30] does not import 'org.osgi.service.log' even though bundle osgi.compendium [21] does export it. Additionally, the class is also available from the system class loader. There are two fixes: 1) Add an import for 'org.osgi.service.log' to bundle com.uc4.webui-logback [30]; imports are necessary for each class directly touched by bundle code or indirectly touched, such as super classes if their methods are used. 2) Add package 'org.osgi.service.log' to the 'org.osgi.framework.bootdelegation' property; a library or VM bug can cause classes to be loaded by the wrong class loader. The first approach is preferable for preserving modularity. ***
         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2006)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
         ... 41 more
    Caused by: java.lang.ClassNotFoundException: org.osgi.service.log.LogService not found by com.uc4.webui-logback [30]
         at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
         at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
         ... 42 more
    The first error appears to be:
    java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
    However, a bit before this message also appears:
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Dependency not satisfied: HttpService
    I do not see this message on systems where the AWI is working correctly, so perhaps it's relevant.


  • 13.  AWI docker image

    Posted Jan 19, 2018 08:57 AM
    I looked at the Apache access log in the container, and it shows that it is responding to requests with 404:
    localhost_access_log.2018-01-19.txt
    0:0:0:0:0:0:0:1 - - [19/Jan/2018:13:45:29 +0000] "GET / HTTP/1.1" 404 -


  • 14.  AWI docker image

    Posted Jan 19, 2018 09:09 AM
    Michael_Lowry,  which version of this image have you tested?  I just gave the tomcat 8 with jdk8 and jre8 a quick go and the war was deployed without any problems. 

    13:35:16.806 [localhost-startStop-1] DEBUG ECC BOOT - Log directory (set by system property catalina.base): /opt/apache-tomcat-8.5.3/logs/ [INFO] Started bridged http service 13:35:18.465 [FelixStartLevel] DEBUG com.uc4.ecc.backends.Backend - Binding ConnectionFactory com.uc4.ecc.backends.connection.ProductionConnectionFactory@6cbbc148 13:35:18.468 [FelixStartLevel] DEBUG com.uc4.ecc.backends.Backend - Backend API activated... 13:35:18.721 [FelixStartLevel] INFO com.uc4.ecc.framework.entrypoint.plugin.PluginLifecycleManager - Plugin Lifecycle Manager instantiated. 13:35:18.725 [FelixStartLevel] INFO com.uc4.ecc.framework.entrypoint.plugin.PluginLifecycleManager - Plugin Lifecycle Manager activating.

    This seems to prove that the HttpService is there, curious. 

    The RAM usage seems to be on both images more or less the same, but the image size. Whoa - 190M vs 850M :)




  • 15.  AWI docker image

    Posted Jan 19, 2018 09:20 AM
    Michael Lowry said:
    I looked at the Apache access log in the container, and it shows that it is responding to requests with 404:
    localhost_access_log.2018-01-19.txt
    0:0:0:0:0:0:0:1 - - [19/Jan/2018:13:45:29 +0000] "GET / HTTP/1.1" 404 -
    Now you lost me. Where does this apache come from? :)


  • 16.  AWI docker image

    Posted Jan 19, 2018 10:03 AM
    Marcin_Uracz_10341: I assumed that Tomcat runs on Apache. Perhaps this is incorrect. In any event, the HTTP access log shows that it's returning 404 to requests for the root-level page.


  • 17.  AWI docker image

    Posted Jan 19, 2018 10:08 AM
    Michael_Lowry , if we are talking about the image https://github.com/davidcaste/docker-alpine-tomcat, there is no Apache Webserver. The Tomcat runs on port 8080 and if you deploy the awi.war app it is available under the standard endpoint /awi.




  • 18.  AWI docker image

    Posted Jan 19, 2018 10:13 AM
    Marcin_Uracz_10341: OK, today I learned something. :) Another potentially complicating factor is that I’m copying the extracted files from the WAR into the webapps directory, and not the awi.war file itself. I'll try with the out-of-the-box WAR.


  • 19.  AWI docker image

    Posted Jan 19, 2018 11:20 AM
    My initial approach was to use a volume for the webapps directory. But the longer I think about it, I come to the conclusion that the app deployment should be part of the build,  so the revisions (config, version changes ) can be tracked with tags. 


  • 20.  AWI docker image

    Posted Jan 19, 2018 11:29 AM
    I have had to tweak the Dockerfile quit a lot to adapt it to my needs. Here's one more thing I ran into... the proxy environment variables in the container were for some reason not being honored by curl. I ran docker inspect on the container, and confirmed that the proxy environment variables were set correctly.

    I had to pass the proxy again as a command line argument to get the downloads to work. E.g.,
    curl -jkvL --socks5-gssapi -x http://proxy.mycompany.com:8080 -o /tmp/apache-tomcat.tar.gz http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.3/bin/apache-tomcat-8.5.3.tar.gz
     I still haven't figured this out, but since I have a work-around, I'm not concentrating on this at the moment.


  • 21.  AWI docker image

    Posted Jan 19, 2018 11:47 AM
    Michael_Lowry  this might be just a bug in the curl build for alpine. If the variable is set properly why not just use:
    curl -jkvL --socks5-gssapi -x ${HTTP_PROXY}


  • 22.  AWI docker image

    Posted Jan 21, 2018 07:23 AM
    Using the WAR file instead of an already-extracted directory did not make a difference. I'm still seeing both this message:
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Dependency not satisfied: HttpService
    and this one:
    java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
    I get the idea that my server.xml file is not correctly configured. I have not yet gone to the trouble of setting up certificates and keys for this server. In the meantime I ought to be able to get it working just with ordinary HTTP though.


  • 23.  AWI docker image

    Posted Jan 21, 2018 08:25 AM
    I get the idea that my server.xml file is not correctly configured. I have not yet gone to the trouble of setting up certificates and keys for this server. In the meantime I ought to be able to get it working just with ordinary HTTP though.
    If you don't really have to, I would also go with HTTP and leave the  HTTPS termination/rev proxy to something like for example nginx this will give you the benefit also of a session aware load balancer for the AWI instances (why run in docker when you run only one ;) )  

    BTW, what did you change in the server.xml? 


  • 24.  AWI docker image

    Posted Jan 22, 2018 02:15 AM
    If you don't really have to, I would also go with HTTP and leave the  HTTPS termination/rev proxy to something like for example nginx this will give you the benefit also of a session aware load balancer for the AWI instances (why run in docker when you run only one ;) )  

    BTW, what did you change in the server.xml? 
    Not much. I just attempted to enable HTTPS, but then realized that doing this would require more work. Right now, this is the only Connector section enabled in the file:
    <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      maxHttpHeaderSize="32768"
    />
    I like the idea of using nginx to handle load balancing, HTTPS termination & reverse proxy. Would single sign-on work in such a configuration? I’ve never tried this.


  • 25.  AWI docker image

    Posted Jan 23, 2018 01:30 PM
    I like the idea of using nginx to handle load balancing, HTTPS termination & reverse proxy. Would single sign-on work in such a configuration? I’ve never tried this.

    Unfortunately I have no experience with sso :(

    As we are pretty dynamic with the "AWI Hosts" this will be not so easy to accomplish:

    Automic recommendscreating SPNs for each AWI host(one SPN with the host name and one with the fully qualified domain name).

    But I think this is not a show stopper,  right?

    From what I understand the kerberos token is placed within the HTTP header, this should be no problem to pass on during the proxy/termination, actually this is common practice, AFAIK, that the headers don't get stripped, as you have a lot of other crucial information in them most of the time. 


  • 26.  AWI docker image

    Posted Jan 23, 2018 05:19 PM
    SSO is one of the main selling points of the AWI for us. Good point about the Kerberos token. I guess the host names will be the sticking point. I hope there is a solution that does not require generating SPNs & keytabs on-the-fly. :smile:


  • 27.  AWI docker image

    Posted Feb 22, 2018 10:51 PM
    Using the WAR file instead of an already-extracted directory did not make a difference. I'm still seeing both this message:
    DEBUG: com.uc4.ecc-framework-entrypoint (9): [com.uc4.ecc.framework.entrypoint.servlet.ServletRegistrar(25)] Dependency not satisfied: HttpService
    and this one:
    java.lang.NoClassDefFoundError: org/osgi/service/log/LogService
    I get the idea that my server.xml file is not correctly configured. I have not yet gone to the trouble of setting up certificates and keys for this server. In the meantime I ought to be able to get it working just with ordinary HTTP though.
    I hit this today, it was related to jdk7/jre7..

    As Marcin mentioned, use tomcat 8 with jdk8 and jre8 @ https://docs.docker.com/samples/library/tomcat/

    I used the Dockerfile below with a few additions, including added a custom awi.war image that had our uc4config.xml content.. Also in the Dockerfile, Expose ports 8080/8005/8009 per the installation guide... when you execute the docker run, make sure you make the ports visible with -p 8080:8080, etc. 

     https://github.com/docker-library/tomcat/blob/da8aa30aaa6593e61ab7152bcdfb25a177116ffa/8.5/jre8/Dockerfile