如何将Jersey与TomEE集成?

时间:2014-01-13 09:27:47

标签: rest maven jersey jax-rs tomee

我尝试在Tomee 1.5.2 WebProfile中使用Jersey 1.18部署一个非常简单的RESTful Web服务。 我的项目完全受到tomee-jersey-eclipselink

的启发

通过删除持久性部分进一步简化的示例:Web Service简单地返回“Hello,World!”

@Path("/hello")
@RequestScoped
public class HelloService {

    public HelloService() {
    }

    @GET
    public String test() {
        return "Hello, World!";
    }
}

我的POM中的依赖项:

<dependencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.18</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.18</version>
    </dependency>
</dependencies>

我使用不可知的应用程序模型部署我的Web服务:

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

public class JerseyApplication extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(HelloService.class);
        return classes;
    }
}

这是我的web.xml:

<web-app>
  <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>org.superbiz.service.JerseyApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

我还在$ TOMEE / conf / system.properties中添加了以下属性:

com.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true

使用Tomcat 7时一切正常(在这种情况下,我用pav中的javax.enterprise:cdi-api:1.1替换了javax:javaee-api依赖),但是当我尝试使用Tomee时,我只得到了404 HTTP状态,没有异常,也没有其他日志消息。

每当我从Eclipse IDE或Maven在命令行中部署应用程序时,结果都是一样的。

注意

  • 我不想将Tomee JAX-RS与Apache CXF一起使用,我不能 升级到Tomee 1.6。
  • 我已经尝试过这个post的所有可行方法,但没有帮助。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在TomEE 1.7.0中解决了issue解决了这个问题。如问题所述,您还需要将以下行添加到catalina.properties:

openejb.classloader.forced-load=javax.ws.rs

这对泽西2来说很有用。