使用Tomcat 7 javax / inject / Singleton部署JAX-RS(Jersey 2.13)Web服务

时间:2014-10-08 08:59:31

标签: java web-services rest tomcat jax-rs

我的Jersey 2.13带有Tomcat 7的网络服务。但是当我尝试在服务器上运行时,我有这个错误:

    org.apache.catalina.core.ApplicationContext log
GRAVE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: javax/inject/Singleton
    at org.glassfish.jersey.model.ContractProvider$Builder.<clinit>(ContractProvider.java:89)
    at org.glassfish.jersey.model.ContractProvider.builder(ContractProvider.java:71)
    at org.glassfish.jersey.model.internal.ComponentBag.modelFor(ComponentBag.java:476)
    at org.glassfish.jersey.model.internal.ComponentBag.access$100(ComponentBag.java:89)
    at org.glassfish.jersey.model.internal.ComponentBag$5.call(ComponentBag.java:408)
    at org.glassfish.jersey.model.internal.ComponentBag$5.call(ComponentBag.java:398)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.model.internal.ComponentBag.registerModel(ComponentBag.java:398)
    at org.glassfish.jersey.model.internal.ComponentBag.register(ComponentBag.java:309)
    at org.glassfish.jersey.model.internal.CommonConfig.register(CommonConfig.java:463)
    at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:448)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:309)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5229)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5516)

我忘了什么?

1 个答案:

答案 0 :(得分:1)

我不认为Tomcat 7包含CDI&#34;开箱即用&#34;,所以如果你想使用它,你需要在你的WAR文件中捆绑一个CDI实现。 JBoss Weld是CDI的参考实现,你使用它可能是最简单的。如果您正在使用Maven,请在dependencies部分中添加以下内容:

<dependency>
  <groupId>org.jboss.weld.servlet</groupId>
  <artifactId>weld-servlet</artifactId>
  <version>1.1.10.Final</version>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>

有关详细信息,请参阅this article