Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到带有限定符的Api类型[org.atmosphere.cpr.AtmosphereResource]_Java_Dependency Injection_Websocket_Atmosphere_Tomee 7 - Fatal编程技术网

Java 未找到带有限定符的Api类型[org.atmosphere.cpr.AtmosphereResource]

Java 未找到带有限定符的Api类型[org.atmosphere.cpr.AtmosphereResource],java,dependency-injection,websocket,atmosphere,tomee-7,Java,Dependency Injection,Websocket,Atmosphere,Tomee 7,我正在使用Atmosphere做一个websocket应用程序,并试图在我自己的环境中重现这种效果。我正在使用TomEE 7 plus服务器,该示例在上面运行良好 我将maven依赖项添加到atmosphere运行时和servlet 3.0中,就像在示例中一样 <!-- PubSub dependencies --> <dependency> <groupId>org.atmosphere</groupId>

我正在使用Atmosphere做一个websocket应用程序,并试图在我自己的环境中重现这种效果。我正在使用TomEE 7 plus服务器,该示例在上面运行良好

我将maven依赖项添加到atmosphere运行时和servlet 3.0中,就像在示例中一样

    <!-- PubSub dependencies -->
    <dependency>
        <groupId>org.atmosphere</groupId>
        <artifactId>atmosphere-runtime</artifactId>
        <version>2.3.3</version>
    </dependency>

    <!-- Spécification servlet 3.0 nécessaire pour atmosphere -->
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-servlet_3.0_spec</artifactId>
        <version>1.0</version>
    </dependency>
Ha和另一个有用的信息我没有使用
ObjectMapperInjectable.java
,所以我没有
META-INF/Services/org.atmosphere.Injectable
文件(在示例中使用)。 我的projet中有一个beans.xml,我可以在
Chat.java

我知道它找不到默认限定符,但我不明白为什么

是否需要为AtmospherResource接口指定限定符(我不这么认为)?没有默认的实现吗

有人解决了同样的问题吗

谢谢

编辑

经过一些测试,它似乎来自beans.xml。如果我将它添加到META-INF/下的原始示例项目中,我会得到相同的错误

<!-- Atmosphere Servlet -->
<servlet>
    <description>AtmosphereServlet</description>
    <servlet-name>AtmosphereServlet</servlet-name>
    <servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
    <!-- limit classpath scanning to speed up starting, not mandatory -->
    <init-param>
        <param-name>org.atmosphere.cpr.packages</param-name>
        <param-value>my.package.web.websocket</param-value>
    </init-param>
    <init-param>
        <param-name>org.atmosphere.interceptor.HeartbeatInterceptor.clientHeartbeatFrequencyInSeconds</param-name>
        <param-value>10</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>AtmosphereServlet</servlet-name>
    <url-pattern>/chat/*</url-pattern>
</servlet-mapping>
 GRAVE: CDI Beans module deployment failed
org.apache.webbeans.exception.inject.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.atmosphere.cpr.AtmosphereResource] is not found with the qualifiers 
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  resource, Bean Owner : [Chat, Name:null, WebBeans Type:MANAGED, API Types:[my.package.web.websocket.Chat,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]]
    at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:215)
    at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:192)
    at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:160)
    at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:846)
    at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:652)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1261)
    at org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1100)
    at org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:130)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5416)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api type [org.atmosphere.cpr.AtmosphereResource] is not found with the qualifiers 
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  resource, Bean Owner : [Chat, Name:null, WebBeans Type:MANAGED, API Types:[my.package.wen.websocket.Chat,java.lang.Object], Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]]
    at org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:60)
    at org.apache.webbeans.container.InjectionResolver.checkInjectionPoint(InjectionResolver.java:195)
    at org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:960)
    at org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:491)
    at org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:422)
    at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:202)
    ... 18 more