The past few weeks I’ve spent quite some time trying to install xCP2 from scratch. Since there are a lot of components to install and because I ran into some problems along the way this took me a lot longer than I’d expected.
To prevent people from making the same mistakes I did I thought I’d share my experience.

I’ve tried following the xcp2.0 deploy guide as much as possible but there are some things missing or a little bit different.

Order

First thing that I noticed was that the deployment guide specifies an order in which the components have to be installed. Do try to follow that order as much as possible because you may run into some problems if you do it differently. Only thing of course that needs to be different is that you have to install the application server before you can install DA.

Coming to that subject I really advise to use the tcServer (I used version 2.9.4, which uses Tomcat 7.0.47 as a base) as the application server. I’ve tried it with plain Tomcat but ran into a few problems. I’m sure it is possible but running multiple instances of Tomcat just requires some extra configuration. tcServer makes things a lot easier. Download the developer edition and use the .bat file in the quickstart folder to populate your instances. It is a lot easier than it looks at first and with the wrapper.conf it makes editing java/Tomcat variables a lot quicker.

Dars

The first problems I ran into was while trying to install the dars. Specifically the dars for the thumbnail server. No matter what I tried I kept getting a “PostInstallException”:

com.emc.ide.installer.PostInstallException: Error running post-install procedure "PostInstall". Please contact the procedure owner to verify if it is functioning properly.

There are a lot of things suggested on the web and I didn’t try every combination possible but in the end what worked for me was the following:

  • Use Composer 6.7 SP2 (7.x did not work for me, neither did 6.7 SP1), it will give a warning with some of the dars that they are created with a newer version but you can ignore that
  • Run the darinstaller as administrator
  • Run the darinstaller from another server (In my specific case I ran the darinstaller locally and created the xCP2 server in a vmware image)

DA

After that I ran into some problems with DA. After restarting the application server a few times DA would not start anymore with a stackoverflowerror:

03-Jan-2014 11:53:42.813 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/da]]

  org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
  org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
  org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1120)
  org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1678)
  java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
  java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
  java.util.concurrent.FutureTask.run(Unknown Source)
  java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
  java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/da] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was
    [org.jaxen.util.AncestorAxisIterator->
      org.jaxen.util.AncestorOrSelfAxisIterator->
        org.jaxen.util.AncestorAxisIterator]

  org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2188)
  org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2135)
  org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010)
  org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976)
  org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961)
  org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319)
  org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
  org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376)
  org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
  org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
  org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

This was a tricky one because it does seem to disappear when you create/install a new application server for a while but after restarting a few times the error comes back.

First thing I tried of course was changing the memory settings. However this did not work. No matter how high I set it, it would always give this error.

Also I couldn’t find anything about this on the EMC sites but luckily Google threw me some pointers. Apparently there are 2 libraries that cause some problems in combination with the new version of Tomcat. JAXEN and DOM4J. In my case the error got resolved by removing the JAXEN-FULL.jar from the da/lib directory. I haven’t run into problems because of removing this library yet but of course this could lead to potential problems so I only advise to use this solution in development environments.

After discussing this problem with my colleague and doing some research on the web we found out that this issue probably started with a later version of Tomcat. We did this successfully in Tomcat 7.0.33 but when using the newest version (7.0.47) we get this issue. So another solution could be to use an older version of Tomcat/tcServer

BAM

One of the things I struggled the most with was installing BAM. I started with trying to install this in Tomcat but I kept running into classpath problems. The customConf folder didn’t get loaded properly causing a {dfc.properties} could not be found error. After resolving that the java property pointing to the bam.properties file didn’t get loaded properly causing a {$bam.properties} file could not be found error.

The fact that the deployment guide does not describe in detail the steps for Tomcat but just for tcServer did not help with this issue.

This is the main reason I advise to use tcServer. Adding the java/Tomcat properties in the wrapper.conf is really easy and having separate instances never causes any problems.

Conclusion

Installing xCP2.0 is a lot more work than any of the previous versions. When you are going to install it take your time (development environment used to be possible in 1 day but it takes at least 2 now) and follow the guides carefully. Most of the mistakes I made were caused by forgetting to execute a small step in the deployment guide.