简体   繁体   English

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

[英]Deploy JAX-RS (Jersey 2.13) Web Service using Tomcat 7 javax/inject/Singleton

I have my web services in Jersey 2.13 with Tomcat 7 . 我在带有Tomcat 7 Jersey 2.13拥有我的Web服务。 But when I try to run in server I have this error: 但是,当我尝试在服务器上运行时,出现此错误:

    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)

I forget something? 我忘记了什么?

I don't think Tomcat 7 includes CDI "out of the box", so you need to bundle a CDI implementation in your WAR file if you want to use it. 我不认为Tomcat 7包含“开箱即用”的CDI,因此,如果要使用CDI实现,则需要将其打包到WAR文件中。 JBoss Weld is the reference implementation for CDI, you it's probably simplest to use that one. JBoss Weld是CDI的参考实现,使用它可能是最简单的。 If you're using Maven, stick something like this in the dependencies section: 如果您使用的是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>

See this article for details. 有关详细信息,请参见本文

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM