我尝试在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在命令行中部署应用程序时,结果都是一样的。
注意:
有什么想法吗?
答案 0 :(得分:2)
在TomEE 1.7.0中解决了issue解决了这个问题。如问题所述,您还需要将以下行添加到catalina.properties:
openejb.classloader.forced-load=javax.ws.rs
这对泽西2来说很有用。