我有一个现有的SOAP Web服务项目,我想对其进行扩展,使其也支持RESTful服务。
当我创建一个空的Web项目并按照使用here的教程进行操作时,一切正常,但是在我现有的项目中,我得到一个错误java.lang.ClassNotFoundException: org.glassfish.jersey.internal.inject.Binder
。我已确保将所有库放入WEB-INF文件夹中,并包括它们,就像我对测试项目所做的一样。
这是我的web.xml的一部分:
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.rest</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
这是我的UserService类:
@Path("/UserService")
public class UserService {
User user = new User();
@GET
@Path("/users")
@Produces(MediaType.TEXT_PLAIN)
public String getUsers() {
return user.getHello();
}
}
当我尝试通过邮递员使用URL http://localhost:8080/project/rest/UserService/users
调用它时出现错误我无法在另一个项目中复制它。我尝试使用相同的库和相同的Java EE版本(7.0),但效果很好。