Bom dia pessoal
Faz um bom tempo que estou afastado do Java e resolvi voltar e montar uma aplicação com JSF 2.0, CDI, e a princípio usar o Tomcat. 
Fiz toda a configuração do Tomcat e ele consegue injetar os recursos nos meus Managed Beans. 
Só que eu tenho um Interceptor e ele não é chamado nunca. Abaixo o código dele: 
Transactional.java
package com.tebosoftware.teboerp.cdi;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.interceptor.InterceptorBinding;
/**
 *
 * @author Thales
 */
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Transactional {
}
 
TransactionInterceptor.java
package com.tebosoftware.teboerp.cdi;
import java.io.Serializable;
import javax.inject.Inject;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
/**
 *
 * @author Thales
 */
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
    private static final long serialVersionUID = 1L;
    private @Inject
    EntityManager manager;
    @AroundInvoke
    public Object invoke(InvocationContext context) throws Exception {
        EntityTransaction trx = manager.getTransaction();
        boolean criador = false;
        try {
            if (!trx.isActive()) {
                // truque para fazer rollback no que já passou
                // (senão, um futuro commit, confirmaria até mesmo
                // operações sem transação)
                trx.begin();
                trx.rollback();
                // agora sim inicia a transação             
                trx.begin();
                criador = true;
            }
            return context.proceed();
        } catch (Exception e) {
            if (trx != null && criador) {
                trx.rollback();
            }
            throw e;
        } finally {
            if (trx != null && trx.isActive() && criador) {
                if (trx.getRollbackOnly()) {
                    trx.rollback();
                } else {
                    trx.commit();
                }
            }
        }
    }
}
 
Como faz tempo que não trabalhava, tem algo errado ou é o tomcat que não consegue trabalhar com Interceptor?
desde já agradeço
         
         
           
        
            
            
            
         
         
             
             
          
       
      
        
        
          Ola,
no seu beans.xml deve ser declarado o seu interceptor conforme abaixo :
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Bom dia,
eu tinha adicionado no beans.xml o interceptor, mas mesmo assim não chamou. 
O Manager Bean estava com @Named  e no caso @RequestScoped  e a classe que está mapeada com a anotação está marcado com @Inject  para ser atribuída o MB e durante o debug eu vi que não entrou no método invoke do TransactionInterceptor .
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Ola ve se não esta faltando isso no seu projeto :
  
  
    
<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright © 2017 Daniel Dias
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<Context>
   <Manager pathname=""/> <!-- disables storage of sessions across restarts -->
 
  This file has been truncated. show original 
   
  
    
    
  
  
 
e poste o link do do seu projeto no github.
{  },s
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Boa noite, mesmo colocando o mesmo colocando o context do mesmo jeito que o seu não deu certo, a injeção da dependência funciona, mas não funciona o Interceptor.
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="all" version="1.1">
    <interceptors>
        <class>com.tebosoftware.teboerp.cdi.TransactionInterceptor</class>
    </interceptors>
</beans>
 
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/TeboERP">
    <ResourceLink auth="Container" global="ds/TeboERP" name="ds/TeboERP" type="javax.sql.DataSource"/>
    <Manager pathname=""/> <!-- disables storage of sessions across restarts -->
    <Resource name="BeanManager"
      auth="Container"
      type="javax.enterprise.inject.spi.BeanManager"
      factory="org.jboss.weld.resources.ManagerObjectFactory"/>
</Context>
 
EstadoCrud.java
package com.tebosoftware.teboerp.crud;
import com.tebosoftware.teboerp.cdi.Transactional;
import com.tebosoftware.teboerp.model.Estado;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
/**
 *
 * @author thales
 */
@RequestScoped
public class EstadoCrud {
    @Inject
    private EntityManager entityManager;
    @Transactional
    public void inserir(Estado estado) {
        entityManager.persist(estado);
        entityManager.flush();
    }
    @Transactional
    public void atualizar(Estado estado) {
        entityManager.persist(entityManager.merge(estado));
        entityManager.flush();
    }
    @Transactional
    public void remover(Estado estado) {
        entityManager.remove(entityManager.merge(estado));
        entityManager.flush();
    }
    public Estado buscar(String sigla) {
        return entityManager.find(Estado.class, sigla);
    }
    public List<Estado> listar(String sigla, String descricao) {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Estado> cq = cb.createQuery(Estado.class);
        Root<Estado> r = cq.from(Estado.class);
        cq.select(r);
        List<Predicate> where = new ArrayList<>();
        if (sigla != null && !sigla.isEmpty()) {
            where.add(cb.like(cb.upper(r.get("sigla")), sigla.toUpperCase()));
        }
        if (descricao != null && !descricao.isEmpty()) {
            where.add(cb.like(cb.upper(r.get("descricao")), descricao.toUpperCase()));
        }
        if (!where.isEmpty()) {
            cq.where(where.toArray(new Predicate[]{}));
        }
        cq.orderBy(cb.asc(r.get("descricao")));
        return entityManager.createQuery(cq).getResultList();
    }
}
 
EdicaoEstadoMB.java
package com.tebosoftware.teboerp.managerBean;
import com.tebosoftware.teboerp.crud.EstadoCrud;
import com.tebosoftware.teboerp.model.Estado;
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
/**
 *
 * @author thales
 */
@Named
@RequestScoped
public class EdicaoEstadoMB implements Serializable {
    @Inject
    private EstadoCrud crud;
    private boolean novoEstado = true;
    private String sigla;
    private Estado estado;
    public String getSigla() {
        return sigla;
    }
    public void setSigla(String sigla) {
        this.sigla = sigla;
    }
    public Estado getEstado() {
        if (estado == null) {
            estado = new Estado();
        }
        return estado;
    }
    public void setEstado(Estado estado) {
        this.estado = estado;
    }
    public void inicializar() {
        if (sigla == null || sigla.isEmpty()) {
            estado = null;
            novoEstado = true;
        } else {
            estado = crud.buscar(sigla);
            novoEstado = estado == null;
        }
    }
    
    public void gravar() {
        if (novoEstado) {
            crud.inserir(estado);
            estado = new Estado();
        } else {
            crud.atualizar(estado);
        }
        FacesMessage msg = new FacesMessage("Gravado");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
} 
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Este é o meu pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.tebosoftware</groupId>
    <artifactId>TeboERP</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>TeboERP</name>
    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>2.2.17</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.17</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.6.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet</artifactId>
            <version>1.1.34.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.2</version>
        </dependency>
        <dependency>
            <groupId>org.primefaces.extensions</groupId>
            <artifactId>all-themes</artifactId>
            <version>1.0.8</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>7.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project> 
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          aparentemente não achei nada fora do normal no seu projeto.
da uma olhada nesse projeto e compare com o seu e ve aonde esta errando ou faltando algo :
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Obrigado pela ajuda Daniel, depois de comparar tudo, encontrei que era o pom que estava com o weld-servlet ao invés do weld-servlet-core que estava no seu . 
Muito obrigado pela ajuda.
         
         
        
            
            
           1 curtida