Skip navigation

Hello Everyone,

 

These are few nice articles and references which i've come across while learning about serverless architecture, trend what made it evolves and the patterns where it is mostly suitable. It's evolution of cloud-computing coupled with event-driven architecture style.

 

Needless to say that you've to refer and keep the principles outlined in https://12factor.net/ always handly in implemented these use cases

 

https://martinfowler.com/articles/serverless.html - it's an amazing article and points to good referencesc (source: martin fowler website)

https://www.slideshare.net/jedi4ever/from-serverless-to-service-full-how-the-role-of-devops-is-evolving

https://developer.ibm.com/opentech/2016/09/06/what-makes-serverless-attractive/ - provides an explanation of how various current things abstracted for developer and helps in focusing on value-driven business development

https://www.slideshare.net/DanielKrook/openwhisk-a-platform-for-cloud-native-serverless-event-driven-apps

 

Operational aspects of serverless architecture implementation

https://charity.wtf/2016/05/31/wtf-is-operations-serverless/

https://charity.wtf/2016/05/31/operational-best-practices-serverless/

 

For Youtuber's

https://www.youtube.com/watch?v=sYRiTZ47Cao

 

Apache OpenWhisk as servlerss cloud computing infrastructure.

https://openwhisk.apache.org/

 

Serverless Framework for building serverless architecture using AWS Lambda, Azure / Google cloud functions or IBM OpenWhisk

https://serverless.com/

https://github.com/serverless/serverless

https://github.com/serverless/guide - open-source guide to understand about serverless architecture and how to use framework to build one to be serverless organization

 

For event-driven implementation reference go to http://eventuate.io/usingeventuate.html

If you're confused between SSO and centralized authentication mechanism go through these articles to get basic understanding. They help you to understand the difference between two and when to use what. This will also provide you insights on when you've to opt for which kind of approach and solution.

 

SSO as such doesn't maintain its own user repository and relies on the application for user management services. Centralized authentication services maintain user data repository which can be shared across applications (ex: LDAP, AD). SSO technique issues and validate taken, its mainly performing assertions based on protocols like SAML, JWT or OpenID connect.

 

Article 1 : https://blogs.forgerock.org/petermajor/2013/02/single-sign-on-the-basic-concepts/ very concise and simple explanation on basic building blocks of SSO infrastructure and flow of request and response

Article 2 : https://stormpath.com/blog/sso-vs-centralized-auth explains that centralized authentication is the first-step towards SSO implementation.

Article 3 : https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/ provides a very simple explanation of SSO and various alternatives. You can also download the e-book at the end of article.

Article 4 : https://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO  and https://blogs.forgerock.org/petermajor/2013/02/single-sign-on-the-basic-concepts/  provide basic understanding of SSO working in simple manner

Article 5 : https://blogs.forgerock.org/petermajor/2014/05/cross-domain-single-sign-on/ provides explanation of achieving cross-domain SSO (typically called, CDSSO).

 

Additional info on implementing 'Remember Me' feature can be found here

Came across articles published on OTN which provides simple and clear introduction to XML semantics. It's nice guiding line for someone who is unaware of what different aspects of XML means

 

XML Schema: Understanding Namespaces

XML Schema: Understanding Datatypes

XML Schema: Understanding Structures

 

Folks out of touch with XML, in need of refresher can go through these articles. Thanking author for succinct article. 

This blog post helps you in installing apache web server on Max OS X El Capitan. Details of software versions used are mentioned below

 

OS : Max OS X El Capitan 10.11.1

Apache Http/ Web server : apache-httpd-2.4.23 . apache has dependency of apr, apr-util and pcre. For apache-httpd-2.4.23, i've compiled and installed following versions

apr : 1.5.2

apr-util : 1.5.4

pcre : 8.39

 

Follow below mentioned steps for installing apache web server.

  • Ensure your gcc is working correctly by executing command gcc -v or gcc --version in your terminal
  • Download apache web server from https://httpd.apache.org/download.cgi
  • Download APR and APR Util from http://apr.apache.org/
  • Download PCRE from https://sourceforge.net/projects/pcre/files/pcre/ (download pcre-8.39)
  • Extract httpd-NN.tar.gz
    • gzip -d httpd-NN.tar.gz
    • tar xvf httpd-NN.tar
    • cd httpd-NN
  • Extract APR and APR Util files
    • APR
      • gzip apr-NN.tar.gz
      • tar xvf httpd-NN.tar
      • rename extracted folder to apr
    • APR Util
      • gzip apr-NN.tar.gz
      • tar xvf httpd-NN.tar
      • rename extracted folder to apr-util
  • Copy extracted apr and apr-util folder to <extracted_httpd-NN>/srclib (copy folder as-is)
  • Extract pcre-NN.tar.gz
    • gzip -d pcre-NN.tar.gz
    • tar xvf pcre-NN.tar
    • cd pcre-NN
  • Install pcre
    • cd pcre-NN
    • execute command ./configure --prefix=<location_pcre_to_be_installed>/pcre-NN
    • execute command make
    • execute command make install
  • Install apache
    • cd httpd-NN
    • execute command ./configure --prefix=<location_apache_to_be_installed>/apache-httpd-NN --with-included-apr --with-pcre=<pcre_installed_location>/bin/pcre-config
    • execute command make
    • execute command make install
  • Edit httpd.config file to make following changes :
    • Configure the Port Number for your Web Server. In the httpd.conf file, search for "listen" and you can configure the webserver to listen to the port you set.

               For Ex: Listen 9090

    • Search for Dynamic Shared Object (DSO) Support in the httpd.conf file and make sure that you have added the following to the DSO list:

               LoadModule include_module modules/mod_include.so

    • Search for DocumentRoot in the httpd.conf file:
      • Change the DocumentRoot to point to the htdocs folder inside your webserver or to location where you want your html files to be.
  • Go to <apache-httpd-NN>/bin directory and execute ./apachectl start to start server
  • To stop server, go to <apache-httpd-NN>/bin directory and execute ./apachectl stop

Java 8 has introduced some of the exciting and much awaited features at the language level. One of them is support for functional programming, this feature is achieved by lambda expression. By a series of article i am trying to explore language features and support it offers and ways to use it to improve various dimensions of programming. Please read through these article and let know your feedback.

 

Getting Started with Lambda Expressions

Lambda Usage with Collections and Method References

 

Also, you can follow some of these videos links for deeper understanding and enrich knowledge of programming

 

https://www.youtube.com/watch?v=zolbIZS4SRQ&feature=youtu.be&fb

https://www.youtube.com/watch?v=wk3WLaR2V2U

Java 8 Launch

Processing Data with Java SE 8 Streams, Part 1

This blog post is in-line to question i had raised in forum sometime back. Installation set-up details are mentioned below -

OS : Mac OS Yosemite

WCS Version : 11g

Oracle DB VM Box : Oracle DB Version 11.2.0

 

Download OracleLinux DB OVM Appliance and imported onto Virutal Box. Update tomcat server.xml with datasource details. While running the WCS installation is in progress and reaches 86%, installer prompts for some checks and restart of the server. When restart is initiated installation fails with error (for details of error refer https://community.oracle.com/thread/3732383 ),


[2015-06-09 20:01:26,317 IST] [INFO ] [      main] [springframework.web.context.ContextLoader] Root WebApplicationContext: initialization started

[2015-06-09 20:01:26,343 IST] [INFO ] [      main] [web.context.support.XmlWebApplicationContext] Refreshing org.springframework.web.context.support.XmlWebApplicationContext@c61a8f8: display name [Root WebApplicationContext]; startup date [Tue Jun 09 20:01:26 IST 2015]; root of context hierarchy

[2015-06-09 20:01:26,380 IST] [INFO ] [      main] [beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]

[2015-06-09 20:01:26,399 IST] [INFO ] [      main] [web.context.support.XmlWebApplicationContext] Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@c61a8f8]: org.springframework.beans.factory.support.DefaultListableBeanFactory@4c05279b

[2015-06-09 20:01:26,416 IST] [INFO ] [      main] [beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@4c05279b: defining beans []; root of factory hierarchy

[2015-06-09 20:01:26,416 IST] [INFO ] [      main] [springframework.web.context.ContextLoader] Root WebApplicationContext: initialization completed in 97 ms

[2015-06-09 20:01:26,416 IST] [INFO ] [      main] [fatwire.logging.cs.event]  CSShutdownListener is initialized

[2015-06-09 20:01:26,425 IST] [INFO ] [      main] [beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [webreference.xml]

[2015-06-09 20:01:56,586 IST] [INFO ] [      main] [springframework.context.support.ClassPathXmlApplicationContext] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5e066f43: display name [org.springframework.context.support.ClassPathXmlApplicationContext@5e066f43]; startup date [Tue Jun 09 20:01:56 IST 2015]; root of context hierarchy

[2015-06-09 20:01:56,586 IST] [INFO ] [      main] [beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [SSOConfig.xml]

[2015-06-09 20:01:56,763 IST] [INFO ] [      main] [springframework.context.support.ClassPathXmlApplicationContext] Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@5e066f43]: org.springframework.beans.factory.support.DefaultListableBeanFactory@14b75fd9

[2015-06-09 20:01:56,768 IST] [INFO ] [      main] [beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14b75fd9: defining beans [ssoprovider,ssofilter,ssolistener,auxlistener,ssoconfig]; root of factory hierarchy

[2015-06-09 20:02:26,849 IST] [INFO ] [      main] [beans.factory.support.DefaultListableBeanFactory] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14b75fd9: defining beans [ssoprovider,ssofilter,ssolistener,auxlistener,ssoconfig]; root of factory hierarchy

[2015-06-09 20:02:26,850 IST] [ERROR] [      main] [fatwire.wem.sso.SSOFilter] Failed to create SSO filter. Reason: Error creating bean with name 'ssolistener' defined in class path resource [SSOConfig.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssolistener' defined in class path resource [SSOConfig.xml]: Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)

  at java.security.AccessController.doPrivileged(Native Method)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)

  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)

  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)

  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)

  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)

  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)

  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)

  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)

  at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)

  at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)

  at com.fatwire.wem.sso.DynamicInjector.<init>(DynamicInjector.java:52)

  at com.fatwire.wem.sso.DynamicInjector.instance(DynamicInjector.java:234)

  at com.fatwire.wem.sso.SSOFilter.init(SSOFilter.java:65)

  at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:298)

  at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:119)

  at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4076)

  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4730)

  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)

  at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)

  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)

  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

  at org.apache.catalina.core.StandardService.start(StandardService.java:525)

  at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)

  at org.apache.catalina.startup.Catalina.start(Catalina.java:595)

  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  at java.lang.reflect.Method.invoke(Method.java:606)

  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Caused by: java.lang.ExceptionInInitializerError

  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

  at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

  at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)

  at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)

  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)

  ... 35 more

Caused by: net.sf.ehcache.CacheException: Unable to create CacheManagerPeerListener. Initial cause was TVMATP2495L: TVMATP2495L: nodename nor servname provided, or not known

  at net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory.doCreateCachePeerListener(RMICacheManagerPeerListenerFactory.java:104)

  at net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory.createCachePeerListener(RMICacheManagerPeerListenerFactory.java:84)

  at net.sf.ehcache.config.ConfigurationHelper.createCachePeerListeners(ConfigurationHelper.java:314)

  at net.sf.ehcache.CacheManager.configure(CacheManager.java:434)

  at net.sf.ehcache.CacheManager.init(CacheManager.java:302)

  at net.sf.ehcache.CacheManager.<init>(CacheManager.java:234)

  at com.fatwire.cache.ehcache.EhCacheObjectCache._initCache(EhCacheObjectCache.java:730)

  at com.fatwire.cache.ehcache.EhCacheObjectCache.start(EhCacheObjectCache.java:564)

  at com.fatwire.wem.sso.cas.cache.SessionMappingStorage.<init>(SessionMappingStorage.java:48)

  at com.fatwire.wem.sso.cas.listener.CASListener.<clinit>(CASListener.java:15)

  ... 42 more

Caused by: java.net.UnknownHostException: TVMATP2495L: TVMATP2495L: nodename nor servname provided, or not known

  at java.net.InetAddress.getLocalHost(InetAddress.java:1473)

  at net.sf.ehcache.distribution.RMICacheManagerPeerListener.calculateHostAddress(RMICacheManagerPeerListener.java:167)

  at net.sf.ehcache.distribution.RMICacheManagerPeerListener.<init>(RMICacheManagerPeerListener.java:124)

  at net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory.doCreateCachePeerListener(RMICacheManagerPeerListenerFactory.java:102)

  ... 51 more

Caused by: java.net.UnknownHostException: TVMATP2495L: nodename nor servname provided, or not known

  at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)

  at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)

  at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)

  at java.net.InetAddress.getLocalHost(InetAddress.java:1469)

  ... 54 more


This error is primarily due to 2 factors

  • From logs, i figured out that JAVA_HOME wasn't set
  • root cause of error is "Caused by: net.sf.ehcache.CacheException: Unable to create CacheManagerPeerListener. Initial cause was TVMATP2495L: TVMATP2495L: nodename nor servname provided, or not known", because of host mapping issue

     To resolve these issues,

  1. add an entry to /etc/hosts file - 127.0.0.1 <your_hostname>
  2. create a .bash_profile if it doesn’t exist already. add the following entry export JAVA_HOME=$(/usr/libexec/java_home)
  3. in catalina.sh file make an entry -Djava.net.preferIPv4Stack=true \ (this entry is required since ehcache API was getting IPv6 address format and it was throwing an error. refer http://jira.pentaho.com/browse/BISERVER-12146). For JAVA_OPTS, set the above value.
  4. Add the custom class path setting to load cas.properties and other WCS/bin startup files towards end of catalina.sh file. while moving those lines to the top resolve the issue (add the classpath entry soon after bootstrap.jar class path entry is done. Or move it to setenv.sh file which you’ve newly created for putting custom class path

 

Screen Shot 2016-03-01 at 7.49.02 PM.png

 

For better manageability consolidate point 3 & 4, move it to setenv.sh file as per tomcat documentation standards.

Screen Shot 2016-03-01 at 7.58.49 PM.png

 

Hope this helps

It will be exicitng to work on content organising with new, updated features provided by Oracle Webcenter Content 12c, especially bringing content UI to use with ease and minimal effort.

 

These articles outlines some key aspects offered

https://blogs.oracle.com/proactivesupportWCC/entry/webcenter_content_12c_is_here - These blog reveals the updates product suite has undergone, feature consolidated and deprecated items.

http://cfour.fishbowlsolutions.com/2015/12/23/nice-list-holiday-seasontop-10-takeaways-oracle-webcenter-12c-cloud-user-experience-openworld-2015/

Deep-dive in official documentation https://docs.oracle.com/middleware/1221/wcc/ASWRN/whatsnew.htm#ASWRN1681 for more details

 

Overall it provides benefits for all the stakeholders in the game - be it developers, system administrators, content admins and end users. Basic installation and use of WCC from developer, administration and operational viewpoints have been ease alot which leads to better productivity, operational efficiency and reduced administration effort.

  • Webcenter Content UI and Content Server can go on same domain. This reduces the burden of separate domain installation, maintenance of ContentUI domain. ADF version of Content UI in prior releases were different forcing it to go on different domain (than WCC and avoid version collision). I hope with version fusion middleware will have only one-version of ADF within it.
  • Out-of-the-box integration with Telestream’s Vantage. Vantage is successor to FlipFactory which provides audio/ video transcoding support enables generation of better renditions. It’s nice to see WCC transition from supporting FlipFactory in earlier versions to support Vantage as FlipFactory is decommissioned. By supporting renditions, WCC positions itself as DAM solution
  • In-build annotation support! Prior to this release, to implement annotation’s, WCC provided an out-of-the-box integration with Oracle AutoVue. AutoVue was java swing-based thick client and the integration was costly. From an end user perspective, AutoVue UI was’t ideal interface from web users. This add-on will be beneficial feature.
  • Imaging is embedded within content server and users can take direct advantage of it. Reduces the extra set-up and administration activities involved earlier.
  • Strengthening support of cloud and hybrid-host and deployment support. This attributes to current trend and future usage of access content from anywhere, anytime and from any device

 

 

  From content author’s view, there are quite a few enhancements done which are beneficial for end user.

  • Improving adaptivity of Content UI by addition of Alta skin and making it compliant to responsive web-design. Click through https://blogs.oracle.com/jdeveloperpm/entry/introducing_the_oracle_alta_ui to know more and gain insights
  • Annotation features have been added in Content UI. User can set permissions on annotation text their having precise control on the comments provided. As of now i am not aware of any limitations on types of document can/ cannot be annotated
  • Users get the benefit of accessing the content anywhere, anytime uninterupptedly. Supports better collaboration and control via cloud services

 

Some of 11g features (content-portlet suite, share point integration, IRM) are deprecated or no longer supported. There are no traces of Site Studio in 12c documentation, denoting end-of-life of that component. As strategic direction, organisations should move towards Webcenter Sites for WCM and site management to take advantage of the offerings.