Jakarta ee 让JavaEE6拦截器工作(GlassFish 3.1上的焊接)

Jakarta ee 让JavaEE6拦截器工作(GlassFish 3.1上的焊接),jakarta-ee,glassfish,aop,interceptor,cdi,Jakarta Ee,Glassfish,Aop,Interceptor,Cdi,我正在从事一个项目,我想使用拦截器来记录ManagedBean的使用情况。正如我在说明书和许多示例中所读到的,当前的CDI实现应该是可能的。代码主要是从glassfishjavaee教程或我在web上找到的其他源代码中复制的。它没有特殊的实现。它应该只记录 我尝试的是: LoggedInterceptor.java package test.interceptors; import java.io.Serializable; import javax.interceptor.AroundInv

我正在从事一个项目,我想使用拦截器来记录ManagedBean的使用情况。正如我在说明书和许多示例中所读到的,当前的CDI实现应该是可能的。代码主要是从glassfishjavaee教程或我在web上找到的其他源代码中复制的。它没有特殊的实现。它应该只记录

我尝试的是:

LoggedInterceptor.java

package test.interceptors;

import java.io.Serializable;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

@Logged
@Interceptor
public class LoggedInterceptor implements Serializable {
    private static final long serialVersionUID = 1L;

    public LoggedInterceptor() {
    }

    @AroundInvoke
    public Object logMethodEntry(InvocationContext invocationContext)
        throws Exception {
        System.out.println(
                "Entering method: " + invocationContext.getMethod().getName()
                + " in class "
                + invocationContext.getMethod().getDeclaringClass().getName());

        return invocationContext.proceed();
    }
}
Logged.java

package test.interceptors;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.interceptor.InterceptorBinding;
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({
    METHOD,
    TYPE
})
public @interface Logged {
}
WEB-INF/beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns    /javaee/beans_1_0.xsd">
    <interceptors>
        <class>test.interceptors.LoggedInterceptor</class>
    </interceptors>
</beans>
我从WELD资源加载程序中得到的是一个类not found异常

    [#|2011-04-04T14:03:37.394+0200|SEVERE|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=31;_ThreadName=Thread-1;|Exception while loading the app : Error loading class test.interceptors.LoggedInterceptor                                                         
    org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class test.interceptors.LoggedInterceptor                                                                                        
            at org.jboss.weld.resources.DefaultResourceLoader.classForName(DefaultResourceLoader.java:61)                                                                                                                   
            at org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:67)                                                                                                                                            
            at org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:55)                                                                                                                                            
            at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:435)                                                                                                                             
            at java.util.AbstractList$Itr.next(AbstractList.java:345)                                                                                                                                                       
            at org.jboss.weld.manager.Enabled.createMetadataMap(Enabled.java:130)                                                                                                                                           
            at org.jboss.weld.manager.Enabled.<init>(Enabled.java:100)                                                                                                                                                      
            at org.jboss.weld.manager.Enabled.of(Enabled.java:82)                                                                                                                                                           
            at org.jboss.weld.bootstrap.BeanDeployment.<init>(BeanDeployment.java:104)                                                                                                                                      
            at org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:185)                                                                                                                       
            at org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:156)                                                                                                                       
            at org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:287)                                                                                                                                
            at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)                                                                                                                                                 
            at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)                                                                                                                                              
            at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:262)                                                                                                                                   
            at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)                                                                                                                      
            at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)                                                                                                                      
            at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)                                                                                                                                 
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)                                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)                                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)                                                                                                                         
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)                                                                                                                         
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)                                                                                                          
            at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)                                                                                                                                    
            at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222)                                                                                                                                      
            at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)                                                                                                                                   
            at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)                                                                                                                                   
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)                                                                                                                        
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)                                                                                                                                     
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)                                                                                                                                         
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)                                                                                                                                          
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)                                                                                                                           
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)                                                                                                                    
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)                                                                                                                                  
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)                                                                                                                                   
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)                                                                                                                                    
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)                                                                                                                            
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)                                                                                                                                
            at com.sun.grizzly.ContextTask.run(ContextTask.java:71)                                                                                                                                                         
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)                                                                                                                           
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)                                                                                                                              
            at java.lang.Thread.run(Thread.java:619)                                                                                                                                                                        
    Caused by: java.lang.ClassNotFoundException: test.interceptors.LoggedInterceptor                                                                                                                      
            at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)                                                                                                                          
            at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)                                                                                                                              
            at java.lang.ClassLoader.loadClass(ClassLoader.java:307)                                                                                                                                                        
            at java.lang.ClassLoader.loadClass(ClassLoader.java:252)                                                                                                                                                        
            at org.jboss.weld.resources.DefaultResourceLoader.classForName(DefaultResourceLoader.java:52)                                                                                                                   
            ... 42 more
[#| 2011-04-04T14:03:37.394+0200 |严重| glassfish3.1 | javax.enterprise.system.tools.admin.org.glassfish.deployment.admin | u ThreadID=31;| u ThreadName=Thread-1;|加载应用程序时出现异常:加载类test.interceptors.LoggedInterceptor时出错
org.jboss.weld.resources.spi.ResourceLoadingException:加载类test.interceptors.LoggedInterceptor时出错
位于org.jboss.weld.resources.DefaultResourceLoader.classForName(DefaultResourceLoader.java:61)
位于org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:67)
位于org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:55)
位于com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:435)
位于java.util.AbstractList$Itr.next(AbstractList.java:345)
位于org.jboss.weld.manager.Enabled.createMetadataMap(Enabled.java:130)
位于org.jboss.weld.manager.Enabled.(Enabled.java:100)
位于org.jboss.weld.manager.Enabled.of(Enabled.java:82)
位于org.jboss.weld.bootstrap.BeanDeployment(BeanDeployment.java:104)
在org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:185)上
在org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:156)上
位于org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:287)
位于org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)
位于org.glassfish.kernel.event.eventsiml.send(eventsiml.java:128)
位于org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:262)
位于com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)
位于com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
位于org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:370)
位于com.sun.enterprise.v3.admin.CommandRunnerImpl.docomand(CommandRunnerImpl.java:1067)
com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
    [#|2011-04-04T14:03:37.394+0200|SEVERE|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=31;_ThreadName=Thread-1;|Exception while loading the app : Error loading class test.interceptors.LoggedInterceptor                                                         
    org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class test.interceptors.LoggedInterceptor                                                                                        
            at org.jboss.weld.resources.DefaultResourceLoader.classForName(DefaultResourceLoader.java:61)                                                                                                                   
            at org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:67)                                                                                                                                            
            at org.jboss.weld.manager.Enabled$ClassLoader.apply(Enabled.java:55)                                                                                                                                            
            at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:435)                                                                                                                             
            at java.util.AbstractList$Itr.next(AbstractList.java:345)                                                                                                                                                       
            at org.jboss.weld.manager.Enabled.createMetadataMap(Enabled.java:130)                                                                                                                                           
            at org.jboss.weld.manager.Enabled.<init>(Enabled.java:100)                                                                                                                                                      
            at org.jboss.weld.manager.Enabled.of(Enabled.java:82)                                                                                                                                                           
            at org.jboss.weld.bootstrap.BeanDeployment.<init>(BeanDeployment.java:104)                                                                                                                                      
            at org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:185)                                                                                                                       
            at org.jboss.weld.bootstrap.WeldBootstrap$DeploymentVisitor.visit(WeldBootstrap.java:156)                                                                                                                       
            at org.jboss.weld.bootstrap.WeldBootstrap.startContainer(WeldBootstrap.java:287)                                                                                                                                
            at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)                                                                                                                                                 
            at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:128)                                                                                                                                              
            at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:262)                                                                                                                                   
            at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:460)                                                                                                                      
            at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)                                                                                                                      
            at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)                                                                                                                                 
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)                                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)                                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)                                                                                                                         
            at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)                                                                                                                         
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)                                                                                                          
            at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)                                                                                                          
            at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)                                                                                                                                    
            at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222)                                                                                                                                      
            at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)                                                                                                                                   
            at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)                                                                                                                                   
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)                                                                                                                        
            at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)                                                                                                                                     
            at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)                                                                                                                                         
            at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)                                                                                                                                          
            at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)                                                                                                                           
            at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)                                                                                                                    
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)                                                                                                                                  
            at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)                                                                                                                                   
            at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)                                                                                                                                    
            at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)                                                                                                                            
            at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)                                                                                                                                
            at com.sun.grizzly.ContextTask.run(ContextTask.java:71)                                                                                                                                                         
            at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)                                                                                                                           
            at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)                                                                                                                              
            at java.lang.Thread.run(Thread.java:619)                                                                                                                                                                        
    Caused by: java.lang.ClassNotFoundException: test.interceptors.LoggedInterceptor                                                                                                                      
            at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808)                                                                                                                          
            at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696)                                                                                                                              
            at java.lang.ClassLoader.loadClass(ClassLoader.java:307)                                                                                                                                                        
            at java.lang.ClassLoader.loadClass(ClassLoader.java:252)                                                                                                                                                        
            at org.jboss.weld.resources.DefaultResourceLoader.classForName(DefaultResourceLoader.java:52)                                                                                                                   
            ... 42 more
@Named
@Logged
@SessionScoped
public class MainController implements Serializable {
    public void callMe() {
        System.out.println("called at " + new Date());
    }
}
<h:form>
    <h:outputText value="hallo" />
    <h:commandButton action="#{mainController.callMe}" label="jo" />
</h:form>