I started to integrate ZK richlet and Zk specific Scopes with Weld, but did not manage to get my extension class triggered from container lifecycle events as described in portable extension docs. I have a file named javax.enterprise.inject.spi.Extension in META-INF/services (and also in WEB-INF/services) in my webapplication. This file contains a single line with the full qualified name of my extension class net.empego.web.cdi.ZkContextExtension. My webapp has an empty beans.xml file in WEB-INF directory. I tested injection with a servlet and weld seems to work properly.

You'll need to use /WEB-INF/classes/META-INF/services/javax.enterprise.inject.spi.Extension - the JAR file spec requires that META-INF/services be on the application classpath, and a war doesn't put the root of the archive on the classpath.