2013-08-08 4 views
0

Я просто не понимаю, что большая ошибка состоит в том, что я делаю ...JSF + Weld CDI + WebService (над Jetty9) не работает

Это просто невозможно для меня, чтобы получить Weld КДИ к Работа. Прежде чем я интегрировал CDI в свой webapp (JSF + PrimeFaces + DB4O + Jersey), все работало в основном отлично.

Поскольку я заменил @ManagedBean на @Named и т. Д. И изменил мой pom для использования CDI, Jetty больше не запускается.

решаемые (см ОБНОВЛЕНИЕ # 1)

Я использовал ManagedBeans в прошлом, но нуждался в КДИ для инжекторных жгутов веб-сервисов.

См. ОБНОВЛЕНИЕ 2 для этого.


Мой проект-структура:

enter image description here


Мой Исключение:

org.jboss.weld.exceptions.WeldException: WELD-001524 Unable to load proxy class for bean Implicit Bean [javax.enterprise.inject.Instance] with qualifiers [@Default] with class interface javax.enterpr 
ise.inject.Instance using classloader [email protected] 
     at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:318) 
     at org.jboss.weld.bean.builtin.AbstractFacadeBean.initializeAfterBeanDiscovery(AbstractFacadeBean.java:60) 
     at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:129) 
     at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:120) 
     at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
     at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     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:724) 
Caused by: 
java.lang.LinkageError: loader constraint violation: loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) previously initiated loading for a different type with name "javax/enterpris 
e/util/TypeLiteral" 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:386) 
     at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) 
     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) 
     at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) 
     at java.lang.Class.privateGetPublicMethods(Class.java:2641) 
     at java.lang.Class.getMethods(Class.java:1457) 
     at org.jboss.weld.bean.proxy.ProxyFactory.addMethodsFromClass(ProxyFactory.java:523) 
     at org.jboss.weld.bean.proxy.ProxyFactory.addMethods(ProxyFactory.java:478) 
     at org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:412) 
     at org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:311) 
     at org.jboss.weld.bean.builtin.AbstractFacadeBean.initializeAfterBeanDiscovery(AbstractFacadeBean.java:60) 
     at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:129) 
     at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:120) 
     at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60) 
     at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
     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:724) 

Мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<!-- This is the project descriptor for the examples of my components --> 

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>DB4O-webapp</artifactId> 
    <packaging>war</packaging> 
    <name>DB4O-Web</name> 

    <parent> 
     <groupId>DB4O-Test</groupId> 
     <artifactId>DB4O-Test-project</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 

    <dependencies> 

     <dependency> 
      <groupId>com.db4o</groupId> 
      <artifactId>db4o-full-java5</artifactId> 
      <version>8.1-SNAPSHOT</version> 
     </dependency> 

     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-bundle</artifactId> 
      <version>1.17.1</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.1.11</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.1.11</version> 
     </dependency> 

     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>3.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.7.5</version> 
     </dependency> 

     <dependency> 
      <groupId>org.jboss.weld.servlet</groupId> 
      <artifactId>weld-servlet</artifactId> 
      <version>2.0.3.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-server</artifactId> 
      <version>9.0.4.v20130625</version> 
      <scope>provided</scope> 
     </dependency> 

    </dependencies> 

    <repositories> 
     <!-- Repository for jstl 1.2 --> 
     <repository> 
      <id>java.net</id> 
      <url>http://download.java.net/maven/1</url> 
      <layout>legacy</layout> 
     </repository> 
     <repository> 
      <id>db4o-repo</id> 
      <url>http://source.db4o.com/maven/</url> 
      <layout>default</layout> 
     </repository> 
     <repository> 
      <id>prime-repo</id> 
      <name>PrimeFaces Maven Repository</name> 
      <url>http://repository.primefaces.org</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 

    <build> 
     <finalName>DB4O-Test</finalName> 

     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 

     <plugins> 
      <plugin> 
       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.0.4.v20130625</version> 
       <configuration> 
        <!--option>weld</option--> 
        <scanIntervalSeconds>2</scanIntervalSeconds> 
        <reload>automatic</reload> 
        <webApp> 
         <contextPath>/${project.build.finalName}</contextPath> 
        </webApp> 
        <jettyXml>src/main/webapp/WEB-INF/jetty-env.xml</jettyXml> 
        <contextXml>src/main/webapp/WEB-INF/jetty-context.xml</contextXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <encoding>UTF-8</encoding> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Мой web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <description>debug web.xml</description> 

    <context-param> 
     <description>State saving method: "client" or "server" (= default) 
      See JSF Specification 2.5.3 
     </description> 
     <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
     <param-value>server</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
     <param-value>resources.application</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
     <param-value>false</param-value> 
    </context-param> 
    <context-param> 
     <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
     <param-value>true</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.CONFIG_FILES</param-name> 
     <param-value>/WEB-INF/faces-config.xml</param-value> 
    </context-param> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <listener> 
     <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
    </listener> 
    <listener> 
     <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> 
    </listener> 

    <!--listener> 
     <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
    </listener--> 

    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>de.mypackage.guide.ws</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/ws/*</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.xhtml</welcome-file> 
    </welcome-file-list> 

    <resource-env-ref> 
     <description>Object factory for the CDI Bean Manager</description> 
     <resource-env-ref-name>BeanManager</resource-env-ref-name> 
     <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type> 
    </resource-env-ref> 

</web-app> 

Мой 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"> 
</beans> 

Мой Пристань-config.xml:

<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<Configure id="webAppCtx" class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Set name="serverClasses"> 
     <Array type="java.lang.String"> 
      <Item>org.eclipse.jetty.servlet.ServletContextHandler.Decorator</Item> 
     </Array> 
    </Set> 
</Configure> 

Мой Пристань-env.xml:

<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<Configure id="webAppCtx" class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="BeanManager" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg> 
      <Ref id="webAppCtx" /> 
     </Arg> 
     <Arg>BeanManager</Arg> 
     <Arg> 
      <New class="javax.naming.Reference"> 
       <Arg>javax.enterprise.inject.spi.BeanManager</Arg> 
       <Arg>org.jboss.weld.resources.ManagerObjectFactory</Arg> 
       <Arg /> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

Пример Класс:

import com.sun.jersey.api.client.Client; 
import com.sun.jersey.api.client.WebResource; 
import de.mypackage.guide.model.Device; 

import javax.annotation.PostConstruct; 
import javax.enterprise.context.RequestScoped; 
import javax.inject.Inject; 
import javax.inject.Named; 
import javax.ws.rs.core.MediaType; 
import java.io.Serializable; 
import java.util.Collection; 

/** 
* Created with IntelliJ IDEA. 
* Date: 08.08.13 
* Time: 08:21 
*/ 
@Named 
@RequestScoped 
public class DeviceService implements Serializable { 

    @Inject 
    private DatabaseService databaseService; 

    public DeviceService() {} 

    @PostConstruct 
    public void init() { 

    } 

    public void sendDevice() { 
     Client create = Client.create(); 
     WebResource service = create.resource("http://localhost:8080/ws"); 
     System.out.println(service.path("register").path("device").path("meinDevice") 
       .type(MediaType.TEXT_PLAIN).put(String.class)); 
    } 

    public Collection<Device> getAllDevices() { 
     return this.databaseService.retrieveAll(Device.class); 
    } 

    public DatabaseService getDatabaseService() { 
     return databaseService; 
    } 

    public void setDatabaseService(DatabaseService databaseService) { 
     this.databaseService = databaseService; 
    } 

    public Device getDevice(String deviceName) { 
     return this.databaseService.retrieveFiltered(Device.class, "regId", deviceName).toArray(new Device[0])[0]; 
    } 

    public void saveDevice(Device device) { 
     this.databaseService.store(device); 
    } 
} 

Заранее спасибо за любую помощь!


UPDATE # 1:

После решения моего исключение выше, следуя комментарий ниже первого ответа от Джона Амент, у меня есть еще одна проблема.

Теперь я получаю NPE. Кажется, что моя служба вообще не вводится.Читая мой вывод журнала, он говорит, что поддержка CDI включена, возможно, это проблема с конфигурацией (beans.xml и т. Д.)?

SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container 
java.lang.NullPointerException 
     at de.mypackage.guide.ws.RegistrationService.device(RegistrationService.java:45) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:505) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:564) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1094) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:432) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1028) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:258) 
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
     at org.eclipse.jetty.server.Server.handle(Server.java:445) 
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:267) 
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:224) 
     at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) 
     at java.lang.Thread.run(Thread.java:724) 

2013-08-09 07:52:43.853:WARN:oejs.ServletHandler:qtp1061696789-23: /ws/register/device/meinDevice 
java.lang.NullPointerException 
     at de.mypackage.guide.ws.RegistrationService.device(RegistrationService.java:45) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
     at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
     at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
     at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
     at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
     at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) 
     at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) 
     at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) 
     at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:698) 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:505) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:138) 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:564) 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:213) 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1094) 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:432) 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:175) 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1028) 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136) 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:258) 
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
     at org.eclipse.jetty.server.Server.handle(Server.java:445) 
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:267) 
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:224) 
     at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601) 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532) 
     at java.lang.Thread.run(Thread.java:724) 

UPDATE # 2

Я проверил инъекции в рамках услуг, и они работают (получение какой-то тест-выход из другой службы), поэтому проблема заключается в WebService < - -> CDI.

Может возникнуть проблема с различными контекстами cdi, webservices и jsf?

@Path("/register") 
public class RegistrationService { 

    @Inject 
    private DeviceService deviceService; 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    @Path("/get/{device}") 
    public String getDevice(@PathParam("device") String device) { 
     return this.deviceService.getDevice(device).getRegId(); 
    } 

    @PUT 
    @Path("/device/{device}") 
    @Consumes(MediaType.TEXT_PLAIN) 
    @Produces(MediaType.TEXT_PLAIN) 
    public String device(@PathParam("device") String device) { 
     this.deviceService.saveDevice(new Device(device)); 
     System.out.println("Erfolgreich!"); 
     return "Device: " + device; 
    } 

    public DeviceService getDeviceService() { 
     return deviceService; 
    } 

    public void setDeviceService(DeviceService deviceService) { 
     this.deviceService = deviceService; 
    } 

} 

ответ

2

Какую версию Maven вы используете? 3,1 ?? У меня была такая же проблема при попытке запустить приложение через причал: запустить цель (maven-jetty-plugin 9.x) и Maven 3.1. Я только что вернул версию Maven до версии 3.0.x, и теперь все идет хорошо.

+0

Что-то я не рассматривал вообще. Просто посмотрел мою версию, и это действительно 3.1.0. Приложите свой опыт после тестирования. – JavaKaffee

+0

** ОБНОВЛЕНИЕ: ** Вы были правы. После понижения Maven до 3.0.X (в моем случае 5), я снова попробовал Weld 2.0.3.Final dependency, и он работал без каких-либо проблем. Спасибо! – JavaKaffee

0

Похоже, не будучи загружены API банки для CDI, у вас есть их provided, исключающие их выполнение.

+2

Кроме того, поскольку вы используете сервлет серва 2.x, вы должны переключить свои CDI-библиотеки на использование API-интерфейсов CDI 1.1. –

+0

@LightGuard - Вы имеете в виду веб-api? Я изменил его, но это не имело никакого эффекта. Однако то, что сказал Джон Амент, оказало большое влияние. С изменением до последней версии 1.1.x исключение прошло. После этого я получил еще одно исключение, упомянутое здесь stackoverflow.com/q/3424207/1343241, которое я решил с его решением. Но как я должен был знать, что версия - это проблема, с которой я сражался около 8 часов? – JavaKaffee

+0

На форумах и даже на сайте сварки говорится, что Weld 2 является RI для CDI 1.1. – LightGuard

Смежные вопросы